vim多标签,多窗口

多标签
进入vim前 vim -p <文件名> 以多标签形式打开文件。如vim -p * 就是编辑当前目录的所有文件, vim编辑中 :tabnew 增加一个标签 :tabc       关闭当前的tab :tabo       关闭所有其他的tab :tabs       查看所有打开的tab :tabp 或gT 前一个 :tabn 或gt  后一个 新建标签页
:tabe <文件名>  在新标签页中打开指定的文件。
:tabnew <文件名>  在新标签页中编辑新的文件。
:tab split  在新标签页中,打开当前缓冲区中的文件。
:tabf  允许你在当前目录搜索文件,并在新标签页中打开。比如:tabf img.*。此命令只能打开一个文件.
Vim默认最多只能打开10个标签页。你可以用set tabpagemax=15改变这个限制。

列示标签页
:tabs  显示已打开标签页的列表,并用“>”标识出当前页面,用“+”标识出已更改的页面。

关闭标签页
:tabc  关闭当前标签页。
:tabo  关闭所有的标签页。

切换标签
:tabn或gt  移动到下一个标签页。
:tabp或gT  移动到上一个标签页。
:tabfirst或:tabr  移动到第一个标签页。
:tablast  移动到最后一个标签页。

移动标签页
:tabm [次序]  移动当前文件的标签页次序。比如:tabm 1将把当前标签页移动到第2的位置。如:tabm不指定参数将被移动到最后。

配置标签页
:set showtabline=[1,2,3]  标签页在窗口上方显示标签栏。=0完全不显示标签栏,=1只有用户新建时才显示,=2总是显示标签栏。

多标签页命令
:tabdo <命令>  同时在多个标签页中执行命令。比如:tabdo %s/food/drink/g 命令把当前多个标签页文件中的“food”都替换成“drink”。

帮助
:help tab-page-intro命令,可以获得关于标签页使用的更多信息。

还有很多他命令  :help table
vim用多个标签页打开多个文件 

1、打 开 新 标 签 页 启动 Vim 时用 "vim -p filename ..." :tabe[dit] *:tabe* *:tabedit* *:tabnew* :tabnew 在当前标签页之后打开带空窗口的新标签页。 :tabe[dit] [++opt] [+cmd] {file} :tabnew [++opt] [+cmd] {file} 打开新标签页并编辑 {file},其余和 |:edit| 类同。 :tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* 打开新标签页并编辑 'path' 里的 {file},其余和 |:find| 类同。 {仅当编译时加入 |+file_in_path| 特性才有效} :[count]tab {cmd} *:tab* 执行 {cmd},如果它打开新窗口,使用新标签页代替。不能用于 |:diffsplit|、|:diffpatch|、|:execute| 和 |:normal|。 如果省略 [count],标签页出现在当前标签页之后。如果指定 [count],新标签页出现在第 [count] 个标签页之后。":0tab cmd" 使 新标签页出现在第一个位置。例如: :tab split " 在新标签页上打开当前缓冲区 :tab help gt " 打开标签页显示 "gt" 的帮助 2、关 闭 标 签 页 *:tabc* *:tabclose* :tabc[lose][!] 关闭当前标签页。 如下情形使该命令失败: - 屏幕上只有一个标签页。 *E784* - 如果 'hidden' 没有置位,没有 [!],缓冲区有修改,而且该缓冲区 没有其它窗口。 缓冲区的修改不会被写入,也不会丢失。所以这可以说是个 "安全的" 命令。 :tabc[lose][!] {count} 关闭第 {count} 个标签页。失败条件和上面的 ':tabclose' 相同。 *:tabo* *:tabonly* :tabo[nly][!] 关闭所有其它的标签页。 如果置位 'hidden' 选项,所有关闭窗口的缓冲区成为隐藏。 如果没有置位 'hidden' 但置位 'autowrite' 选项,写回修改过的缓 冲区。否则,包含修改过的缓冲区的窗口不会被删除。但如果给出 [!],这些窗口成为隐藏。修改过的缓冲区永远不会被放弃,所以永远 不被丢失这些改动。 3、切 换 到 另 一 个 标 签 页 :tabn[ext] *:tabn* *:tabnext* *gt* <C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* gt *i_CTRL-<PageDown>* *i_<C-PageDown>* 转到下一个标签页。最后一个标签页则回绕到第一个。 :tabn[ext] {count} {count}<C-PageDown> {count}gt 转到第 {count} 个标签页。首个标签页编号为 1。 :tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* :tabN[ext] *:tabNext* *CTRL-<PageUp>* <C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* gT 转到前一个标签页。首个标签页则回绕到最后一个。 :tabp[revious] {count} :tabN[ext] {count} {count}<C-PageUp> {count}gT 转到前面 {count} 个标签页。首个标签页则回绕到最后一个。 :tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* :tabfir[st] 转到第一个标签页。 *:tabl* *:tablast* :tabl[ast] 转到最后一个标签页。 4、其它命令: *:tabs* :tabs 列出标签页和它们包含的窗口。 当前窗口显示 ">"。 修改过的缓冲区显示 "+"5、重 新 排 列 标 签 页: :tabm[ove] [N] *:tabm* *:tabmove* 把当前标签页移到第 N 个标签页之后。用 0 使当前标签页成为首个标 签页。如果没有 N,当前标签页成为最后一个。 6、循 环 遍 历 所 有 标 签 页: *:tabd* *:tabdo* :tabd[o] {cmd} 对每个标签页执行 {cmd}。 大致相当于: :tabfirst :{cmd} :tabnext :{cmd} 等等 只对每个标签页的当前窗口进行操作。如果某个标签页出现错误,不再 继续访问其余的标签页。 最后一个标签页 (或任何出错的标签页) 成为当前标签页。 {cmd} 可以包含 '|' 以连接多个命令。 {cmd} 不能打开标签页、关闭标签页或重排标签页。 {Vi 无此功能} {仅当编译时加入 |+listcmds| 特性才有效} 另见 |:windo|、|:argdo| 和 |:bufdo|。
 vim多窗口

1、打开多个窗口(vim编辑中)
打开多个窗口的命令以下几个:

横向切割窗口
:new+窗口名(保存后就是文件名) 
:split+窗口名,也可以简写为:sp+窗口名纵向切割窗口名
:vsplit+窗口名,也可以简写为:vsp+窗口名

:split [filename] 在水平方向打开文件filename(若filename为空,则duplicate当前文件)
:vsplit [filename] 在竖直方向打开文件filename(若filename为空,则duplicate当前文件)

vim -o file1 file2 ...  #水平打开多窗口,
vim -O file1 file2 ...  #垂直打开多窗口,
vim -d file1 file2 ...  #垂直打开多窗口,并且进行比较
vimdiff file1 file2 ..  #等同于上一句
vim已经启动 输入 :open file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。

 
2、关闭多窗口
可以用:q!,也可以使用:close,最后一个窗口不能使用close关闭。使用close只是暂时关闭窗口,其内容还在缓存中,只有使用q!、w!或x才能真能退出。
 关闭窗口
     q  或 close   #关闭当前窗口
     only          #保留当前窗口,关闭其它所有窗口
     qall(qa)          #退出所有窗口
     wall          #保存所有窗口

3、窗口切换
:ctrl+w+j/k,通过j/k可以上下切换,或者:ctrl+w加上下左右键,还可以通过快速双击ctrl+w依次切换窗口。
在vim和talglist窗口之间切换的命令为ctrl + w + w

4、窗口大小调整
纵向调整
:ctrl+w + 纵向扩大(行数增加)
:ctrl+w - 纵向缩小 (行数减少)
:res(ize) num  例如::res 5,显示行数调整为5行
:res(ize)+num 把当前窗口高度增加num行
:res(ize)-num 把当前窗口高度减少num行
横向调整
:vertical res(ize) num 指定当前窗口为num列
:vertical res(ize)+num 把当前窗口增加num列
:vertical res(ize)-num 把当前窗口减少num列

5、给窗口重命名
:f file

6、vi打开多文件(进入vim前)
vi a b c
:n 跳至下一个文件,也可以直接指定要跳的文件,如:n c,可以直接跳到c文件
:e# 回到刚才编辑的文件

7、文件浏览
:Ex 开启目录浏览器,可以浏览当前目录下的所有文件,并可以选择
:Sex 水平分割当前窗口,并在一个窗口中开启目录浏览器
:ls 显示当前buffer情况

8、vi与shell切换
:shell 可以在不关闭vi的情况下切换到shell命令行
:exit 从shell回到vi
 Shell: Ctrl + R (反向查找历史命令) 

vim:
vim 从 vim7 开始加入了多标签切换的功能, 相当于多窗口. 之前的版本虽然也有多文件编辑功能, 但是总之不如这个方便啦。用法:
:tabnew [++opt选项] 〔+cmd〕 文件            建立对指定文件新的tab
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
还有很多他命令, 看官大人自己, :help table 吧。

多窗口创建及焦点切换:
在Vim中开多窗口其实比较简单,也有不只一种方法,直接使用命令:new默认就是打开一个水平分割的新窗口。另外一个命令就是:split(sp)。

但是默认水平分割多少有点不爽,因为本来屏幕就是宽屏的,代码几乎不会写那么长了,而真正缺少的垂直空间,所以这个时候就要用到垂直分割了,命令是:vsplit(vs),很简单了一目了然。

打开了这么多窗口不知道如何切换肯定不行啦。切换也很简单,组合键ctrl+w,然后通过j/k,来定位窗口,注意看好窗口光标变化。不过个人感觉这样比较麻烦,每切换一次窗口都要先按组合键才行。还好还有另一种方法,那就是直接连续按两次ctrl+w组合键,vim会自动跳到下一个窗口。

另外更改窗口宽度的命令是: Crtl+w > 将当前窗口向右边扩展一行,将 > 换成 < 就是向左边扩展一行。也可以在之前使用数字代表扩展的行数, 5 Ctrl+w > ,向右边扩展5行。

更改窗口高度类似,只是命令是Ctrl+w + ,增加高度,- 减小高度。

 

 

vimdiff: 
启动vimdiff
方法一:# vimdiff  FILE_LEFT  FILE_RIGHT
方法二:# vim -d  FILE_LEFT  FILE_RIGHT
方法三:# vim FILE_LEFT 之后打开vim后输入:vertical diffsplit FILE_RIGHT
窗口布局切换
Ctrl-w K(把当前窗口移到最上边)
Ctrl-w H(把当前窗口移到最左边)
Ctrl-w J(把当前窗口移到最下边)
Ctrl-w L(把当前窗口移到最右边)
窗口大小调整
Ctrl-w  = (调整为等大)
Ctrl-w  - (缩小高度)
Ctrl-w + (增加高度)
Ctrl-w >/< (向右/左调整宽度)
窗口焦点切换,即切换当前窗口
CTRL-w h 跳转到左边的窗口
CTRL-w j 跳转到下面的窗口
CTRL-w k 跳转到上面的窗口
CTRL-w l 跳转到右边的窗口
CTRL-w t 跳转到最顶上的窗口
CTRL-w b 跳转到最底下的窗口
CTRL-w w 跳转到另一个窗口
CTRL-w CTRL-w 跳转到另一个窗口,同CTRL-w w

光标移动
移动光标,切分窗口会同步移动,使用:set noscrollbind命令可取消同步
]c 跳到下一个不同的地方
[c 跳到上一个不同的地方
上下文折叠
默认情况下,vimdiff会将文件中不同之处上下6行之外的相同文本折叠隐藏,可通过 :set diffopt=context:3 修改显示的上下文行数。
zo 打开折叠
zc 关闭折叠
其他折叠
    zf   创建折叠(使用数字表示创建有当前行到下多少行的折叠,比如3j就创建包括4行的折叠)
    zo   打开折叠(l也可以打开折叠)
    zc   关闭当前折叠
    zm   关闭所有折叠
    zr   打开所有折叠
    zE   删除所有折叠
    zd   删除当前折叠
    za   若当前打开则关闭,若当前关闭则打开
    zj   到下一折叠的开始处
    zk   到上一折叠的末尾

文件合并
dp (diff put)将当前窗口光标位置处的内容复制到另一窗口
do (diff obtain)将另一窗口光标位置处的内容复制到当前窗口
diffupdate 重新比较两个文件,如果手动修改文件的话有时不会自动同步
文件操作
yy 复制当前行
nyy 复制当前行开始的n行
dd 删除当前行
ndd 删除当前行开始的n行
p 粘贴
u 撤销
CTRL-r 重复(即取消撤销)
wa 全部保存
wqa 全部保存后退出
qa 全部退出
qa! 全部强制退出,不保存文件修改
vim  -o file1 file2  横向打开两个窗口显示两个文件内容
vim -O file1 file2  纵向打开

书签功能:
 ma  添加书签a
 `a   跳转到书签a

行移动:
 [n] >> 将当前行右移一个单位(tab)
 [N] << 将当前行左移一个单位

查找功能:
 /word 向后查找word, n继续向下查找
?word 向前查找word
 * 查找光标所在处的单词,向下查找
 # 查找光标所在处的单词,向上查找


对齐功能:
配置文件~/.vimrc:  set autoindent
[n] ==
set autoindent

跳转功能:
“[{” 跳转到包含语句的开始处
"]}" 跳转到包含语句的结尾处
"[[" 跳转到包含语句的函数开始处
“][" 跳转到包含语句的函数结尾处


别名功能:
ab abbr string
eg: ab  mylog  pr_info("LC112 [%s] called====
", __func__);
当输入mylog时, 会自动替换为pr_info("LC112 [%s] called====
", __func__); 类似C语言的宏功能


还可以在每个目录中创建一个自己的.vimrc文件,以适应不同的需要。例如,可以在C++源程序所在的目录中创建一个适应于程序开发的.vimrc文件,可以在编写文档的目录中创建一个适应于文档编写的.vimrc文件。但应注意,仅当用户主目录的.exrc文件包含"set exrc“ 命令时,其它目录中的.vimrc文件才能发挥作用。
原文地址:https://www.cnblogs.com/timssd/p/4323104.html