git 如何去掉init_使用 git 管理 vim 插件

vim 有很多管理插件的插件,例如 vundle、vim-plug、dein 等等。我最早使用的是 vundle,后来迁移到了 vim-plug 上,中间也试用过 dein,但没有发现亮点。这些插件的核心功能就是从 GitHub 下载或者更新插件。而实现这些核心功能并不复杂,git 就是很好的工具。而我自己的配置最终也迁移到了 git 上。

插件的目录结构

所谓的 vim 插件不过一个特殊的文件夹,其主要的结构如下:

  • autoload/ 插件公共代码,vim 在执行 viml 的时候自动载入。:h autoload
  • colors/ 配色主题定义文件。:h colorscheme
  • ftplugin/ 专用代码,以文件类型加下划线开头,遇到对应文件自动执行。:h write-filetype-plugin
  • plugin/ 通用代码,自动执行。:h write-plugin
  • syntax/ 语法高亮定义文件。:h mysyntaxfile

一般的插件都有 autloadplugin 两个目录,简单的插件可能只有一个 plugin 目录,支持多种语言的插件会有一个 ftplugin 目录。vim 还支持很多其他功能的目录,大家可以通过 :h runtimepath 查看详细的说明文档。

vim 如何加载插件

在 vim 上执行 :set runtimepath,会有类似输出:

runtimepath=~/.vim,/usr/share/vi...files/after,~/.vim/after

这是一个逗号分割的路径列表,每个路径都是一个插件。vim 会依次执行相应的 viml 文件,载入各种定义文件。在没有插件管理器的年代,安装插件就是将插件对应的目录复制到 ~/.vim。但是,直接使用 ~/.vim 会将不同插件的目录混合到一起,所以很难去更新特定插件(是不是跟 linux 下的软件管理很相似?)。

这时候,各种插件管理器就粉墨登场了,而它们的实质就是在修改这个 runtimepath 变量

最简单的插件『管理器』

首先,创建一个 ~/.vim 目录,将创建 ~/.vim/vimrc 文件。然后,切换到 ~/.vim 执行 git init 完成准备工作。

vim 从 8.0 开始支持原生插件。 如果插件需要在 vim 启动的时候加载,就放到 ~/.vim/pack/*/start/ 目录。这里的 * 可以是任意目录名,我用的是 vendor,大家随意。如果想在需要的时候加载插件,那就放到 ~/.vim/pack/*/opt/ 目录,在需要的时候运行 packadd name 就可以加载了。

例如,我想在打开 TomL 文件的时候加载 toml 插件,则可以在 vimrc 加一行:

autocmd BufReadPre *.toml packadd toml

并且把 toml 插件放到 ~/.vim/pack/*/opt/toml 就行了。是不是更加简单。

不过要注意,一定得在 BufReadPre 的时候调用 packadd

复杂版本,不再推荐使用

编辑 ~/.vim/vimrc 文件,添加如下内容:

for name in systemlist('ls ~/.vim/vendor')
    let path = '~/.vim/vendor/'.name
    execute 'set runtimepath+='.path
endfor

这个 systemlist 的功能跟 system 很像,都是执行 shell 命令,并获取命令的输出结果。但是 systemclist 会将返回结果逐行拆分,生成一个 list 列表。这个 ls ~/.vim/vendor 就是列出 ~/.vim/vendor 目录下的所有目录名称。接着,脚本遍历这个列表,构造出插件的实际目录。最后,通过 execute 执行 set runtimepath+=$path 将插件的目录追加到 runtimepath 变量中。之后,vim 就会自动加载 ~/.vim/vendor 下的插件了。

这是一个只有 4 行的插件管理器。其实它不是一个合格的管理器,因为它只有加载功能,没有管理功能。我们用 git 实现这个管理功能。

git 操作

# 添加插件
git submodule add https://github.com/lvht/mru pack/vendor/mru

# 更新指定插件
git submodule update --init --remote pack/vendor/start/mru
# 更新所有插件
git submodule update --init --remote

# 删除插件
git rm pack/vendor/mru

# 恢复刚才删除的插件,此法可以用于临时禁用插件
git reset HEAD
git checkout .gitmodules
git submodule update --init pack/vendor/start/mru

最后,大家可以使用 git commit 提交自己的改动,并使用 git push 将自己的配置推送到 GitHub 等在线仓库保存。

结语

使用 git 管理 vim 插件具有简单、清晰、不依赖第三方插件的特点。但是,用户需要了解 git 的 submodule 概念、需要了解 vim 的 runtimepath 概念、需要手动执行插件下载后的后续操作(如 composer update:UpdateRemotePlugins 等),门槛比较高,只适合有一定基础的 vim 用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值