未完,待总结

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. Android 小知识点(持续更新)

    ①文件保存默认是private权限. ②在layout的xml文件中onClick的方法中包含一个View类型的参数 ③获取项目下files路径:Context.getFilesDir(); ④获取项 ...

  2. [wikioi]四色问题

    http://wikioi.com/problem/1116/ 典型的DFS. #include <iostream> #include <memory.h> #define ...

  3. lubuntu安装maven

    原文转自:jobar.iteye.com/blog/1776747 1 apt-cache search maven 获取所有可用的maven包 2 sudo apt-get install mave ...

  4. YIi 使用 beginContent() 和 endContent() 设定 Yii 的 layouts

    Yii 的 views/layouts 是用来放置 layouts 的目录,在默认的情况下会有 main.php 和 column1.php 和 column2.php. main.php 内容定义了 ...

  5. [译]GotW #1: Variable Initialization

    原文地址:http://herbsutter.com/2013/05/09/gotw-1-solution/ 第一个问题强调的是要明白自己在写什么的重要性.下面有几行简单的代码--它们大多数之间都有区 ...

  6. 转:三十三、Java图形化界面设计——布局管理器之null布局(空布局)——即SWT中的绝对布局

    http://blog.csdn.net/liujun13579/article/details/7774267    一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到 ...

  7. 如何实现Android重启应用程序代码 ?

    Intent i = getBaseContext().getPackageManager()  .getLaunchIntentForPackage(getBaseContext().getPack ...

  8. xcode5.1 cocoapods报错

    Xcode升级到5.1了,apple默认让所有app都通过64位编译器编译,所以会报各种错误信息,关闭64位编译就好了. 选中Targets—>Build Settings—>Archit ...

  9. 如何编译Support7Demos测试appcompat

    目录(?)[-] 简介 在Eclipse中编译 使用Gradle编译 简介 Google发布的API-18中带上的support-v7包含了appcompat组件,可以在小于API-11的androi ...

  10. HDU 5937 Equation 【DFS+剪枝】 (2016年中国大学生程序设计竞赛(杭州))

    Equation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...