vim 高级技巧
2014-04-23 12:33
218 查看
【转自】http://coolshell.cn/articles/11312.html
1、缓冲区
其实,你用:E 浏览打开的文件都没有被关闭,这些文件都在缓冲区中。你可以用下面的命令来查看缓冲区:
:ls
于是,在你的Vim下,你会看到如下界面:
你可以看到Vim打开了四个文件,编号是4,5,6,7,如果你要切换打开的文件,这个时候,你不要按回车(按了也没事,只不过按了就看不到:ls输出的buffer列表了),你可以使用下面的命令切换文件(buffer后面的4表示切到4号文件也就是src/http/ngx_http.c):
:buffer 4
或是:
:buffer src/http/ngx_http.c
注意,
你可以像在Shell中输入命令按Tab键补全一样补全Vim的命令。
也可以用像gdb一样用最前面的几个字符,只要没有冲突。如:buff
你还可以动用如下命令,快速切换:
:bnext 缩写 :bn
:bprevious 缩写 :bp
:blast 缩写 :bl
:bfirst 缩写 :bf
上图中,我们还可以看到5有一个%a,这表示当前文件,相关的标记如下:
- (非活动的缓冲区)
a (当前被激活缓冲区)
h (隐藏的缓冲区)
% (当前的缓冲区)
# (交换缓冲区)
= (只读缓冲区)
+ (已经更改的缓冲区)
2、vim 执行命令
假如我们有一个hello.cpp文件和一个makefile,于是我们可以直接在vim下输入 :make , 于是就可以make这个hello.cpp文件,如果出错了,我们需要按回车返回,这个时候,我们可以使用下面的命令来把出错显到在vim的分屏中:
:cw
于是,就会出现下面右边的那个样子:(是不是看上去和我一样很帅?)
上图中左边是我的makefile,右边是我的错误百出的源代码,右边下面是quickfix窗屏。你可以看到quickfix窗屏指向的第一个错误已经定位到我们相就错误的文件行上了。
你可以使用像浏览文件那样用j, k在quckfix窗屏中上下移动到相应的错误上然后按回车,然后就可以在上面的窗屏里定位到相应的源文件的代码行。但是,如果是这样的话, 你要定位下一条错误还得用Ctrl +W 回到quickfix屏中来然后重复来过。
你可以使用下面的命令而不用回到quickfix中来:
:cp 跳到上一个错误
:cn 跳到下一个错误
:cl 列出所有错误
:cc 显示错误详细信息
下面我们来看另一个quickfix的功能。
如果你用过vim的cscope插件,你就知道cscope可以用来查找相当的代码,但cscope需要事先生成一个数据库,对一些简单的查找,其实,我们用vim的grep命令就可以了,不需要专门为之生成数据库。vim的grep命令和shell的几乎一样。
我们来看个例子:
比如我们正在浏览nginx的代码,这时,我想看看哪里用到了nginx的NGX_HTTP_VAR_INDEXED宏。于是,我可以在vim里输入如下的命令:
:grep -r –include=”*.[ch]” NGX_HTTP_VAR_INDEXED src/
上面这个命令意思是递归查询src目录下所有的.c和.h文件,其中包括NGX_HTTP_VAR_INDEXED宏。然后,你就会看到vim到shell里去执行并找到了相关的文件,按回车返回vim后,别忘了用 【:cw 】把grep的输出取回来,于是我们就有下面的样子:
然后同上面一样,你可以用 j,k 键移动quickfix里的光标到相应的行,然后按回车定位文件,或是使用【:cn】或【:cp】来移动到定位。(这样,你会把多个文件打开到缓冲区,别忘了【:ls】来查看缓冲区)
你看,到这里,一个小小的IDE就这样产生了,而且,最帅的时,我们连一点插件都没有装,也没有在.vimrc文件中配置过什么。
3、有用的快捷键
字符相关
【guu 】 – 把一行的文字变成全小写。或是【Vu】
【gUU】 – 把一行的文件变成全大写。或是【VU】
按【v】键进入选择模式,然后移动光标选择你要的文本,按【u】转小写,按【U】转大写
【ga】 – 查看光标处字符的ascii码
【g8】 – 查看光标处字符的utf-8编码
【gf】 - 打开光标处所指的文件 (这个命令在打到#include头文件时挺好用的,当然,仅限于有路径的)
【*】或【#】在当前文件中搜索当前光标的单词
缩进相关
【>>】向右给它进当前行 【<<】向左缩进当前行
【=】 - 缩进当前行 (和上面不一样的是,它会对齐缩进)
【=%】 – 把光标位置移到语句块的括号上,然后按=%,缩进整个语句块(%是括号匹配)
【G=gg】 或是 【gg=G】 - 缩进整个文件(G是到文件结尾,gg是到文件开头)
复制粘贴相关
按【v】 键进入选择模式,然后按h,j,k,l移动光标,选择文本,然后按 【y】 进行复制,按 【p】 进行粘贴。
【dd】剪切一行(前面加个数字可以剪切n行),【p】粘贴
【yy】复制一行(前面加个数字可以复制n行),【p】粘贴
光标移动相关
【Ctrl + O】向后回退你的光标移动
【Ctrl + I 】向前追赶你的光标移动
这两个快捷键很有用,可以在Tab页和Windows中向前和向后trace你的光标键,这也方便你跳转光标。
读取Shell命令相关
【:r!date】 插入日期
上面这个命令,:r 是:read的缩写,!是表明要运行一个shell命令,意思是我要把shell命令的输出读到vim里来。
1、缓冲区
其实,你用:E 浏览打开的文件都没有被关闭,这些文件都在缓冲区中。你可以用下面的命令来查看缓冲区:
:ls
于是,在你的Vim下,你会看到如下界面:
你可以看到Vim打开了四个文件,编号是4,5,6,7,如果你要切换打开的文件,这个时候,你不要按回车(按了也没事,只不过按了就看不到:ls输出的buffer列表了),你可以使用下面的命令切换文件(buffer后面的4表示切到4号文件也就是src/http/ngx_http.c):
:buffer 4
或是:
:buffer src/http/ngx_http.c
注意,
你可以像在Shell中输入命令按Tab键补全一样补全Vim的命令。
也可以用像gdb一样用最前面的几个字符,只要没有冲突。如:buff
你还可以动用如下命令,快速切换:
:bnext 缩写 :bn
:bprevious 缩写 :bp
:blast 缩写 :bl
:bfirst 缩写 :bf
上图中,我们还可以看到5有一个%a,这表示当前文件,相关的标记如下:
- (非活动的缓冲区)
a (当前被激活缓冲区)
h (隐藏的缓冲区)
% (当前的缓冲区)
# (交换缓冲区)
= (只读缓冲区)
+ (已经更改的缓冲区)
2、vim 执行命令
Quickfix
假如我们有一个hello.cpp文件和一个makefile,于是我们可以直接在vim下输入 :make , 于是就可以make这个hello.cpp文件,如果出错了,我们需要按回车返回,这个时候,我们可以使用下面的命令来把出错显到在vim的分屏中::cw
于是,就会出现下面右边的那个样子:(是不是看上去和我一样很帅?)
上图中左边是我的makefile,右边是我的错误百出的源代码,右边下面是quickfix窗屏。你可以看到quickfix窗屏指向的第一个错误已经定位到我们相就错误的文件行上了。
你可以使用像浏览文件那样用j, k在quckfix窗屏中上下移动到相应的错误上然后按回车,然后就可以在上面的窗屏里定位到相应的源文件的代码行。但是,如果是这样的话, 你要定位下一条错误还得用Ctrl +W 回到quickfix屏中来然后重复来过。
你可以使用下面的命令而不用回到quickfix中来:
:cp 跳到上一个错误
:cn 跳到下一个错误
:cl 列出所有错误
:cc 显示错误详细信息
下面我们来看另一个quickfix的功能。
如果你用过vim的cscope插件,你就知道cscope可以用来查找相当的代码,但cscope需要事先生成一个数据库,对一些简单的查找,其实,我们用vim的grep命令就可以了,不需要专门为之生成数据库。vim的grep命令和shell的几乎一样。
我们来看个例子:
比如我们正在浏览nginx的代码,这时,我想看看哪里用到了nginx的NGX_HTTP_VAR_INDEXED宏。于是,我可以在vim里输入如下的命令:
:grep -r –include=”*.[ch]” NGX_HTTP_VAR_INDEXED src/
上面这个命令意思是递归查询src目录下所有的.c和.h文件,其中包括NGX_HTTP_VAR_INDEXED宏。然后,你就会看到vim到shell里去执行并找到了相关的文件,按回车返回vim后,别忘了用 【:cw 】把grep的输出取回来,于是我们就有下面的样子:
然后同上面一样,你可以用 j,k 键移动quickfix里的光标到相应的行,然后按回车定位文件,或是使用【:cn】或【:cp】来移动到定位。(这样,你会把多个文件打开到缓冲区,别忘了【:ls】来查看缓冲区)
你看,到这里,一个小小的IDE就这样产生了,而且,最帅的时,我们连一点插件都没有装,也没有在.vimrc文件中配置过什么。
3、有用的快捷键
字符相关
【guu 】 – 把一行的文字变成全小写。或是【Vu】
【gUU】 – 把一行的文件变成全大写。或是【VU】
按【v】键进入选择模式,然后移动光标选择你要的文本,按【u】转小写,按【U】转大写
【ga】 – 查看光标处字符的ascii码
【g8】 – 查看光标处字符的utf-8编码
【gf】 - 打开光标处所指的文件 (这个命令在打到#include头文件时挺好用的,当然,仅限于有路径的)
【*】或【#】在当前文件中搜索当前光标的单词
缩进相关
【>>】向右给它进当前行 【<<】向左缩进当前行
【=】 - 缩进当前行 (和上面不一样的是,它会对齐缩进)
【=%】 – 把光标位置移到语句块的括号上,然后按=%,缩进整个语句块(%是括号匹配)
【G=gg】 或是 【gg=G】 - 缩进整个文件(G是到文件结尾,gg是到文件开头)
复制粘贴相关
按【v】 键进入选择模式,然后按h,j,k,l移动光标,选择文本,然后按 【y】 进行复制,按 【p】 进行粘贴。
【dd】剪切一行(前面加个数字可以剪切n行),【p】粘贴
【yy】复制一行(前面加个数字可以复制n行),【p】粘贴
光标移动相关
【Ctrl + O】向后回退你的光标移动
【Ctrl + I 】向前追赶你的光标移动
这两个快捷键很有用,可以在Tab页和Windows中向前和向后trace你的光标键,这也方便你跳转光标。
读取Shell命令相关
【:r!date】 插入日期
上面这个命令,:r 是:read的缩写,!是表明要运行一个shell命令,意思是我要把shell命令的输出读到vim里来。
相关文章推荐
- Vim高级用户3大技巧
- vim 高级使用技巧
- vim高级技巧(split)_小花_新浪博客
- vim一些高级替换技巧
- vim 高级使用技巧第二篇
- 针对高级用户的 Vim 编辑实用技巧
- vim高级技巧——使用vim对比两个文件(转)
- Linux之编辑器Vim篇(配置与高级技巧)
- VIM从入门到精通(移动的高级技巧)
- vim 高级编辑技巧
- Linux之编辑器Vim篇(配置与高级技巧)
- Linux之编辑器Vim篇(配置与高级技巧)
- vim高级技巧——使用vim对比两个文件
- vim 高级使用技巧第二篇
- vim高级技巧——使用vim对比两个文件
- 3 个针对高级用户的 Vim 编辑器实用技巧
- vim 高级使用技巧第二篇
- vim高级技巧
- vim 高级使用技巧第二篇
- vim高级技巧