软讯网络 > 编程语言 > C/C++ > 常用的Vim键(转载自 孤舟)
【标 题】:常用的Vim键(转载自 孤舟)
【关键字】:
Vim
【来 源】:http://blog.chinaunix.net/article.php?articleId=62152&blogId=8296
常用的Vim键(转载自 孤舟)
孤舟的vim使用对我很有帮助,所以抄了一份放在自己的blog中,汗颜。。。
孤舟常用的Vim键 |
| 瞎写一通,算自己备个份。也给Vim新手提供点思路 M 代表Middle 光标移动到屏幕中间行首 L 代表Last 光标移动到屏幕最后行首 H 代表Head 光标移动到屏幕第一行首 z<CR>; 重划屏幕,把光标所在行作为新屏幕第一行 :se list 显示转义字符 :se nu 显示行号 J 删除行尾的换行符 K 以光标所在的单词为关健字,进入man手册 zfa{ 将光标所在代码块折行 zo 将光标所在折行打开 zc 将光标所在折行关闭 zM 关闭所有折行 zR 打开所有折行 zd 删除光标所在折行 zD 递归删除光标所在折行(如果折行只有一层,那么效果跟zd是一样的) zE 删除所有折行(我的折行方式是set foldmothed=marker的) :ar 显示当前文件名 :sh 打开一个shell(这个shell是Vim的子进程,呵呵。我在临时需要编辑本目录其他文件或者调用ctags之外部程序时经常这样用) :sus 代表suspend 将vim挂起,以后就可以用fg命令恢复 :1 转到本文件第一行 G 转到本文件最后一行 :%s/old_string/new_string/g 将本文件中所有的old_string替换成new_string :s/old_string/new_string/g 将光标所在行所有的old_string替换成new_string :12,23s/old_string/new_string/g 将第12行到第23行之间所有的old_string替换成new_string =a{ 将光标所在的语法块代码风格作缩进整理 $ 光标移到行尾 ^ 光标移到行首 % 匹配{}[]()等括号,前提是光标已经处在一个括号上,按该键则光标会移动到跟它匹配的括号处 = 前提:光标在一个处,按此键则会对该花括号和与之匹配的花括号之间的代码进行缩进整理 bw 以单词为步长后退 w 以单词为步长前进 :ps task_struct Vim会split出一个窗口(象:help那样),列出task_struct这个结构类型的定义。前提是,你的C程序已经#include了合适的头文件 Ctrl+ww 在split出来的(或者象:he或:ps这样简介split出来)的窗口间切换 :clo 关闭本窗口(只适合用在多个窗口的情况下) :Tlist 这是一个Vim插件提供的功能,将屏幕一道竖线split成两个窗口,左侧列出所有C函数的定义及声明,光标停在上边回车就直接转到右边窗口中的定义处
下面几个是与ctags相关的 Ctrl+] 转到光标所在单词的定义处 Ctrl+T 从ctrl+]转回原来的地方,是Ctrl+]的逆动作。似乎Ctrl+o也有相同的效果 :ts 即是tselect,如果一个函数名或变量名定义多次,该命令会列出所有定义之处供你选择 :tn 即是tnext,到下一个定义处 :tp 即是tprevious,到前一个定义处 :tl 即是tlast,到最后一个定义处 :tf 即是tfirst,到第一个定义处 另外,tag浏览还可以保留当前编辑上下文,split出一个窗口出来浏览函数或变量的定义,慢慢研究先。 先写这么多,最基本的和最繁复的都没写,原因是they’re something that the wise don’t need and the fools won’t take,呵呵。
瞎写一通,算自己备个份。也给Vim新手提供点思路 
最近因为用Taglist插件浏览linux内核源代码,会把屏幕split成左右两个部分。但是我的显示器是15液晶的,平时编程设定了:set number也还罢了,左右split之后,立刻显得太小。于是在~/.vimrc中写了一个函数,用来调用:Tlist之后把行号去掉: function! TlistWrapper () Tlist set nonumber endfunction
command! -nargs=0 List call TlistWrapper() map <F1> :List<CR> 这样,当输入:List或者按功能键F1时,就自动set nonumber了。呵呵。 在此记下来,以被不时之需 |