1. 多窗口编辑
vim也有窗口的概念,有时在编辑多个文件时,可以打开多个窗口。
:split(缩写为sp)
命令。这个命令后面如果加文件名,表示分割窗口并打开指定的文件;如果不加文件名,只是把窗口水平分割,并且当前编辑的文件在两个窗口里都编辑。:vsplit(缩写为vs)
命令。竖直
分割
多窗口编辑比较适合使用鼠标,可以使用鼠标激活窗口。在开启鼠标支持的情况下,可以使用鼠标来拖动窗口分割线来调整窗口的大小。
当然,使用命令也是可以的.记住<C-W>w
切换窗口就基本OK了。。。。。。
<C-W>
加方向键(h、j、k、l、<Left>
等等)可以在窗口之间跳转<C-W>w
跳转到下一个(往右和往下)窗口,如果已经是右下角的窗口,则跳转到左上角的窗口<C-W>W
跳转到上一个(往左和往上)窗口,如果已经是左上角的窗口,则跳转到右下角的窗口<C-W>n
或 :new 打开一个新窗口<C-W>c
或 :close 关闭当前窗口;当前窗口如果已经是最后一个则无效<C-W>q
或 :quit 退出当前窗口,当最后一个窗口退出时则退出 Vim<C-W>o
或 :only 只保留当前窗口,关闭其他所有窗口<C-W>s
和 :split 作用相同,把当前窗口横向一分为二<C-W>v
和 :vsplit 作用相同,把当前窗口纵向一分为二<C-W>=
使得所有窗口大小相同(当调整过终端或图形界面 Vim 的窗口大小后特别有用)<C-W>_
设置窗口高度,命令前的数字表示高度行数,默认为纵向占满(想专心编辑某个文件时很有用)<C-W>|
设置窗口宽度,命令前的数字表示宽度列数,默认为横向占满<C-W>+
增加窗口的高度,命令前的数字表示需要增加的行数,默认为 1<C-W>-
减少窗口的高度,命令前的数字表示需要减少的行数,默认为 1<C-W>>
增加窗口的宽度,命令前的数字表示需要增加的列数,默认为 1<C-W><lt>
(提醒,我们用<lt>
表示“<”键)减少窗口的宽度,命令前的数字表示需要增加的列数,默认为 1
由于切换窗口是一个非常常见的操作,我通常会映射一下快捷键。为了跟一般的图形界面程序一致,我使用了 Ctrl-Tab 和 Ctrl-Shift-Tab:
nnoremap <C-Tab> <C-W>w
inoremap <C-Tab> <C-O><C-W>w
nnoremap <C-S-Tab> <C-W>W
inoremap <C-S-Tab> <C-O><C-W>W
简单解释一下:nnoremap 命令映射正常模式下的键盘,inoremap 命令映射插入模式下的键盘;正常模式的映射简单直白,应该不需要解释,插入模式的映射使用了临时模式切换键 <C-O>(:help i_CTRL-O)
,在正常模式下执行相应的窗口命令,然后返回插入模式。使用这样的键盘映射之后,这两个快捷键在正常模式和插入模式下就都可以使用了。
2. 双窗口比较
使用vimdiff或者gvimdiff命令,后面跟两个文件名即可。
在vim内部也可以发起比较,打开第一个文件,然后使用命令:vert diffsplit 第二个文件
3. 多标签页编辑
单窗口多文件编辑最适合的场景是批量修改具有相似性质的文件,多窗口编辑最适合的场景是需要对多个文件进行对比编辑,而其他的一些同时编辑多个文件的场景,就可以考虑多标签页的编辑方式。
- 在已有命令行模式命令前加
tab␣
可以在新标签页中展示命令的结果,如:tab help
可以在新标签页中打开帮助,:tab split
可以在新标签页中打开当前缓冲区 :tabs
展示所有标签页的列表:tabnew
或:tabedit
可以打开一个空白的新标签页,后面有文件名的话则打开该文件:tabclose
可以关闭当前标签页(如果标签页里只有一个窗口,使用窗口关闭命令<C-W>c
应该更快):tabnext、gt 或 <C-PageDown>
可以切换到下一个标签页:tabNext、:tabprevious 、gT 或 <C-PageUp>
可以切换到上一个标签页:tabfirst
或:tabrewind
切换到第一个标签页:tablast
切换到最后一个标签页
如果一开始用多窗口编辑,后来发现不需要一直参照这个文件了,或者屏幕空间不足了,该怎么办呢?Vim 提供了一个命令,可以把当前窗口转变成一个新标签页:按下 <C-W>T
即可(仅当当前屏幕上有多个窗口时有效)。
4. NERDTree插件
NERDTree 就是最为著名的一个文件浏览 / 管理插件
我们使用minipac这个包管理器来管理插件
4.1 安装minipac
Linux平台使用下面的命令安装minipac
git clone https://github.com/k-takata/minpac.git \
~/.vim/pack/minpac/opt/minpac
然后,在vimrc配置文件中加入以下内容
if exists('g:loaded_minpac')
" Minpac is loaded.
call minpac#init()
call minpac#add('k-takata/minpac', {'type': 'opt'})
" Other plugins
endif
if has('eval')
" Minpac commands
command! PackUpdate packadd minpac | source $MYVIMRC | call minpac#update('', {'do': 'call minpac#status()'})
command! PackClean packadd minpac | source $MYVIMRC | call minpac#clean()
command! PackStatus packadd minpac | source $MYVIMRC | call minpac#status()
endif
存盘、重启 Vim 之后,我们就有了三个新的命令,可以用来更新(安装)包、清理包和检查当前包的状态。
4.2 安装扩展包
在“Other plugins”那行下面加入以下内容:
call minpac#add('tpope/vim-eunuch')
保存文件,然后使用:PackUpate
命令。略微等待后(可能需要科学上网),可以看到下面的安装完成的界面
这就说明安装成功了。我们可以按 q 来退出这个状态窗口。
我们也可以使用 :PackStatus 来重新打开这个状态窗口。要删除一个插件,在 vimrc 中删除对应的那行,保存,然后使用 :PackClean 命令就可以了。愿意的话,你现在就可以试一下。
NERDTree 缺省就会抢占 netrw 使用的路径形式,所以我们可以用 :e .
来打开 NERDTree。不过,更常用的方式仍然是使用 :NERDTreeToggle
,NERDTree 窗口的切换命令。我们使用这个命令可以打开上面左侧的那个 NERDTree 窗口,也可以关闭。这样,我们如果频繁需要浏览文件系统的话,就可以把这个命令映射到一个快捷键,免得每次都要打这么长的命令。
4.3 使用
在打开 NERDTree 窗口之后,使用还是相当直观的,并且按下 ? 就可以查看帮助信息,所以我也不必一一列举所有功能了。在这里,我就概要提一下最重要的几个功能点:
- 顾名思义,这个插件以树形方式展示文件系统,在目录上敲回车或双击即可打开或关闭光标下的目录树。
- 在文件上敲回车或双击立即打开该文件,并且光标跳转到文件窗口中,这样你就可以立即开始编辑了。
- 在文件上使用 go 会预览该文件,也就是光标不会跳转到文件所在的窗口中,方便快速查看多个文件的内容。
- 按 i 会打开文件到一个新的水平分割的窗口中,按 s 会打开文件到一个新的竖直分割的窗口中,按 t 会打开文件到一个新的标签页中。
- NERDTree 会自动过滤隐藏文件和目录,但如果你需要看到它们的话,也可以用 I 来开启和关闭隐藏文件的显示。
- 按 m 会出现一个菜单,允许添加、删除、更名等操作。
这些命令不需要死记硬背。从使用的角度,知道回车、双击就可以使用这个插件了,其他命令可以根据需要,在使用中慢慢掌握。
评论 (0)