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。

看图:

引自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插件。

引自https://vimawesome.com/plugin/nerdtree-red

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

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

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

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

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

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

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

7. 代码折叠

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

8. 项目级查找

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

引自https://vimawesome.com/plugin/ctrlsf-vim
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容