利器系列之编辑利器 vim 之插件配置时习之.docx

上传人:b****3 文档编号:4465128 上传时间:2022-12-01 格式:DOCX 页数:4 大小:20.89KB
下载 相关 举报
利器系列之编辑利器 vim 之插件配置时习之.docx_第1页
第1页 / 共4页
利器系列之编辑利器 vim 之插件配置时习之.docx_第2页
第2页 / 共4页
利器系列之编辑利器 vim 之插件配置时习之.docx_第3页
第3页 / 共4页
利器系列之编辑利器 vim 之插件配置时习之.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

利器系列之编辑利器 vim 之插件配置时习之.docx

《利器系列之编辑利器 vim 之插件配置时习之.docx》由会员分享,可在线阅读,更多相关《利器系列之编辑利器 vim 之插件配置时习之.docx(4页珍藏版)》请在冰豆网上搜索。

利器系列之编辑利器 vim 之插件配置时习之.docx

利器系列之编辑利器vim之插件配置时习之

利器系列之——编辑利器Vim之插件配置时习之

在每个程序员的心里都有一款完美的IDE,只不过不同的程序员心中对于完美的定义并不相同,所以从来都没有一款大家都喜欢的IDE存在,它们总是少一些你想要的功能,或者是多了一些你不想要的功能。

解决这种问题的方法之一是配置,这也是为什么备受大家推崇的各种编辑器或者IDE都含有大量的可配置选项,通常来说我们可以通过配置选项把编辑器现有的功能配置成我们最顺手的状态。

但是如果编辑器没有你想要的功能,配置是无济于事的。

增强编辑器的功能,靠的是这篇文章中要介绍的——插件。

插件的存在是Vim和Emacs这类的编辑器能够备受推崇的原因之一,因为它们让不可能变成可能。

其实最理想的状态应该是像Shougo这类的大神一样,不爽了自己写一个。

可惜的是大部分人没有这个能力,我们通常是用大神写好的插件。

这篇文章介绍的是如何使用Vim的插件,而不是如何编写自己的插件。

如何找到自己想要的插件Vim的插件很多,所以如何找到一个合适的Vim插件也是一件比较头疼的事情。

最简单的做法是使用别人的Vim配置文件,比如我最初使用的配置文件就是k-vim。

这一类的配置文件通常是作者多年以来使用Vim过程中积累的经验,他们选用的插件也通常是一些最好用的插件。

另外一种方式就是去介绍Vim插件的网站上查找排名最前的那些插件。

我最喜欢的Vim插件网站是vimawesome。

这个网站上的每个插件都会有评分,一般来说最靠前的都是大家用的最顺手的。

当然你也可以去github上搜索相关的插件,然后看看哪一个插件的star最多。

插件的安装通常我们会使用大量的插件,这些插件的管理(安装、删除、升级)非常不便。

为了解决这个难题,我们需要一个管理插件的插件,这一类型的插件很多,用的比较多的有:

-Vundle-Neobundle-Pathogen-VimPlug我一直都是使用Vundle,它可以非常方便的管理插件。

中间两个我没有使用过在这里不做介绍,最后一个是比较新的插件管理器也非常好用,有兴趣的可以去它们的主页上查看相关信息。

Vundle的安装比较简单,只需要两个简单的步骤即可:

1.克隆插件代码:

gitclone~/.vim/bundle/Vundle.vim2.在配置文件中插入:

setnocompatiblefiletypeoffsetrtp+=~/.vim/bundle/Vundle.vimcallvundle#begin()Plugin'gmarik/Vundle.vim'callvundle#end()filetypepluginindentonVundle是唯一一个我们需要手动安装的插件,安装完这个插件之后你可以通过它帮你自动完成其余插件的安装。

比如我想要安装delimitMate这插件,你只需要做如下的配置:

callvundle#begin()Plugin'VundleVim/Vundle.vim'Plugin'Raimondi/delimitMate'callvundle#end()也就是在callvundle#begin()和callvundle#end()之间加入你想要配置插件的名字。

Vundle支持多种插件源,其中Raimondi/delimitMate这中写法表示安装github上Raimondi用户的delimitMate插件。

详细的语法请参考Vundle在github主页中的介绍,或者通过hvundle查看帮助文档。

常用插件推荐Vim好用的插件太多,我一般只用Vim做C/C++的开发,所以这里推荐的插件很多都是和C/C++相关,如果你用它做其他类型的开发,可以自行寻找相关的插件。

插件安装之后通常需要一些简单的配置,这里并没有给出这些配置,因为配置通常因人而异,不同的人喜欢不同的快捷键,写在这里也会使得文章本身变得复杂。

大部分的插件的配置方式在项目主页上都会给出,我给出了所有插件的主页链接,所以就不再给出配置方法。

如果你确实需要参考,可以参考我的代码仓库中的相应配置文件。

界面美化类型插件vim-colors-solarizedsolarized是一个非常有名的主题,这个插件是它的Vim版本。

不过这个主题只能用在GVim中。

如果你在终端中使用Vim,那么你应该寻找终端主题工具而不是Vim主题插件。

xfce自带的xfce4-terminal和kde自带的konsole都带有这个主题,Ubuntu15.04以后的gnome-terminal也带有这个主题,在之前的Ubuntu版本中想要使用合格主题可以安装gnome-terminal-colors-solarized这个插件。

通常这个插件需要配合dircolors-solarized这个插件同时使用,这样才能达到最佳的显示效果。

vim-airline这个插件是一个状态栏(statusline)和标签栏(tabline)的一个增强插件,它是vim-powerline的一个后继插件,它使用纯VimL编写,不需要用到Python所以它的速度要快一些,也轻巧一些,这也是称之为air的原因。

这个插件可以说是漂亮的不像实力派,它功能非常强大,同时又有大量的主题存在,可配置性非常的高,强烈推荐。

tmuxline如果你喜欢把Vim和tmux配合起来使用,那么你可以考虑安装tmuxline这个插件,它可以把tmux和Vim的状态栏设置成统一的主题,让这两者更加完美的融合。

关于tmux的使用,你可以参考我的另一篇博文分屏利器Tmux自动补全插件自动补全插件通常分为两种:

代码块的插入和输入自动补全。

很多人想到的自动补全都是第二种,但其实第一种的功能也是强大到没有朋友的。

代码块的插入所谓代码块的插入,其实就是把一些常用的代码块通过简单的几个字符扩展成完整的代码,相当于是缩写替换成全名。

比如输入main使用扩展,立刻插入:

intmain(intargc,char*argv[]){|输入:

fori使用扩展,可以插入:

光标位置Vfor(inti,i这一类的代码,在你是编写任何一种语言的代码时都会存在,而这种插件的存在会大大的提升你的编码效率。

ultisnips代码块的插入其实又分开为两个插件,引擎和代码块描述。

引擎的作用是驱动整个代码块扩展,比如你输入main之后按下扩展键,它负责找到相应的代码块并完成扩展。

而代码块描述用来说明main到底是扩展成intmain(intargc,char*argv[])还是:

intmain(void)ultisnips就是所谓的引擎,它是基于Python的,所以我们需要首先安装Python,在大部分的Linux发行版本中,默认自带Python,其他操作系统可能需要自行安装。

vim-snippets通常我们不会自己编写引擎但是我们可以自己编写想要的代码块描述。

当然有一些代码块描述写的比较好而且非常全面,所以也成了一个常用的插件,这也就免去了自己动手写代码块描述的麻烦,vim-snippets就是这种代码块描述插件。

当然这并不意味着你就只能使用它们的代码块描述,你完全可以根据自己的喜好进行自己的定制和扩展。

输入补全插件——YouCompleteMe这一类的插件,几乎所有的IDE都有提供,比如你输入vim-的时候列出vim-colors-solarized,vim-airline,和vim-snippets供你选择补全。

这种插件在Vim中比较多,最受欢迎的应该是YouCompleteMe,这个插件也是强大到没有朋友的级别,不过这个插件比较难以安装,因为这个插件非常的庞大,在墙内安装它非常的耗时,很多时候你可能会安装到一半的时候突然出错。

不过这个插件着实强大,不妨多试几次。

除了YouCompleteMe之外还有其他的一些自动补全的插件也比较好用,比如neocomplete插件。

这些插件通常可以和前面的ultisnips配合使用,具体的配置方法你可以参考它们的帮助文档,或者直接Google。

兼容插件——supertabultisnips和neocomplete都使用tab作为触发按键,所以会有冲突,你可以通过配置改变其中一个的触发按键,也可以通过supertab这个插件,让它们共存。

YouCompleteMe的文档说它集成了supertab的功能,如果你选择使用它的话,可以不用安装这个插件。

括号匹配在C/C++中使用了大量的括号(这里的括号包括单双引号),这些括号通常是必须配对的,初学者容易因为错漏这些匹配的括号而导致错误。

解决这一类的错误的最佳方式通常是成对的输入这些括号,你可以手动完成他们,也可以通过插件自动完成它们。

delimitMate,auto-pairs这个插件可以很轻松的完成括号的匹配输入,通常有它就够用了。

它比较轻巧,速度很快。

另外一个类似的插件auto-pairs也可以完成这一操作,不过它的速度要比delimitMate慢一些,不过功能相对强大一些,比如:

for(inti=0;i使用delimitMate完成匹配后输入回车,你可以得到for(inti=0;i而使用autopair你可以得到for(inti=0;i总的来说,后者相对智能一些,不过速度不如前者,选择哪个全看个人洗好。

rainbow_parentheses括号匹配在数量较少的时候比较容易,一旦嵌套过深,查找对应的另一半会比较困难。

Vim为了解决这个问题提供了%这个快捷键,跳转到对应的括号上面,这个按键的问题在于你需要先把光标移动到其中一半括号上,而且这个按键本身不是很好输入。

rainbow_parentheses这个插件的作用是把匹配的括号通过同一种颜色标出来,这样我们可以很容易的通过视觉找到匹配的括号。

这在类似于下面这样的代码中还是比较实用的。

if((c=getchar()))当然如果你的代码嵌套过深,你首先应该想的是是否该改一改你自己的代码了。

vim-surround老实说这个插件和括号的匹配本身没有太大的关系,只是功能类似所以放到一块。

这个插件其实也是一个杀手级的插件,它可以在你指定的内容周围环绕成对的符号。

比如,你可以快速把helloworld变成:

'helloworld'或者更神奇的:

helloworld而这一切并不需要你切换到输入模式才能完成。

关于它的详细用法可以参考它的帮助文档。

和vim-surround配对的另一个插件是vim-repeat有了这个插件你可以重复上一次surround动作。

Git集成——fugitiveGit是我用的最多的版本控制工具,Git和Vim这两个看似风马牛不相及的神器同样可以通过插件统一起来,这个插件就是[fugitive][]有了它你可以在Vim中可视化的完成大部分Git操作,非常的方便。

不过在github的项目主页上没有太多关于它的用法的介绍,建议感兴趣的人查看它的help文档,里面有详细的功能介绍。

多行编辑——multiple-cursors这个功能不知道是不是从sublime中学过来的,我在sublime中也见过,算是它的王牌功能之一。

要在Vim中使用这个功能你需要安装vim-multiple-cursors这个插件。

这个插件最实用的地方就是你如果想要替换一个变量名,你不需要挨个的替换,使用它可以先可视化的选择然后一次全部替换。

光标的快速移动——easymotionhjkl已经让光标的移动非常的方便了,但是它们毕竟只能移动一个单元格,如果你想要移动多个单元格你需要在这些快捷键前面加上移动的数量,比如10j向下移动10行,可是我很少使用这个操作因为我没有这个脑力去计算目标行和当前行之间的距离。

为了解决这个问题,很多人推荐使用相对行号,这样就可以直观的感受到这个距离而不用自己计算。

这当然是一个不错的选择,只不过有些人不喜欢用行号,因为它占用了一部分可用的编辑区域。

此外相对行号在调试程序的时候不太方便,毕竟你的编译器通常告诉你在哪一行出错,而不是相对当前行在哪一行出了错(当然这些都是个人喜好问题,我通常直接通过在命令模式下输入行号跳转到我想要的行号)。

如果我可以先按下j然后选择要跳到哪一行而不是先想好要跳到哪一行再按下j该有多好。

vim-easymotion就是完成这个功能的,你可以先按下方向键然后可视化的选择你的目标,一切就是这么easy。

项目管理如果你需要开发一个比较庞大的项目,你很容易迷失在大量的文件当中。

这一小结主要介绍大型项目管理的一些插件nerdtree这个插件,久负盛名,它给Vim提供了方便的目录功能,很多人对它爱不释手,因为大部分IDE都有这个功能,它可以给你一种很熟悉的感觉。

当然它会比普通的目录浏览器要强大,因为它提供大量的快捷键,操作起来非常方便。

此外它可以很方便的完成打开和关闭,如果你有一块比较大的显示器,你可以一直开着它,如果你只用笔记本,你也可以关闭它,需要的时候再打开。

ctrlp这是另一个杀手级的插件,目录通常只是方便浏览而已,其实大部分的时候我们真正想要的是快速找到并编辑某个文件。

这一类的插件比较多,我最喜欢的是ctrlp,这个插件提供了文件查找,buffer管理,最近使用文件查找等功能,通过扩展还可以查找函数,非常的方便。

我使用过许多类似的插件,但是这个是这个是我最喜欢的,因为它的速度要比其他的插件快很多。

如果你喜欢捣鼓其他的插件,你可以考虑ctrlspace和unite这两个工具,它们的功能也比较强大,萝卜白菜,各有所爱。

其中unite的功能最为强大,它有很多ctrlp没有的功能,没有用过的可以考虑尝试一下。

ctrlsf项目的开发,如果工程比较大,你可能会需要做一些简单的重构,比如更改一个变量的名字。

如果这个变量只在一个文件中出现,你可以使用后面推荐的multiple-cursors这个插件,一次选中所有的变量,然后全部更新。

但是如果这个变量出现在不同的文件中(比如头文件和实现文件中都有出现),上面这个工具就不够用了。

这时候你可以使用ctrlsf这个插件。

这个插件和multiple-cursors一样是从sublime中学过来的功能,你可以查找工程中某个名称出现的所有位置。

如果只是单纯的查找,ack这个插件也可以完成这一工作,ctrlsf真正强大的地方在于你可以在结果页面中进行编辑,这个功能配合multiple-cursors可以实现非常强大的重构功能,强烈推荐大家使用。

tagbar许多的IDE会有一块区域列出当前文件中所有函数,Vim中也可以通过插件实现这一功能。

我比较喜欢的插件是tagbar,轻巧但很强大。

这个插件依赖ctags,所以你需要在安装插件之前安装这个软件包。

cscope如果你的项目非常的大,代码之间的跳转会变成一件非常的困难的事情,你通常在阅读到一个函数的调用的时候想要阅读一个函数定义,或者函数的实现。

在项目比较小的时候你可以自己查找然后打开定义文件,当项目非常庞大的时候这一切就变得力不从心了。

你可能会很希望有一个插件,让你直接使用快捷键就可以跳转到该函数的实现中去。

YouCompleteMe插件可以配置这个功能,你也可以使用更加强大的cscope。

cscope不是Vim的插件,而是tag的生成工具,你可以通过它和Vim的集成,让它为Vim生成tag,方便Vim进行跳转,具体配置参考cscope主页给出的方法。

代码注释快速注释代码——nerdcommenter代码的快速注释是一个非常实用的功能,这个功能我通常使用nerdcommenter来实现。

它可以很方便的实现代码的注释和反注释的功能。

文档化代码注释——DoxygenToolkit好的代码注释本身就是一份非常好的文档,要把注释转换成书面文档,通常会使用doxygen,我们可以通过DoxygenToolkit这个插件很方便的在Vim中编写符合doxygen格式的注释文档,然后通过doxygen生成相应的文档。

C++相关的其他插件语法高亮升级——vim-cpp-enhanced-highlightVim内置的语法高亮对于C++的支持并不完美。

对于标准库它无法高亮显示,vim-cpp-enhanced-highlight这个插件可以增强高亮效果。

头文件和实现文件之间的跳转——vim-fswitch如果我们处于开发的初期,接口的定义并不是特别完善的时候,我们通常是需要在头文件和实现文件之间不断的跳转的。

你很可能在实现一个接口的时候突然发现需要修改它的接口定义,于是需要找到头文件修改定义,又或者你在头文件中修改了接口的定义,需要去实现文件中做相应的更新。

vim-fswitch这个插件可以帮我们完成这一工作。

代码格式化工具——vim-autoformatVim的代码格式化功能个人觉得只能算是凑合,C++代码格式化的选项并不多,为了能够更好的格式化C++代码,个人比较倾向于使用astyle。

如果你需要在Vim中使用astyle你可以考虑安装vim-autoformat这个插件,它可以在Vim中集成各种格式化工具包括astyle。

vim-autoformat插件需要astyle2.0.5以上的版本,Ubuntu中的版本没有达到这个要求,所以你需要自己编译安装它。

Vim的插件太多,以上只是个人常用的一些而已,你可以自己去寻找自己喜欢的那些插件。

此外插件好用不要贪杯,多了会让你的Vim失去它原本的轻巧和敏捷。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1