未完,待总结
1. 首先适用ctags建立当前工作目录的标签:
cd /home/wanglc/WorkDirectory
ctags -R or ctags -R *
命令结束以后,会生成一个tags文件。
还有一个:ctags --sort=yes -R ,可以是ctags查找更快速,适用二分查找法,个人觉得这应该做成一个默认的选项。
2. 将这个生成的tags文件配置到vim中去。方法如下:
vi /etc/vimrc
打开以后,添加以下语句:
set tags=/home/wanglc/WorkDirectory/tags
source /etc/vimrc
3. 配置vim的缩进,符合语言规则
set cindent "设置c风格的缩进
4. 配置自动代码补全功能
在编写代码的时调用CTRL+P、CTRL+N也会自动搜索tag信息来进行补齐。
5. 设置鼠标
set mouse=a
set scroll=5
Ctrl+[鼠标点击函数名] 跳转到函数定义
Ctrl+[鼠标右击函数名] 返回原处
改正程序中的错误
6. 在VIM编辑器中使用":make"就可以编译程序,当然其前提是在当前目录下有Makefile文件。运行完":make"之后,如果程序中有错误,就会显示出来。此时,光标会自动指向第一个出现错误的地方,而且你还可以看到错误的提示。
其他命令:
> ":cl" 列出错误
> ":cn" 跳到下一个错误
> ":cp" 跳到上一个错误
> ":cnew" 跳到第一个错误
提示:
通过设置"errorformat"的值,可以让VIM识别出编译器(非gcc)的出错提示。
"errorformat"的值是一个字符串,它的格式和C语言的scanf的字符串格式相似。
gcc的"errorformat"的值为:%f:%l:"%m。其中"%f"表示文件名,"%l"表示行号,"%m"表示出错信息。
用":h errorformat"查看详细的帮助信息。
用":h quickfix"、":h make"、":h makeprg"、":h errorfile"查看其它的信息。
10. 使用命令定位
vim -t [需要定位的名称]
在vim内部,命令模式下,执行 :ta [函数名] 。可以跳转到函数定义出。
注:
如果有多处匹配,可以在命令模式下,用下面的命令来操作:
可用:tfirst跳转到第一个匹配,:tlast跳转到最后一个匹配,:tprevious跳转到前一个匹配,:tnext跳转到下一个匹配,:tselect选择要跳转的匹配。
6.常用命令助记
ta[g] $tag+TAB
tf[irst]
tr[ewind]与tfirst等价
tl[ast]
number+tp[revious]
number+tn[ext]
number+tN[ext]与tprevious等价
ts[elect] $tag
tj[ump] $tag与tselect相似,但当只有一个匹配时,直接跳转到定义。
sts[elect] $tag与tselect相似,但是会在新建水平分割窗口是显示所选的tag的定义。
stj[ump] $tag是tj与sts相结合的产物
g CTRL+] 与tjump等价
下面这些命令与上面类似,但是都是在预览(preview)窗口中显示tag定义。
pt[ag] $tag+TAB
ptf[irst]
ptr[ewind]与ptfirst等价
ptl[ast]
number+ptp[revious]
number+ptn[ext]
number+ptN[ext]
[[ 转到上一个位于第一列的"{"
]] 转到下一个位于第一列的"{"
{ 转到上一个空行
} 转到下一个空行
gd 转到当前光标所指的局部变量的定义
ctrl+] 跳转到函数或者类或者变量的定义,Ctrl-o或者Ctrl-t回退到原来的地方。
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方
% 匹配当前光标指向的符号(小括号、中括号和大括号)
VIM支持语法制导和自动缩进
VIM会根据文件的后缀名,如:*.c、*.cpp、*.cc,等,自动设置语法制导(Syntax Highlighting)。C/C++中的一些保留字,如:if、for、include,等等,就会有不同的颜色,这样就会减少程序员犯错的可能,阅读程序的时候相对来说也轻松很多。用下面这些命令在VIM中查看有关语法制导的帮助:“:h syntax”、“:h syn-qstart”、“:h syntax-printing”。
VIM也支持根据GNU的风格自动缩进,这样程序员编写出来的代码就更易阅读,而且也有利于培养好的编程风格。用下面这些命令在VIM中查看有关自动缩进的帮助:“:h cindent”、“:h cinoptions”、“:h cinoptions-values”、“:h cinkeys”、“:h cinwords”。
使用Ctags
配VIM,使其能一键编译单文件源码程序.
在.vimrc文件添加如下函数:
点击(此处)折叠或打开
nmap <F4> :call DoOneFileMake()<CR>
function DoOneFileMake()
if(expand("%:p:h")!=getcwd())
echohl WarningMsg | echo "Fail to make! This file is not in the current dir! Press redirect to the dir of this file."
endif
exec "w"
call SetCompilation()
exec "make"
exec "copen"
endfunction
SetCompilation()
if &filetype=='c'
set makeprg=gcc % -o %<
elseif &filetype=='cpp'
set makeprg=g++ % -o %<根据不同
endif
endfunction
第1行:表示映射快捷键F4,即按F4则调用这个一键编译的函数.
第3-5行:判断这个文件是否在当前文件夹.
第7行:相当于执行命令w
第8行:调用函数SetCompilation(),用来设置编译器或者说设定编译命令.
第9行:执行make命令
第10行:打开quickfix窗口,用于显示编译产生的错误.
第13-19行:根据不同的文件类型,来配置makeprg,也就是make命令调用的编译器或编译命令.
第14行:判断当前的文件类型是否是C 程序.
第15行:设定make命令所调用的编译命令.
说明:这样来设定的好处就是编译产生的错误可以直接在quickfix窗口中显示出来.
第16-17行,分析同14-15行.