狂甩酷拽吊炸天
分类: LINUX
2020-08-07 18:50:35
原文地址:VIM使用系列:缩进调整、自动补全、折叠、跳转 作者:lkklinux
缩进调整、自动补全、折叠、跳转这些vim操作都是一开始我也不会,在项目开发过程中熟悉掌握的,本文主要记录一下这些操作的命令,以及查找帮助,为分享也为备忘。
缩进调整的帮助查找命令: :help shift-left-right,或者直接help下面缩进调整的任意一个命令。缩进调整操作的执行与vim中的shiftwidth参数的值有关系, 在前文的vimrc配置文件中,已经将shiftwidth设置为4,表示每一次缩进的宽度均为4个空格长,可以参照进行修改。
以下为常用的缩进快捷操作和命令:
在windows中使用SourceInsight工具编辑代码时,函数、变量的自动补全功能是很强大、很受欢迎的,可以大大地提高工作效率。在vim中 也有一样的功能,也许没有那么方便,稍微需要增加一些按键(可能需要自己进行一点复杂的设置也可以实现SourceInsight的自动弹出),但是也足 够使用了。
自动补全可以简单地分为两块:单词的自动补全 和 程序代码中符号、函数的自动补全,从本质上来说都是基于单词的补全,但是代码中的补全有其特殊性,主要是结构成员的补全这里。因此两者的操作命令也就稍有不同。
单词自动补全:在inset模式下按如下组合键,ctrl+x ctrl+n 或者 ctrl+x ctrl+p
或者直接按组合键ctrl+n 或 ctrl+p,前者将列出当前缓冲中符合的条件的词,而后者还将包括字典中的符合条件的词。查看详细帮助::help xn
代码自动补全:在inset模式下按如下组合键,ctrl+x ctrl+o,查看详细帮助: :help xo
代码的自动补全环境要求稍微复杂一点。
首先,它使用的补全叫Omni Completion, 这里涉及到vim中变量omnifunc的设置,这进一步就涉及到文件类型的识别、关联。因此第一步是需要打开vim中的文件类型自动检测,在前面的 vimrc配置文件中已经设置了,即: filetype on。vim中默认可以识别不少文件类型,如:C语言的源文件、java程序文件、html程序文件等等,也就会自动根据文件类型设置omnifunc的 值。
其次,omni补全需要使用tags文件中的信息来实现,而且最好是Exuberant Ctags工具(第一文中的ctags工具)生成的tags文件,因此第二步就是安装该工具,并使用它生成项目的tags文件(参考第二文中的项目脚本内容)。
最后,omni补全因为使用tags中的信息实现,因此只能对代码中的全局变量、全局类型、函数、结构成员、类成员进行补全,而不能对代码中的局部变量进行补全,局部变量的补全使用上面的单词补全方式实现。
补充:项目开发中都会使用很多的C标准函数、系统调用等,而包含这些函数的头文件并没有被包含在tags文件中,也就不会提示自动补全,为了提高效率实现 更全面的自动补全,可以把标准函数、系统函数的tags补充到vim中,方法是先建立系统头文件的tags文件,然后添加到vimrc配置文件中,如下:
ctags -R -f ~/.vim/systags /usr/include /usr/local/include
然后将 set tags+=~/.vim/systags 设置添加到第二文中的.vimrc配置文件中。这样不仅是补全更高效,而且也是跳转更全面。
从补全列表中选择,向下移动:ctrl+n ,向上移动:ctrl+p,然后按任意键结束补全,注意这个键还是会被输入,所以好的选择是按空格键。
如果补全处于激活状态,可以用”CTRL-E“停止补全并回到原来录入的文字;用”CTRL-Y“可以停止补全,并接受当前所选的项目。
代码的折叠,可以方便掌控程序的主要逻辑,也便于代码的阅读、查找。使用折叠,首先要设置折叠方式,即设置vim中fdm(foldmethod的缩写) 的值,在系列第二文的配置文件中已经将fdm设置为indent,即依据代码的缩进进行自动折叠。vim中有六种fdm可以设置,参考详细帮助: :help fold。常用的折叠打开、关闭操作如下:
在SourceInsight中想要跳转到某个函数,只需要按住shift键,然后点击鼠标左键就可以了,在vim中同样很简单快速,直接按组合键ctrl_]就可以了,当然前提条件是已经生成了tags文件,并设置好了。查看详细的帮助::help ^]。