当前位置: 首页 > article >正文

【Vim Masterclass 笔记26】S11L46:Vim 插件的安装、使用与日常管理

文章目录

  • Section 11:Vim Plugins
  • S11L46 Managing Vim Plugins
    • 1 第三方插件管理工具
    • 2 安装插件使用的搜索引擎
    • 3 Vim 插件的安装方法
    • 4 存放 `Vim` 插件包的路径格式
    • 5 示例一:插件 NERDTree 的安装
    • 6 示例二:插件 ctrlp.vim 的安装
    • 7 示例三:插件 tabular 的安装
    • 8 示例四:插件 easy-motion 的安装与用法
    • 9 示例五:在其他包名下安装插件 vim-fugitive
    • 10 Vim 插件的删除
    • 11 本节要点回顾

写在前面
本篇为全套课程的倒数第二章内容,介绍了 Vim 插件的安装、使用及删除等日常操作。强大如 Vim 这样的封神级编辑器也离不开开源生态的强力支持。回看视频时发现一个很有趣的现象,其他同学在最后两节正课中基本没做任何笔记,可能觉得这些内容不重要就直接跳过了(比如当年的我自己)。这次用心整理知识点,才发现这些插件有很多让人拍案叫绝之处。例如 Fugitive 插件,不仅支持在 Vim 中执行 Git 原生命令,连我自定义的 Git 命令也能成功运行!还有可以快速定位的 easy-motion 插件,完全是一用就停不下来的节奏。古语有云:有善始者实繁,能克终者盖寡。希望我们都能成为那个坚持不懈的克终者!

Section 11:Vim Plugins


S11L46 Managing Vim Plugins


1 第三方插件管理工具

如果 Vim 版本早于 V7.x,安装 Vim 插件需要借助以下第三方插件管理工具:

  • vim-plug
  • Vundle
  • NeoBundle
  • Pathogen

而从 V8.0 以后,Vim 就自带插件管理工具。

本节仅介绍 V8.0 及以上版本的插件管理。


2 安装插件使用的搜索引擎

主要有两个:

  • 谷歌 网站:https://www.google.com/
  • VimAwesome 网站:https://vimawesome.com/

3 Vim 插件的安装方法

由于绝大部分 Vim 插件的源码都托管到了 GitHub 平台,通过 Git 来安装 Vim 第三方插件就成了最简便的安装方式。因此需要先安装 Git

不同平台安装 Git 的方法 ——

  • RedHatdef install git
  • Debianapt install git
  • Windowshttps://git-scm.com/

然后使用命令 :set packpath + Enter 查看插件存放的路径:

图 46-1:查看 Vim 默认存放插件的路径(Windows 版 v9.1)

【图 46-1:查看 Vim 默认存放插件的路径(Windows 版 v9.1)】


4 存放 Vim 插件包的路径格式

通用格式为:{packpath}/pack/{package-name}

这里的 package 包指代一个或多个插件。多个功能类似或具有协同作用的插件也可以用一个 package 包进行统一管理,例如 ~\vimfiles\pack\git-plugins 这个包(名称自拟)就可以用于存放多个与 Git 相关的 Vim 插件。

在同一个 package 包下,还可以分出 startopt 两个子文件夹,格式分别为:

  • {packpath}/pack/{package-name}/start/{plugin-name}
  • {packpath}/pack/{package-name}/opt/{plugin-name}

例如:

  1. /home/jason/.vim/pack/vendor/start/nerdtree
  2. /home/jason/.vim/pack/vendor/opt/ctrlp
  3. /home/jason/.vim/pack/myplugins/start/nerdtree

二者的区别在于,start 中的插件会自动加载;而 opt 则需要手动加载。

手动加载命令格式::packadd {plugin-directory-name}

例如,执行命令 :packadd vim-fugitive + Enter 后,Vim 会在 packpath 对应的路径中按照匹配规则 pack/*/opt/vim-fugitive 进行搜索。这样就实现了对插件 ~/.vim/pack/git-plugins/opt/vim-fugitive 的加载。

注意:package 包名对 Vim 而言并不那么重要,重要的是插件对应的 路径名


5 示例一:插件 NERDTree 的安装

NERDTree 是一款让用户在 Vim 中高效浏览和管理文件及目录的第三方 Vim 插件,GitHub 仓库详见:https://github.com/preservim/nerdtree

下面演示 NERDTree 的安装步骤(假设要求自动加载):

# 1. 创建相关文件夹
> (pwd).Path
C:\Users\ad\vimfiles
> mkdir -p pack/plugins/start | Out-Null
> cd pack/plugins/start
> (pwd).Path
C:\Users\ad\vimfiles\pack\plugins\start

# 2. 复制 NERDTree 仓库
> git clone https://github.com/preservim/nerdtree.git
Cloning into 'nerdtree'...
remote: Enumerating objects: 6269, done.
remote: Counting objects: 100% (94/94), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 6269 (delta 76), reused 38 (delta 38), pack-reused 6175 (from 4)
Receiving objects: 100% (6269/6269), 2.01 MiB | 697.00 KiB/s, done.
Resolving deltas: 100% (2847/2847), done.
> 

然后输入 vim + Enter 打开 Vim,并输入 :NERDTree + Enter 打开该插件:

图 46-2:以自动加载的方式测试安装并启动插件 NERDTree 看到的初始界面

【图 46-2:以自动加载的方式测试安装并启动插件 NERDTree 看到的初始界面】

根据截图,左侧的目录树可用导航键上下移动光标,按 O 可以展开文件夹(ShiftO 展开所有子文件夹、ShiftX 合拢所有文件夹),按 Enter 键打开光标所在文件。

使用命令 :NERDTree F:\your\target\path\ 还可以直接打开指定路径,轻松实现文件基本操作。

更多用法可按 ? 或查阅插件文档(不过多展开)。


6 示例二:插件 ctrlp.vim 的安装

ctrlp.vim 是另一个功能强大的第三方插件,允许用户通过简洁直观的界面快速搜索和打开文件、缓冲区等内容。

假设还是自动加载,安装过程如下:

# 1. 确认当前路径在 start 文件夹下
> (pwd).Path
C:\Users\ad\vimfiles\pack\plugins\start
# 2. 复制 ctrlp.vim 的 GitHub 代码库
> git clone https://github.com/ctrlpvim/ctrlp.vim.git
Cloning into 'ctrlp.vim'...
remote: Enumerating objects: 4316, done.
remote: Counting objects: 100% (185/185), done.
remote: Compressing objects: 100% (113/113), done.
remote: Total 4316 (delta 78), reused 166 (delta 71), pack-reused 4131 (from 1)
Receiving objects: 100% (4316/4316), 1.71 MiB | 323.00 KiB/s, done.
Resolving deltas: 100% (1668/1668), done.
> ls -n
ctrlp.vim
nerdtree
# 打开 Vim 进行测试
> vim 

打开 Vim 后,按 Ctrl + P 将进入该插件界面:

图 46-3:打开 Vim 后按【Ctrl + P】看到的插件主界面

【图 46-3:打开 Vim 后按【Ctrl + P】看到的插件主界面】

此时可以检索任意关键字定位目标文件。例如,输入 readme 得到:

图 46-4:输入 readme 后,插件快速筛选出包含 readme 的文件

【图 46-4:输入 readme 后,插件快速筛选出包含 readme 的文件】

此时按 Enter 键即可打开 ctrl.vim\readme.md 文件。

再按 Ctrl + P,输入 tx + CtrlX,可以水平分割窗口,并同时打开匹配关键词 tx 的第一个文件(即 ctrl.vim\doc\ctrlp.txt,如图 46-5 所示):

图 46-5:利用 ctrlp.vim 插件可轻松实现文件检索和多窗口展示

【图 46-5:利用 ctrlp.vim 插件可轻松实现文件检索和多窗口展示】


7 示例三:插件 tabular 的安装

前面两个插件都是自动加载生效的,再来看一个需要手动加载的插件安装操作。示例插件 tabularhttps://github.com/godlygeek/tabular)可以根据指定的分隔符格式化文本,实现文本和代码的快速对齐。

按手动加载进行安装,具体过程如下:

# 1. 检查当前所在路径
> (pwd).Path
C:\Users\ad\vimfiles\pack\plugins\start
# 2. 创建并进入 opt 文件夹,要求与 start 文件夹同级
> mkdir ../opt | Out-Null
> cd ../opt
> (pwd).Path
C:\Users\ad\vimfiles\pack\plugins\opt
# 3. 复制 tabular 对应的 GitHub 仓库
> git clone https://github.com/godlygeek/tabular.git
Cloning into 'tabular'...
remote: Enumerating objects: 179, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 179 (delta 8), reused 5 (delta 2), pack-reused 161 (from 1)
Receiving objects: 100% (179/179), 60.33 KiB | 41.00 KiB/s, done.
Resolving deltas: 100% (63/63), done.
> ls -n
tabular
# 4. 打开 Vim 进行测试验证
> vim

此时打开 Vim 后,直接运行 :Tab + Enter 并不会打开该插件,Vim 会报错。需要手动执行加载命令 :packadd tabular + Enter(或使用简写形式 :pa tabular + Enter)。

然后在 Vim 中加入一些测试内容:

图 46-6:演示 tabular 插件功能前的示例文本内容

【图 46-6:演示 tabular 插件功能前的示例文本内容】

将光标移至文件开头位置,执行命令 :Tab /| + Enter,测试内容将自动对齐:

图 46-7:利用 tabular 插件快速实现文本对齐

【图 46-7:利用 tabular 插件快速实现文本对齐】

此外,tabular 还支持更多配置选项,例如右对齐每列内容,并要求单词到制表符保持三个空格的距离,输入 :Tab /|/r3 + Enter 即可:

图 46-8:利用 tabular 实现更精细的对齐效果示意图

【图 46-8:利用 tabular 实现更精细的对齐效果示意图】


8 示例四:插件 easy-motion 的安装与用法

easy-motion 插件是对 Vim 原生 motion 操作的功能增强,安装过程与 NERDTree 插件相同,这里不再展开。

GitHub 仓库地址:https://github.com/easymotion/vim-easymotion.git

完成安装后,打开某个示例文件如 nav.txt 后,按两次 Leader 键(即反斜杠键 \) + 原生 motion 键即可启用该插件。例如,键入 \\J 将看到如下界面效果:

图 46-9:按两次 Leader 键 + J 键看到的界面效果截图

【图 46-9:按两次 Leader 键 + J 键看到的界面效果截图】

此时输入左侧红色的字符将快速定位到该字母所在的行。例如按 E 键将直接定位到第 11 行;此时再按 \\K 向上导航,则光标上方的行将同样出现快速导航字母:

图 46-10:按两次 Leader 键 + K 键看到的界面效果截图

【图 46-10:按两次 Leader 键 + K 键看到的界面效果截图】

同理,也可以快速定位到当前行的某个单词,例如按 \\W,将看到:

图 46-11:按两次 Leader 键 + W 键看到的界面效果截图

【图 46-11:按两次 Leader 键 + W 键看到的界面效果截图】

此时不仅可以实现同行单词的快速定位,下方各行的单词也能通过多个快捷键(黄色字符开头的组合键)快速定位。

若要检索单个字符,可以用 \\S,然后输入想要检索的目标字符,例如大写的 T,按回车后将看到:

图 46-12:用 easy-motion 插件实现单个字符的检索截图

【图 46-12:用 easy-motion 插件实现单个字符的检索截图】

可以看到,所有大写的 T 字符都标注了快捷键以便定位。


9 示例五:在其他包名下安装插件 vim-fugitive

前面四个插件都安装在了同一个 package 包下,最后一个演示以插件 vim-fugitive 为例,演示在不同 package 包下插件的安装及使用。

vim-fugitive 插件实现了 Vim 环境下对 Git 相关功能的集成。启用该插件后,用户可以直接在编辑器中执行 Git 命令并轻松管理代码库。

假设该插件需要安装到一个名为 git-stuff 的新 package 包下,具体安装过程如下:

# 1. Check current path
> (pwd).Path
C:\Users\ad\vimfiles\pack\plugins\start
# 2. Make directory git-stuff/start recursively
> mkdir -p ../../git-stuff/start | Out-Null
> cd ../../git-stuff/start
> (pwd).Path
C:\Users\ad\vimfiles\pack\git-stuff\start
# 3. Clone repo to install vim-fugitive plugin
> git clone https://github.com/tpope/vim-fugitive.git
Cloning into 'vim-fugitive'...
remote: Enumerating objects: 9359, done.
remote: Counting objects: 100% (2608/2608), done.
remote: Compressing objects: 100% (165/165), done.
remote: Total 9359 (delta 2483), reused 2447 (delta 2437), pack-reused 6751 (from 3)
Receiving objects: 100% (9359/9359), 2.74 MiB | 486.00 KiB/s, done.
Resolving deltas: 100% (4395/4395), done.
> ls -n
vim-fugitive
# 4. Open the test file with Vim editor
> vim vim-fugitive/README.markdown

此时将打开示例文件 vim-fugitive/README.markdown。输入 :Git blame + Enter 将启用该插件,执行与 git blame 同样效果的命令:

图 46-13:利用 Fugitive 插件实现在 Vim 中轻松运行各类 Git 命令(如 git blame 命令)

【图 46-13:利用 Fugitive 插件实现在 Vim 中轻松运行各类 Git 命令(如 git blame 命令)】

另外还需要注意的是,在 Vim 环境下,自动从不同的 package 包加载的 Vim 插件将同时生效。也就是说,此时按 Ctrl + P 将唤起 ctrlp 插件:

图 46-14:多个插件同时生效的编辑器效果截图(同时启用 Fugitive 与 ctrlp 插件)

【图 46-14:多个插件同时生效的编辑器效果截图(同时启用 Fugitive 与 ctrlp 插件)】


10 Vim 插件的删除

方法:直接删除插件文件夹即可。

例如删除 ctrlp 插件:

> cd ~/vimfiles/pack/plugins/start
> (pwd).Path
C:\Users\ad\vimfiles\pack\plugins\start
> ls -n
ctrlp.vim
nerdtree
vim-easymotion
# Remove the ctrlp plugin:
> rm -Recurse -Force ctrlp.vim
> ls -n
nerdtree
vim-easymotion
# Open Vim for verification
> vim

打开 Vim 后输入 Ctrl + P,将不再弹出 ctrlp 插件的工作界面。


11 本节要点回顾

  • Vim 插件旨在进一步增强 Vim 编辑器的原生功能,使其更容易操作;
  • 用谷歌或 VimAwesome 网站查找所需插件;
  • package 包可用于分组各 Vim 插件,包名自拟;
  • 要让 Vim 自动加载某插件,将其放到 start 文件夹即可;
    • 路径格式:{packpath}/pack/{package-name}/start/{plugin-name}
  • 同理,若要手动加载某插件,放到对应的 opt 文件夹即可;
    • 路径格式:{packpath}/pack/{package-name}/opt/{plugin-name}
    • 加载命令::packadd {plugin-name}:pa {plugin-name} + Enter
  • 插件的具体安装使用 Gitgit clone https://github.com/{plugin-path}
  • 插件的删除:直接删除该插件的文件夹即可。

http://www.kler.cn/a/520940.html

相关文章:

  • Oracle之Merge into函数使用
  • 如何实现滑动删除功能
  • 【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作
  • Django实现数据库的表间三种关系
  • 工业相机 SDK 二次开发-VC6.0 程序示例
  • Android BitmapShader简洁实现马赛克/高斯模糊(毛玻璃),Kotlin(三)
  • 【React】PureComponent 和 Component 的区别
  • C++和Python实现SQL Server数据库导出数据到S3并导入Redshift数据仓库
  • 基于paddleocr的表单关键信息抽取
  • Babylon.js 中的 setHardwareScalingLevel和getHardwareScalingLevel:作用与配合修改内容
  • Edge-TTS在广电系统中的语音合成技术的创新应用
  • Nginx配置中的常见错误:SSL参数解析
  • 自签证书的dockerfile中from命令无法拉取镜像而docker的pull命令能拉取镜像
  • 嵌入式基础 -- PCIe 控制器中断管理之MSI与MSI-X简介
  • 【Linux】线程、线程控制、地址空间布局
  • 【第一天】零基础入门刷题Python-算法篇-数据结构与算法的介绍(持续更新)
  • react native在windows环境搭建并使用脚手架新建工程
  • 深入剖析SpringBoot启动机制:run()方法详尽解读
  • STM32 光敏电阻传感器与蜂鸣器配置
  • Element使用表单重置如果不使用prop,重置无法生效
  • flink写parquet解决timestamp时间格式字段问题
  • 【已解决】黑马点评项目Redis版本替换过程的数据迁移
  • Flowmix/Docx 多模态文档编辑器: 让文档不止于文档
  • Protobuf序列化协议使用指南
  • 基于微信小程序的移动学习平台的设计与实现 移动学习平台(源码+文档)
  • Ubuntu20.04 运行 Cartographer demo bag