vim基本教程之vim插件

vim基本教程之vim插件

vim作为一个编辑器,有一个很NB的地方在于,它有一个对应的vimscript脚本语言,用于对vim的超高灵活度的配置。但是刚开始使用vim不久的,又要学习一个语言,未免太过了。然而,幸运的是,vim插件的存在使得我们不需要预先学习vimscript,就可以拥有一个可以灵活配置的vim编辑器。(注意:这里不是说学习vimscript无用,只是对于初学者而言,如果要配置一个vim,需要预先学习vimscript,未免付出的代价太大了。但是如果你已经使用vim很挺久了的,那么学习vimscript则是你进阶的一个方向。)

vim插件是用编程语言编写一个小程序,通过vimscript封装后,一个具有独立功能的模块,可以直接插装在vim中。只要我们配置一些选项,它就能为我们提高工作效率和舒适度做出贡献了。

下面是一些插件的介绍和使用

1. 插件管理

使用一个专门管理插件的插件vundle,可以让你日后对于插件的添加、更新、删除这些操作更加方便。

vundle是一个功能比较全面的管理插件的插件,安装流程如下

  1. vundle 会接管~/.vim 下的所有原生目录,所以先清空该目录

  2. 通过以下命令安装vundle

    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    
  3. 接下来在.vimrc中添加如下内容:(.vimrc文件,如果是linux系统的话,存在于主目录中,即”~"目录。如果文件不存在,创建一个命名为.vimrc文件即可)

    " vundle 环境设置
    filetype off
    set rtp+=~/.vim/bundle/Vundle.vim
    " vundle 管理的插件列表必须位于 vundle#begin() 和 vundle#end() 之间
    call vundle#begin()
    Plugin 'VundleVim/Vundle.vim'
    " 插件列表结束
    call vundle#end()
    filetype plugin indent on
    
  4. 此后,需要安装插件,先找到其在 github.com 的地址(推荐一个找vim插件的网站:VimAwesome),再将配置信息其加入 .vimrc 中的call vundle#begin() 和 call vundle#end() 之间,最后进入 vim 执行以下命令

    :PluginInstall 
    
  5. 要卸载插件,先在 .vimrc 中注释或者删除对应插件配置信息(就是上一步添加的那些。如果看不懂不要紧,后面会有举例的),然后在 vim 中执行 :PluginClean 即可删除对应插件。

  6. 批量更新插件,只需执行 :PluginUpdate 。

是不是相当地方便。其实插件管理不只有vundle,还有vim-plug,大家有兴趣的可以去弄一下。

2. 自动编译,并输出到quickfix

虽然我们写完程序之后,可以打开一个新的终端窗口或者在vim中使用shell命令来编译,但是始终要离开当前页面,比较麻烦。

而asyncrun插件,它可以让你在 Vim 里面异步运行各种 Shell 指令并且把结果实时输出到 Quickfix。

看图:

vim基本教程之vim插件_第1张图片
引自https://vimawesome.com/plugin/asyncrun

下面以安装这个插件为例,说明插件安装具体流程

  1. 将Plugin 'skywind3000/asyncrun.vim放到.vimrc 中的call vundle#begin() 和 call vundle#end()之间

  2. 保存文件

  3. 执行以下命令

    :PluginInstall 
    
  4. vundle开始安装asyncrun

  5. 配置asyncrun

    将以下内容放入 .vimrc文件的最后面

    " asyncrun 
    let g:asyncrun_open = 15  "above zero to open quickfix window at given height after command starts
    
    let g:asyncrun_save = 1 "non-zero to save current(1) or all(2) modified buffer(s) before executing
    
    let g:asyncrun_timer=100 "how many messages should be inserted into quickfix every 100ms interval.
    
    

具体的配置大家自行在其github项目上或者VimAwesome上看吧,其实挺简单的。

3. 代码自动补全

  1. 代码自动补全分为两种,一种是类似于普通编辑器的智能补全,另一种是模板补全。

  2. 智能补全可以让我们不用每次都要敲入长长的函数名,非常有效率。这里推荐youcompleteme

    引自https://vimawesome.com/plugin/youcompleteme

  3. 我们如果是编写程序的话,经常要写for循环之类的这种有固定格式的结构。而模板补全则是可以生成这种固定结构,非常方便。这里推荐ultisnips。但是模板要自己定义,太麻烦了,我个人比较喜欢用vim-snippets提供的默认模板,有什么不顺眼的就去改一下。

    引自https://vimawesome.com/plugin/ultisnips

4. 显示目录树

vim的内置插件netrw可以让我们像用其他的一些IDE一样,可以显示目录树。但是netrw无法删除非空目录,想要netrw可以删除非空目录也不是不可以,只是只能在vim7生效,我们现在用的基本是vim8了,弄起来有点麻烦。
其实可以用另一插件来实现目录浏览,大名鼎鼎的nerdtree插件。

vim基本教程之vim插件_第2张图片
引自https://vimawesome.com/plugin/nerdtree-red

5. 快速编辑结对符(或者说结对符自动补全)

当我们键入一个“{”时,如果可以自动补全“}”就非常好了,而delimitmate插件搞定它。

6. vim中英文输入法流畅转换

其实不能说流畅,还是会有点问题的,后面再说。

在我们用vim写中文的时候,如果切换到normal模式,那么,我们还要先切换输入法为英文,才可以正常键入命令。而通常,会忘记切换输入法,这个时候,体验相当不好。完了回到insert模式后,又要切换回中文输入法,相当相当麻烦。

而fcitx插件则可以实现当我们切换到normal模式时,如果当前输入法为中文,则自动切换到英文输入,而换回到insert模式后,又自动切换回中文输入法。这样就比较方便了。

弊端在于这个插件优化不是很好,切换时会卡一下。

7. 代码折叠

代码折叠可以让代码没有那么乱,可以用插件simpylfold实现。

8. 项目级查找

在我的上一篇vim教程(vim教程之基本使用)中,提到了,vim中难以在这个工程文件中查找内容,而这个插件ctrlsf.vim则可以补全这一遗憾。

vim基本教程之vim插件_第3张图片
引自https://vimawesome.com/plugin/ctrlsf-vim

你可能感兴趣的:(vim基本教程之vim插件)