Marks
vim可以设置书签,这样在文件内到处跳转后,可以跳转回来。比如在你想要跳回来的某一行按下ma,(可以按m[a-z]即26种选择)
然后跳转到别处时,再次按下`a,就会跳转回到你指定的行数.
当然,mark比较有用的场合在于删除多行。比如你想删除指定区间的行数,而你又不想记住这两行的行数,即可在删除区间的第一行按下ma,记录下mark a,
然后将光标移到删除的最后一行,再次按下d'a,即可删除区间内的行数
Filter
!motion command将一个块中的文字替换成命令处理后的字符。
比如,想将一个文件第一个行到第10行按照字母排序,其他行不动,我们可以这样操作:
1. ! 按下感叹号,让vim处于Filter状态下,
2. 10G 输入10G,即从当前行往下10行处于filter状态
3.输入 sort<Enter> 即输入sort按回车。
整个命令为: !10Gsort<Enter>,那么其结果将会把第一行到第十行进行排序。
当然实际当中用得最多的还是对某一个行进行替换,比如,我想替换第33行为当前的日期,那么我可以首先按33G跳转到33行,然后按!!,让当前行处于Filter状态下,然后按date,即 !!date.
Window
最简单开启一个新窗口的命令是:split,这样就把当前文件分割为两个窗口,当然也可以使用:split file,
让新窗口显示指定的文件内容,在窗口之间跳转可以使用Ctrl+wj或者Ctrl+wk
上下移动窗口。可以给新建的窗口指定大小,比如 :3 split test.txt,新建窗口显示test.txt的内容,但是只有3行高大小
如下图:
:new 命令同:split,只是跳转的文件不是当前编辑的文件,而是在新窗口中的文件
Buffers
vim的buffer有三种状态:
1. Active 有窗口
2. Hide 文件正在编辑,但是不现实在屏幕上
3. InActive 文件不是出于编辑状态,但是保存所有在缓存中的操作
对于InActive状态,有一点需要说明,当编辑另外一个文件时,出于当前编辑状态的文件的内容并不需要了,这个时候vim就丢弃了,但是它的marks和其他一些信息依然有用。
查看缓存列表:
:buffers
缓存的状态标志如下:
- InActive Buffer
h Buffer is Hidden
% Current Buffer
# Alternate Buffer
+ 文件出于编辑状态
如
Alternative指的是当前编辑文件之前最后一次编辑的文件
Select Buffer
:buffer number或者:buffer file