---------------------------------------------------------------
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 + W + < :将当前窗口的宽度减少
Ctrl + W + > :将当前窗口的宽度增加
 
Ctrl + W + |:将当前窗口的宽度调到最大,也可他哦你通过ex命令:vertical resize n明确指定改变宽度
 
 
 
 

分页编辑

 
除了使多窗口编辑外,vim还允许创建多个分页(tab),每个分页各有独自的行为,类似于浏览器firefox或chrome的分页浏览功能。
 
我们可以在vim或gvim中使用分页,但在gvim会更好用。
最终要的命令
:tabnew filename  打开新分页并编辑新文件(可选的)。如果未指定文件,则只打开新分页,并附上空的缓冲区。
:tabclose  关闭当前分页
 :tabonly  关闭其他所有的分页。如果其他分页中有修改过的文件,则不会移除该分页,除非设置了autowrite选项。此时,所有修改过的文件都在分页关闭前写入磁盘。
 

游走分页

 
可以直接点鼠标来移动到另一个分页,也可以用命令
Ctrl + PageDown:移动到下一个分页
Ctrl + PageUp:移动到上一个分页
 

 

关闭与离开窗口

 
有4种关闭窗口的方式,分别是:离开(quit)、关闭(close)、隐藏(hide)、关闭其他窗口
 
^代表Ctrl键
^Wq,离开当前窗口
^Wc,关闭当前的窗口
^Wo,关闭当前窗口以外的所有窗口

vim 多窗口,多tab编辑的更多相关文章

  1. Vim多窗口编辑

    在Linux中使用vim编辑多个窗口     方式:            1. vim -o file1 file2             打开的两个文件上下窗口分布 比如当前目录有makefil ...

  2. VIM 分割窗口

    VIM 分割窗口     *08.1*  分割窗口 打开新窗口最简单的命令如下: :split 这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中: +----------------------- ...

  3. 【linux基础】vim多窗口功能

    前言 实现多个文档文件在同一个屏幕上显示多个窗口. 实现过程 在指令列模式输入『:sp {filename}』即可!那个 filename 可有可无, 如果想要在新窗口启动另一个文件,filename ...

  4. shell/bash 让vi/vim显示空格,及tab字符

    shell/bash 让vi/vim显示空格,及tab字符 Vim 可以用高亮显示空格和TAB.文件中有 TAB 键的时候,你是看不见的.要把它显示出来::set listTAB 键显示为 ^I,   ...

  5. 搞定vim的窗口操作

    最近在给学生演示数据结构代码时,发现用一般的方法总会有不方便,如果使用ide又觉得太浪费了,后来觉得用vim就够了,使用buffer总会需要页面调来跳出,学生看起来容易迷糊.所以就研究了下vim的窗口 ...

  6. VIM中空格和TAB的替换

    在.vimrc中添加以下代码后,重启vim即可实现按TAB产生4个空格:set ts=4  (注:ts是tabstop的缩写,设TAB宽4个空格)set expandtab 对于已保存的文件,可以使用 ...

  7. vim 多窗口编辑

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

  8. vim 让人爱不释手的编辑器之神

    VIM 基本介绍 vim诞生已有20多年,它常被人称之为编辑器之神,vim的操作理念可以说是独具一格而又出类拔萃,使用vim能极大的提升文本处理效率,因此熟练掌握vim应该是每个程序员都应该做到的事情 ...

  9. 在vim编辑器python实现tab补全功能

    在vim编辑器中实现python tab补全插件有Pydiction,Pydiction可以实现下面python代码的自动补全: 1. 简单python关键词补全 2. python函数补全带括号 3 ...

随机推荐

  1. Nodejs Mocha测试学习

    参考大神阮一峰的文章<测试框架 Mocha 实例教程> 目前在使用Nodejs,但写完的程序很容易出错,那怎么办?需要引入单元测试去做基础的测试 目前Nodejs用来做单元测试的工具接触的 ...

  2. ZOJ 3211 Dream City

    贪心,$dp$. 假设我们知道要选择哪些物品,那么这些物品应该按什么顺序选择呢? 物品$A(a1,b1)$,物品$B(a2,b3)$. 假设物品$A$在第$x$天被选择,物品$B$在第$y$天被选择. ...

  3. 关于std::ios::sync_with_stdio(false)

    std::ios::sync_with_stdio(false); 很多C++的初学者可能会被这个问题困扰,经常出现程序无故超时,最终发现问题处在cin和cout上,(甚至有些老oier也会被这个问题 ...

  4. 洛谷——P3909 异或之积

    P3909 异或之积 题目描述 对于A_1,A_2,A_3,\cdots,A_NA1​,A2​,A3​,⋯,AN​,求 (6\times \sum_{i=1}^N\sum_{j=i+1}^N\sum_ ...

  5. “玲珑杯”ACM比赛 Round #19 B -- Buildings (RMQ + 二分)

    “玲珑杯”ACM比赛 Round #19 Start Time:2017-07-29 14:00:00 End Time:2017-07-29 16:30:00 Refresh Time:2017-0 ...

  6. Xamarin Android项目提示SDK版本太老

    Xamarin Android项目提示SDK版本太老 错误信息:The installed Android SDK is too old.Version 24.3.4 or newer is requ ...

  7. CSS 笔记——背景布局

    4. 背景布局 -> 背景 (1)background 基本语法 background : background-color || background-image || background- ...

  8. [Atcoder Regular Contest 065] Tutorial

    Link: ARC065 传送门 C: 最好采取逆序贪心,否则要多考虑好几种情况 (从前往后贪心的话不能无脑选“dreamer”,"er"可能为"erase"/ ...

  9. k-近邻算法 简单例子

    from numpy import * import operator def create_data_set(): # 训练集与标签 group = array([[1.0, 1.1], [1.0, ...

  10. [转]iBatis简单入门教程

    iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis 是能够满足 ...