Vim的理念
本质上讲,我们的工作是重复性的。不论是在几个不同的地方做相同的小改动,还是在文档的相似结构间移动,我们都会重复很多操作。凡是可以简化重复性操作的方式,都会成倍地节省我们的时间。
Vim 对重复性操作进行了优化。它之所以能高效地重复,是因为它会记录我们最近的操作,让我们用一次按键就能重复上次的修改。这听起来很强大,但是除非我们能够学会规划按键动作,使得在重复时能完成一项有用的工作,否则这没什么用。
掌握这一理念是高效使用 Vim 的关键。
上次修改
一直以为上次修改是直接进入编辑模式输入的字符,删除或者修改等等。例如输入一个单词、删除一个单词或者一行,修改一个单词等等。
但上次修改的范围显然更大,在vim实用技巧这本书中,在每一行的末尾增加一个分号。使用了
$ 跳转到行尾
a 输入
; 分号
j 跳到下一行
$ 跳转到行尾
. 重复上次修改,即a;
这里能看到a;即为上次修改。
接下来,书中给了改进的例子
A 跳转到行尾并输入
; 分号
j 跳到下一行
. 重复上次修改,即A;
跳转定义
gd 跳转局部定义
gD 跳转全局定义
光标记忆编辑位置
在重新打开编辑过的文件时,有时希望光标能直接跳转到上次编辑的位置,但编辑器不支持。这时需要在vimrc中输入以下几行:
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("`\"") > 1 && line("`\"") <= line("$") | exe "normal! g`\"" | endif
" for simplicity, " au BufReadPost * exe "normal! g`\"", is Okay.
endif
但是有时候即使修改了,但还不起作用,这时候可能跟vim对/的权限有关系,删除/.viminfo即可。