vim 操作
字号:大中小有道是工欲善其事, 必先利其器, 没有一个好的程序编辑器对于编写程序以及浏览别人的代码时往往会
事倍功半.在Windows编辑浏览程序文件较多,知道一些比较不错的编辑器UtralEdit,EditPlus,Notepad+
+,以及SourceInsight,以我个人观点来看, SI是款比较不错的编辑软件,很喜欢它的关键字跟踪功能,可以
方便在众多的代码文件中找到某个关键字比如类,函数所对应的声明,对于庞大的面向对象项目代码的浏览提供了
很大的方便.
今天听同事说vim已经够强大了为什么要用这些,对于我这个见少识狭的小菜来说觉得挺不平的,vim,我用过
不过一般都是用它浏览一个文件,insert插入,backspace删除,esc恢复非插入状态,这算强大?同事,随后
的关于vim的演示让我对vim有了新的看法,在此把我目前知道的总结下,方便我参考也方便大家学习,呵呵:
vim打开多个文件:vimabc...n
vim在多个文件中任意切换:在底行模式下输入ndir/filename
vim在多个文件中从当年文件切换到上一文件:在底行模式中输入e#
vim设置智能语法缩进:在底行模式下输入setsmartindent
vim显示工程文件行号:在底行模式下输入setnumber
vim取消显示文件行号:在底行模式下输入setnonnumber
vim分屏显示:横向分屏/在底行模式下输入split纵向分屏/在底行模式下输入vsplit
vim迅速将光标移至文件首:在命令模式下连续输入gg
vim某行迅速匹配指定字符:在命令模式下输入fxx为匹配字符F用于向左匹配
vim某行将指定字符串替换为另一个字符串:在底行模式下输入s/string1/string2/g
vim删除光标所在行:在命令模式下输入dd
vim复制光标所在行并粘贴于另一位置:在命令行模式下输入yy,移动光标到预期位置输入p
vim分屏后将光标在多屏间切换:在命令行模式下输入ctrl+ww
vim撤消修改:在命令行模式下输入u
vim多文件切换时返回之前的文件:ctrl+o
vim文件中左移,右移,下行,上行:在命令模式下输入h,l,j,k
vim文件中跳转至指定行:在命令模式下先输入行编号,然后输入shift+g
vim文件中{}匹配:在命令模式下将光标定位于{}其中一个,然后输入%
vim保存文件中部分内容:在底行模式下输入#,#wfilenamexx(xx为与原文件名区分的标志)
vim搜索当前文件中包含指定字符串的字符串:/string扩展功能/\<string/string\>分别表示
string仅在头或是尾出现,如故结合起来用就相当于仅匹配string而不是把string作为子串
vim高亮/非高亮搜索到的字符串:sethlsearch/setnohlsearch
vim在文件右下角显示当前光标所在行以及文件浏览百分率:setruler
vim代码补全效果:在底行模式输入inoremap<F8><C-x><C-o>Enter后,在程序文件中输入信息之后按Ctrl+p代码补全功能出现...
vim全篇自动缩进:在命令行模式下输入gg=G
vim单行缩进:在命令行模式下输入=G或==
vim缩写(通常用于定义固定得语句过长的注释):在底行模式下输入iabbrev缩写原句或单词
vim删除指定缩写定义:在底行模式下输入unabbrev缩写名
vim删除全部缩写定义:在底行模式下输入abclear
vim跳转到关键字定义处并水平分屏:在底行模式下输入stag关键字名
vim编译程序:在底行模式下输入makeatlas_digit2>&1|teebuild.log(暂以某个项目为例)
vim设置C++注释识别:在底行模式下输入setcomments=://
vim设置缩进统一为n个空格:autocmdFileType=c,cppsetshiftwidth=n|setexpandtab
vim排版注释:在命令行模式下输入gq]/(在C++注释风格上未看到效果,可能多支持C)
vim撤消树:在底行模式下输入undo结点编号恢复到这个撤消树结点对应的内容
vim时空之旅:在底行模式下输入undolist查看撤消树,可以根据编号任意恢复到某一结点内容
下面这个功能是我最喜欢的,也是浏览大规模代码的利器,SI就提供了这个功能,没想到vim早都想到了,呵呵
vim在多个文件中智能搜索光标所在关键字所对应的声明或是实现同时打开对应的文件为当前文件:将光标定位到所要查询的关键字,在命令行模式下输入ctrl+l+],怎么样,是不是和SourceInsight效果一样,呵呵,美不胜收吧,呵呵(注:前提需要结合ctags使用,在工程文件目录下输入此命令ctags-R)
vim的高级功能inoremap实现:
inoremap(()<ESC>i
inoremap)<c-r>=ClosePair(')')<CR>
inoremap{{}<ESC>i
inoremap}<c-r>=ClosePair('}')<CR>
inoremap[[]<ESC>i
inoremap]<c-r>=ClosePair(']')<CR>
inoremap<<><ESC>i
inoremap><c-r>=ClosePair('>')<CR>
functionClosePair(char)
ifgetline('.')[col('.')-1]==a:char
return"\<Right>"
else
returna:char
endif
endf
享受vim给你带来的欢乐吧,呵呵
先写这么多,等学到新的再补充,呵呵