未完,待总结

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行.

vim阅读c++代码的快捷键的更多相关文章

  1. 使用VIM插件ctags来阅读C代码

    说明 Ctags是vim下方便代码阅读的工具.尽管ctags也可以支持其它编辑器,但是它正式支持的只有vim.并且vim中已经默认安装ctags,它可以帮助程序员很容易地浏览源代码:ctags最先是用 ...

  2. 使用SftpDrive+SourceInsight阅读开源代码

    在虚拟机环境下使用Linux编写和阅读代码,我之前一直是通过Xshell利用ssh登录至虚拟机从而在命令行下使用vim来进行的.目前有阅读开源代码的需要,虽然vim+ctags+cscope可以完成这 ...

  3. C# 展开和折叠代码的快捷键(总结)

    C# 展开和折叠代码的快捷键 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M +  ...

  4. C# 展开和折叠代码的快捷键

    C# 展开和折叠代码的快捷键 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M +  ...

  5. vim的几种模式&快捷键

    vim的几种模式&快捷键 2017年01月01日 14:05:24 阅读数:3060 一.vim的模式 基本上vim可以分为三种模式:命令模式,插入模式和底行模式,其实vim有多种模式,我们只 ...

  6. XCODE多行代码缩进快捷键

    转自:http://xiagudao.com/xcode多行代码缩进快捷键 在XCODE中无法使用TAB键对多行代码进行缩进.想多行缩进,选中需要缩进的代码使用快捷键command(花键)+] 即可右 ...

  7. VS2010 代码自动对齐 快捷键

    VS2010 代码自动对齐 快捷键  先全选代码    ctrl+K+F MATLAB代码自动对齐 快捷键 先全选代码   ctrl+I

  8. vs code代码对齐快捷键

    vscode缩进快捷键: 选中文本: Ctrl  +  [      和   Ctrl  +  ]     实现文本的向左移动或者向右移动: vscode代码对齐快捷键: 选中文本: Shift  + ...

  9. Visual Studio不显示智能提示代码,快捷键Alt+→也不出现

    最近安装了Dev Express的控件,我的vs2017 Enterprise版的环境,智能提示补全代码的快捷键功能,好像被修改了,不能使用了. 我原来的时候,比如在代码中输入如下代码: Consol ...

随机推荐

  1. Bootstrap 分页插件 ajax获取数据显示

    Bootstrap 分页插件 ajax获取数据显示 标签(空格分隔): bootstrap 文章的内容是使用bootstrap-paginator进行分页,使用ajax获取后台数据.渲染. 1. 版本 ...

  2. [原博客] POJ 2425 A Chess Game

    题目链接题意:给定一个有向无环图(DAG),上面放有一些旗子,旗子可以重合,两个人轮流操作,每次可以把一个旗子从一个位置移动到相邻的位置,无法移动时输,询问先手是否必胜. 这道题可以把每个旗子看作单独 ...

  3. [科普贴]为何Flash被淘汰?附Chrome看视频最完美教程!

    Adobe 公司放弃 移动 平台的 Flash 支持已经是板上钉钉的事了, Google Play 的 Flash 插件也会在 8 月份下架,这在一定程度上也会促进 HTML5 的发展和普及,因此我个 ...

  4. [收藏转贴]WCFRESTFul服务搭建及实现增删改查

    RESTful Wcf是一种基于Http协议的服务架构风格,  RESTful 的服务通常是架构层面上的考虑. 因为它天生就具有很好的跨平台跨语言的集成能力,几乎所有的语言和网络平台都支持 HTTP ...

  5. 微信JSSDK录音的一些bug

    UPDATE: 这篇博文已经过期, 新的BUG总结请看微信JSSDK与录音相关的坑 微信JSSDK有不少坑, 最近做一个webapp, 用到了其中的录音功能, 发现不少问题, 总结一下: 当你调用st ...

  6. python 替换windows换行符为unix格式

    windows 默认换行符为 \r\n; unix默认换行符为 \n; 所以当win下编辑的脚本在linux下显示末尾多了^M: 换行符修改为同一的unix格式脚本如下: def run(path,f ...

  7. C++ Prime:指针和const

    与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; / ...

  8. ☀【jQuery插件】DOM 延迟渲染

    test.html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...

  9. Java正则表达式应用总结

    http://lavasoft.blog.51cto.com/ http://lavasoft.blog.51cto.com/62575/179324      Java正则表达式应用总结   一.概 ...

  10. 昂贵的聘礼--POJ1062

    昂贵的聘礼 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Submiss ...