热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vim提供多窗口编辑的功能

本文出自http:blog.csdn.netshuangde800---------------------------------------------------------

本文出自   http://blog.csdn.net/shuangde800

------------------------------------------------------------------------------------------------







vim提供多窗口编辑的功能,可以简化复合的编辑任务。vim的多窗口并不是说在终端上启动多个vim实例。








启动多窗口编辑





vim的多窗口是动态的,可以开始编辑时就打开多窗口,也可以工作时随时增加新窗口,或者删除一个窗口。
$ vim  -o  file1 file2  打开一个编辑会话,显示为水平分割成两半的窗口,一个文件占用一个窗口。
$ vim  -O  file1 file2  和上面相同,不过是垂直分割两半的窗口
如下 图所示:








如果画面分割后不足以容纳下所有窗口,那么第一个文件会占用大部分窗口,余下的窗口则载入缓冲区,暂时不能看到,但仍可以取用。







-o后面加一个数字n,是预分配窗口的形式打开:

$ vim  -o5 file1  file2   将分配5个相同的窗口,有3个是闲置的










vim的多窗口编辑



:split    新建一个窗口,将当前窗口分割成两半,他们显示的是相同缓冲区的内容(同一个文件)。这样就可以在两个窗口中浏览相同的文件了。




:vsplit   创建全新的垂直分割的窗口,同样是显示和当前窗口同一个文件内容。效果如下:







当多个窗口编辑同一个文件时,在任意一个窗口进行编辑(例如删除一行),那么所有相同文件的窗口上都会同时反应效果,因为他们共享同一个文件缓冲区。







如果想编辑或浏览另一个文件,而又不想失去在当前文件中的编辑位置,就用新文件的参数传给:split命令

:split  otherfile













分割窗口的选项



:[n] split(vsplit)  [++opt]  [+cmd]  [file]




命令中:

n   为vim指定在新窗口中显示的行数,且新窗口的大小刚好容纳该行数,新窗口位于画面顶端

opt  传递vim选项信息给新的窗口会话(请注意,它的前面必须加上两个加号)

cmd 传入欲在新窗口中执行的命令(请注意,它的前面必须加上一个加号)

file  指定在新窗口中编辑的文件




:sview  filename  以只读的方式水平分割打开一个新窗口

:sfind  [++opt]  [+cmd]  [file]  和split的运作方式相似,但在path中寻找filename,如果vim未找到文件则不显示








在窗口间游走



在gvim或vim中,在窗口中移动其实非常简单,因为gvim已默认支持鼠标点击来换编辑窗口,而vim中,则可以打开mouse选项,

:set  mouse = a   为命令、输入、导航都激活鼠标的使用




我们知道vim的特色就是可以脱离鼠标而工作,所以可以使用vim提供的全套导航命令,在会话中快速而准确的移动编辑窗口。




按住Ctrl + W,然后再加上h, j, k, l,分别表示向左、下、上、右移动窗口

Ctrl + w + h:向左移动窗口

Ctrl + w + j: 向下移动窗口

Ctrl + w + j: 向上移动窗口

Ctrl + w + l: 向右移动窗口




Ctrl + w + w:这个命令会在所有窗口中循环移动

Ctrl + w + t:移动到最左上角的窗口

Ctrl + w + b:移动到最右下角的窗口

Ctrl + w + p:移动到前一个访问的窗口




 





移动窗口



vim中有两种移动窗口方式,一种只是简单地在屏幕上切换窗口,尺寸维持不变;另一种则是改变窗口的实际布局,还会调整尺寸,以填充它移动的位置。




1. 移动窗口本身(轮换或交换)





Ctrl + w + r:向右或向下方交换窗口,而Ctrl + w + R则和它方向相反。




光标会随着窗口而移动




Ctrl + w + x:交换同列或同行的窗口的位置。vim默认交换当前窗口的与它下一个窗口的位置,如果下方没有窗口,则试着与上一个窗口交换位置。亦可在此命令前加上数量,与制定的窗口交换位置。







2. 移动窗口并改变其布局





注:下面的第三个字母都是大写,按玩Ctrl + w之后,按shif + 相应的字母。后面用^代替Ctrl

Ctrl + w + K :移动当前窗口至屏幕顶端,并占用全部宽度

^WJ: 移动窗口至屏幕底端,并占用全部宽度

^WH:移动窗口至屏幕左端,并占用全部高度

^WL:移动窗口至屏幕右端,并占用全部高度




^WT :移动窗口至屏新的现有分页




3. 调整窗口尺寸





改变当前窗口的尺寸,同时当然也会影响到其他窗口。

在gvim和vim中,可以用鼠标点击窗口的顶部白色条并窗口直接调整尺寸。






也可以直接用命令,调整尺寸命令也是以Ctrl + W开头:

Ctrl + W + =  :让所有窗口调整至相同尺寸(平均划分)

Ctrl + W + -:将当前窗口的高度减少一行,也可在ex命令中,:resize -4明确指定减少的尺寸

Ctrl + W + +:将当前窗口的高度增加一行。同样在ex命令中,:resize +n 明确指定增加尺寸




Ctrl &#43; W &#43; <&#xff1a;将当前窗口的宽度减少

Ctrl &#43; W &#43; > &#xff1a;将当前窗口的宽度增加

Ctrl &#43; W &#43; |&#xff1a;将当前窗口的宽度调到最大&#xff0c;也可他哦你通过ex命令&#xff1a;vertical resize n明确指定改变宽度
















分页编辑



除了使多窗口编辑外&#xff0c;vim还允许创建多个分页&#xff08;tab&#xff09;&#xff0c;每个分页各有独自的行为&#xff0c;类似于浏览器firefox或chrome的分页浏览功能




我们可以在vim或gvim中使用分页&#xff0c;但在gvim会更好用。

最终要的命令

&#xff1a;tabnew filename  打开新分页并编辑新文件&#xff08;可选的&#xff09;。如果未指定文件&#xff0c;则只打开新分页&#xff0c;并附上空的缓冲区。

&#xff1a;tabclose  关闭当前分页

 &#xff1a;tabonly  关闭其他所有的分页。如果其他分页中有修改过的文件&#xff0c;则不会移除该分页&#xff0c;除非设置了autowrite选项。此时&#xff0c;所有修改过的文件都在分页关闭前写入磁盘。




游走分页





可以直接点鼠标来移动到另一个分页&#xff0c;也可以用命令

Ctrl &#43; PageDown&#xff1a;移动到下一个分页

Ctrl &#43; PageUp&#xff1a;移动到上一个分页










关闭与离开窗口



有4种关闭窗口的方式&#xff0c;分别是&#xff1a;离开&#xff08;quit&#xff09;、关闭&#xff08;close&#xff09;、隐藏&#xff08;hide&#xff09;、关闭其他窗口




^代表Ctrl键

^Wq&#xff0c;离开当前窗口

^Wc&#xff0c;关闭当前的窗口

^Wo&#xff0c;关闭当前窗口以外的所有窗口




推荐阅读
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍了在使用Visual Studio 2015进行项目开发时,遇到类向导弹出“异常来自 HRESULT:0x8CE0000B”错误的解决方案。通过具体步骤和实践经验,帮助开发者快速排查并解决问题。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • MySQL 用户创建失败的解决方案
    本文详细介绍了在 MySQL 中遇到用户创建失败问题时的解决方法,包括如何正确配置环境、执行命令以及常见错误排查技巧。通过逐步指导,帮助用户顺利添加和管理 MySQL 用户。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
author-avatar
Kris-Guo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有