VIM tips (1)
最近没更新,估计再不努力就没订阅了……
毕业论文完工之后,把系统装成了Ubuntu 9.04,这个内核终于不再和主板BIOS冲突了。
以前的_vimrc文件迁移过来有点问题,比如说Ctrl+C / Ctrl+V要替换成对应的Ctrl+Insert / Shift+Insert,但相关的配置始终无法正常工作。内事不决问Manual,外事不决问Google,于是我开始查阅VIM的用户手册,顺便补充一下相关的知识。
- VIM可以在两次不同的更改间切换,例如输入一段文字,undo,再输入另外一段文字。普通的文字编辑软件无法恢复被undo掉的操作,但VIM可以。
相关命令:undo, undolist, earlier, later
链接 - 使用Ctrl+Insert / Shift+Insert进行复制粘贴。”+表示代表剪切板的寄存器+,此外还有代表当前选择区域的寄存器*,参见第4条。
vnoremap <C-Insert> "+y vnoremap <S-Insert> "+gP
- 使用vimdiff作比较
相关程序:vimdiff
相关命令:vertical, diffsplit, diffpatch, diffupdate
链接 - x系统中存在这当前选中区一说,只需要用Visual模式、Visual Block模式 (Windows上按Ctrl + Q进入,Linux上按Ctrl + V进入) 选择一段文本,就可以在其它程序中点击中键将其贴出。这一点不仅限于VIM,连Firefox都可以。
- diw和daw可以删除光标所在单词而不需要把光标移动到单词开始的位置,区别在于是否删除空格字符。
- 缓存区相关的命令:buffers, ls, buffer, sbuffer,
链接 - :%s/<old>/<new>/gce中的c表示在每次替换前提示,而e表示找不到被替换的文本不是错误。
- :g/<pattern>/<Ex-command>用于在匹配成功的行上执行Ex模式命令,如果需要执行普通命令,使用normal,:g/private/normal dd。与此相反的,:v表示在匹配不成功的行上执行命令。
- g<Ctrl+G>可计算文章内的单词数,在Visual模式下也有效。
- K可以显示当前单词对应的Manual。但更好的做法是在.vimrc中导入runtime! ftplugin/man.vim,然后使用Man命令,这个方法可以将Manual在split window中打开。
- 使用:grep <pattern> <fileset>来匹配,结果会放入到clist中,可使用:cn和:cp进行光标移动。
- 使用`.来回到上一次修改的位置。
- 使用q:这个命令来打开命令窗口。
- 查找命令/<pattern>后面可以跟上光标定位偏移,例如/hello/2、/hello/e+2、/hello/b-2。同理,反向查找?也可以写作?hello?e
- gq操作符用于定宽段落重排。
- 用Visual模式选中后直接进入命令模式,会自动指定缓存区为’<,’>,即Visual选中区域。
- 使用surround.vim插件:修改cs<old_surround><new_surround>,新建ys<target-object> (例如iw或者yss)
on June 28th, 2009 | 1 Comment »
