linux安装vim plug,VIM 插件管理工具 vim-plug 简明教程
作为 VIM 的重度患者, 一款好用的插件管理工具显得尤为重要, 毕竟给 VIM 增加新功能, 或者是新增编程语言的支持都需要安装插件. 我个人目前安装了 133 款 VIM 插件.
我使用的 VIM 插件管理工具也从早起的 Vundle 到 NeoBundle, 再到现在使用的 vim-plug.
选择 vim-plug , 是因为它:简洁且快速, 没有外部依赖, 整个插件只有一个文件;
该有的功能都有:按需加载插件(On-demand loading); 这样可以加快 VIM 启动时间
Post-update hooks; 可以在插件安装或者更新时执行一些操作, 如 make 等
还提供了更高阶的功能, 使得安装或更新插件都更快速:并行化地安装或者更新插件;
按照 shallow 的方式 clone 插件库, 下载更迅速
本文是 vim-plug 的一个简明教程, 会介绍它的安装使用, 以及我个人用到的一些 tips.
安装
官网是把 vim-plug 安装在 vim 的默认目录 ~/.vim 中, 但我个人更喜欢把它放在一个特定的位置, 这样不管是 vim 还是 neovim 都可以正常的加载它.
下面是 linux/macOS/unix 中直接在 vimrc 中安装 vim-plug 的代码:let $BUNDLE = expand("$HOME/.dotfiles/data/vimdata/bundle")
let $PLUG_DIR = expand("$BUNDLE/vim-plug")
if empty(glob(expand("$PLUG_DIR/plug.vim")))
silent !curl -fLo $PLUG_DIR/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source ~/.vimrc
endif
source $PLUG_DIR/plug.vim
这段代码的意思是如果 vim-plug.vim 文件不存在, 就自动从 github 上下载最新版本到指定目录并加载.
使用
和大部分 vim 插件管理工具一样, vim-plug 需要一个 begin 和 end 函数, 同时在 begin 和 end 中间可以使用 Plug plugin_url 来加载插件, 例如:call plug#begin(expand($BUNDLE))
Plug 'https://github.com/hiberabyss/ProjectConfig'
call plug#end() " Should run at last
把上面这部分代码放在上一步代码后面, 重新加载 vimrc source ~/.vimrc, 然后我们就可以使用 :PlugInstall ProjectConfig 来安装 ProjectConfig 插件了. 安装完成后, 我们可以通过执行 :ProjectConfig 来检查插件是否成功安装.
和 :PlugInstall 类似, 我们可以使用 PlugUpdate 来更新插件.
通过按键来安装或更新插件
通过命令安装或者更新插件显得很繁琐, 我们期望通过快捷键可以实现下面的效果:当光标所在行是以 Plug 开始时, 我们可以直接按快捷键来安装或更新这个 Plug 命令加载的插件;
当光标所在行不是以 Plug 开始时, 按相同的按键, 我们会安装所有当前未安装的插件, 或者更新所有插件;
可以通过下面的代码实现我们想要的效果:function! GetPlugNameFronCurrentLine(cmd)
let plugin_name = getline(".")
if plugin_name !~ "^Plug"
execute(a:cmd . '!')
return
endif
let plugin_name = split(split(plugin_name, "'")[1], '/')[-1]
let plugin_name = substitute(plugin_name, '\.git$', '', 'g')
execute(a:cmd .' '. plugin_name)
endfunction
nmap ,pi :w:call GetPlugNameFronCurrentLine('PlugInstall')
nmap ,pu :call GetPlugNameFronCurrentLine('PlugUpdate')
当我们按 ,pi 时便可安装光标所在行的插件, 或者是按 ,pu 来更新光标所在行的插件.
按需加载插件
为了提高 vim 的启动速度, 我们期望某些插件只有在特定的情况下才被加载. 例如我们希望 vim-go 插件只有在编辑 go 类型的文件时才会被打开, 便可以通过如下方法实现:Plug 'https://github.com/fatih/vim-go.git', {'for': 'go'}
其中 for 后面的文件类型也可以使用列表, 如 {'for': ['go', 'golang']} .
同时, 也可以在调用命令的时候加载插件, 如:Plug 'https://github.com/Yggdroot/indentLine', {'on' : 'IndentLinesToggle'}
这段代码的意思是只有 IndentLinesToggle 被调用时, 对应的插件才会被加载. on 后面也可以使用列表.
手动加载插件
有时我们需要手动加载一些在 vim 启动时未被加载的插件, 例如我们可能希望在没打开 go 类型文件的情况下查看 vim-go 的帮助文档, 这时我们可以通过如下的自定义命令来加载 vim-go :function! s:plug_loaded(spec)
let rtp = join(filter([a:spec.dir, get(a:spec, 'rtp', '')], 'len(v:val)'), '/')
return stridx(&rtp, rtp) >= 0 && isdirectory(rtp)
endfunction
function! s:plug_names(...)
return sort(filter(keys(filter(copy(g:plugs), { k, v -> !s:plug_loaded(v) })), 'stridx(v:val, a:1) != -1'))
endfunction
command! -nargs=+ -bar -complete=customlist,s:plug_names PlugLoad call plug#load([])
在 vimrc 中加入上述代码后, 我们便可通过 :PlugLoad vim-go 来加载 vim-go 这个插件. PlugLoad 命令可以自动补全当前未加载的插件.
Post-update Hooks
我们可以通过 do 标签来指定在安装或者更新完插件后所需要做的操作:Plug 'https://github.com/autozimu/LanguageClient-neovim', { 'do': ':UpdateRemotePlugins' }
Tip: 基于 Ultisnip 快速补全 plug 命令
往往我们在安装插件的时候会先把插件的地址复制到系统剪贴板中, 假定当前系统剪贴板的内容为 https://github.com/hiberabyss/ProjectConfig 借助 Ultisnip 的自动补全功能, 我们可以实现如下的效果:
在 vim.snippets 中添加如下代码即可实现上面的效果:snippet plug "add new plugin" b
Plug '`!v @*`'$1
endsnippet
linux安装vim plug,VIM 插件管理工具 vim-plug 简明教程相关推荐
- Linux 安装 luarocks(lua的模块管理工具)
1.简介 该软件包可以安装和更新lua的第三方模块. 2.下载地址 请在 http://luarocks.org/releases/ 页面选择需要的软件包. wget http://luarocks. ...
- lua管理linux,Linux 安装 luarocks(lua的模块管理工具)
1.简介 该软件包可以安装和更新lua的第三方模块. 2.下载地址 请在 http://luarocks.org/releases/ 页面选择需要的软件包. wget http://luarocks. ...
- 扫描版pdf重排 linux,强大的桌面用 PDF 重排工具:K2pdfopt 简明教程
用 Kindle 阅读 PDF 一直以来都遭到小伙伴们的无限吐槽,在那 Kindle 还能越狱的时代,我们有 Koreader 之类优秀的 Kindle 第三方插件实现 PDF 文档的实时重排,但是随 ...
- Vim插件管理工具Vundle以及常用插件
1. Vim插件管理工具Vundle 虽然拥有大量的插件,却缺少一个 确之有效的插件管理器.所幸,Vundle的出现解决了这个问题. Vundle可以让你在配置文件中管理插件,并且非常方便的查找.安装 ...
- [工具]OFFICE插件管理工具-帮助更好地管理及使用电脑安装过的OFFICE插件
在OFFICE软件的世界中,除了由微软提供的OFFICE软件功能外,还有大量的功能由第三方开发者完成,市面上也存在大量的OFFICE插件供用户选择. 使用场景 有些插件仅在某个特定场景下才会使用,日常 ...
- 【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
现在使用OFFICE插件的群体越来越多,在8月份修复过的[OFFICE插件管理工具],尝试将COM加载项的插件管理进行完善. 但仍然有一小部分普通加载项的管理未能加到里面.特别是近期用户反馈到的Eas ...
- cad小插件文字刷_小懒人CAD插件管理工具
小懒人cad插件管理工具是一款CAD插件管理软件,可以帮助用户管理CAD插件,不需要单个安装,支持一键加载,小懒人CAD插件管理软件不需要安装,下载即可使用.有需要的小伙伴欢迎来西西下载. 软件特征: ...
- wps 插件_【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
现在使用OFFICE插件的群体越来越多,在8月份修复过的[OFFICE插件管理工具],尝试将COM加载项的插件管理进行完善. 但仍然有一小部分普通加载项的管理未能加到里面.特别是近期用户反馈到的Eas ...
- kubectl插件管理工具krew
kubectl插件管理工具krew 一.kubectl简介 kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具.该kubectl工具 ...
最新文章
- HDU 3549 Flow Problem (dinic模版 isap模版)
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
- mycat 10 分钟轻松入门
- nginx 转发慢_学习Nginx的正确姿势,多图详解助你更上一层楼!(干货收藏篇)...
- 牛客 - maki和tree(dfs)
- P5956-[POI2017]Podzielno【数学】
- ajax荷马史诗,荷马史诗(8)
- django-模板语言-传输各种数据类型
- 摩根大通:iPhone 13和新款iPhone SE将推动苹果业绩明年再破纪录
- [转载] Java的访问修饰符、非访问修饰符分类详细总结以及修饰符用途总结
- pc企业微信hook接口,企业微信营销软件,企业微信群发
- 中国互联网二十四年红黑史
- asp.net中gridview的绑定数据源实现增删改查
- 推荐两个在线代理服务器
- 安装NIVIDIA CUDA toolkit
- Excel批量转置——录制会循环的宏
- 1.数学建模比赛前期准备
- GWO灰狼优化算法综述(Grey Wolf Optimization)
- 通过Transporter迁移MongoDB 数据至elasticsearch
- 一个大四实习生从安卓小白到可以独自承担安卓和web前端的一年奋斗之旅