用Vim模仿IDE的一些常用功能

首先,确定你的系统装了vim与ctags,没装的话请输入以下两个命令安装(注意系统自带vi不是vim)

sudo apt-get install vim

sudo apt-get install ctags

============================================================

在使用IDE时,最大的方便就是我们不用编写makefile,本文不讨论makefile的编写,而是关注一些其他IDE常用功能,比如:

  • 查看某个函数的定义
  • 查找某个变量的使用情况
  • 内置make,一键即可build
  • 代码高亮
  • 代码自动补全
  • 代码缩进调整
  • 在整个项目中替换字符
  • 多文件编辑
  • 方便的切换到上次编辑的位置

差不多就这些功能比较常用了吧,尤其是在做项目时。下面一一分析在VIM下如何实现这些功能。

查看某个函数的定义

确定安装ctags后,进入项目目录,输入命令:ctags –R *     -R表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录。“*”表示所有文件。这条命令会在当前目录下产生一个“tags”文件,当用户在当前目录中运行vi时,会自动载入此tags文件。

现在,当你在使用vim时,输入:tag func便会跳转到func函数定义的地方,或者光标移到func后按快捷键Ctrl+]。Ctrl+T返回上一个位置

tag命令还支持正则表达式,在记不清楚具体函数名时可以加上“/”用正则表达式查找,如tag /^XXX

另外还须注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:settags=”命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件

 

查找某个变量的使用情况

使用vimgrep。比如我想查找变量count的使用,在vim下输入:vimgrep  ///  **/*.cpp。

“**”表示递归查找所有目录,*.cpp表示查找cpp后缀结尾的文件,输入后按回车即可进入第一个匹配行,输入cnext(cn)进入下一个匹配,cprevious(cp)进入上一个匹配。

 

内置make,一键即可build

在使用vim写程序时,我们还需退出vim,再输入make,其实可以使用vim内置的make,这样就不用退出vim了,但是前提也是必须目录下有makefile。

输入命令:make,如果有错误的话,剩余查看操作与上一个vimgrep相同(cnext(cn)与cprevious(cp))

代码高亮

VIM自带。

 

代码自动补全

各种语法插件,不再详述,可google查阅

 

代码缩进调整

进入Visual模式,按“=”即可。

 

在整个项目中替换字符

要对多个文件进行同样的替换操作. 显而易见的办法是逐个编辑每个文件, 敲入替换命令. 不过用宏记录和回放功能就快多了.

假设你有一个目录下有很多C++文件, 都以".cpp"为扩展名. 现欲将所有名为"GetResp"的函数更名为"GetAnswer".

请按以下步骤操作:

vim *.cpp(打开所有c++文件,现在进入的是第一个)

qq(开始宏记录)

:%s///GetAnswer/ge(在第一个文件中执行替换操作)

:wnext(保存该文件并转到下一个文件进行编辑)

q(停止宏记录)

@q(执行名为q的宏.)

999@q(对其余文件执行同样的操作)

注意,:%s///GetAnswer/ge中最后的e是必须得,用于忽略错误,否则如果某个文件不包含GetResp,那整个宏就终止了。

 

多文件编辑

vim file1 file2……个人感觉其实没多大用,所以介绍一个多窗口编辑命令吧。

:sp newfile即可在同一窗口打开newfile文件。

如果想编辑上一个窗口,先按ctrl+w再按k

如果想编辑下一个窗口,先按ctrl+w再按j

如果想将其中一个文件的内容全部复制到另一个文件中,则可输入:r 被复制的文件名。这样就实现了文件的全部复制。

 

方便的切换到上次编辑的位置

目前我只知道按两次 `键(Tab键上面那个)

over,转帖请注明出处

你可能感兴趣的:(Linux)