Neovim 常用插件介绍

2021-06-26 vim

这里会列举常用的一些 NeoVIM 插件。

基础插件

图标

很多的插件为了美观会采用图标显示,可以使用 nvim-web-devicons 这个插件,依赖 NerdFont 字体扩展。

www.nerdfonts.com 中包含的符号,作为常用字体的补充,可以从 Font Downloads 页面选择合适的字体 (例如 Hack),然后下载并保存到 /usr/share/fonts 或者 ~/.local/share/fonts 目录下,执行如下命令。

$ fc-cache -f -v
$ fc-list | grep "FiraMono"

建议使用 FiraMono 字体,相比来说要跟全面一些。另外,还可以对字体的加载进行优化,这里不做过多介绍。然后,在终端 (如 Gnome Terminal) 中选择对应的字体即可。

在 nvim 中可以通过 lua print(vim.inspect(require'nvim-web-devicons'.get_icons())) 命令查看当前加载的字体。

配色

VIM 提供了一整套的配色方法,可以自己配置,但通常是使用一些常用的方案,这里使用 gruvbox 主题,更多的可以参考 Awesome VIM Colorschemes

文件浏览 nvim-tree

通常使用 nvim-tree.lua 作为文件浏览器,可以执行常见的操作,而且操作快捷键跟 VIM 的常用按键相似,可以通过 <leader>tt 快捷键打开,如下是常用快捷键:

o      打开关闭文件夹
a      创建文件
r      重命名
x      剪切
c      拷贝
p      粘贴
d      删除
g?     查看帮助文档
Ctrl-k 查看文件属性信息

搜索 telescope

插件 telescope.nvim 是一个王炸级别的查找插件,除了内置的功能之外,还提供了极高的扩展性,简单来说,一个搜索分成了三部分:A) 查找 Picker;B) 排序 Sorter;C) 展示 Previewer。

其中 Picker 决定了其支持查找的范围,内部已经支持绝大多数,包括了 Vim 内部的缓存、Tags、寄存器等等,其它的如文件、LSP、Git、Treesitter 等等。

可以对搜索的命令行进行定制。

require('telescope.builtin').find_files({find_command = {'rg', '--files'})

如下是依赖的一些常用插件。

rg

ripgrep 是一个基于行的搜索工具,当满足匹配规则时会打印该行,类似于 The Sliver Search、awk 等工具,而且遵循 gitignore 规则,其中的 live_grep grep_string 都依赖该命令行。

The Silver Search 也被称为 ag, 这是一个全文检索工具,可以替换 grep 以及 ack 类似的工具,非常适合查询大量文本文件,尤其是源代码的场景,不过也有段时间没有更新了,官方将其描述如下。

The Silver Searcher is a tool for searching code. It started off as a clone of Ack, but their feature sets have since diverged slightly. In typical usage, Ag is 5-10x faster than Ack.

直接从 ripgre 下载二进制文件即可,解压后将二进制文件 rg 复制到 PATH 目录下,最好将补齐文件也保存到 /etc/bash_completion.d 目录下,而文档保存在 /usr/share/man/man1 目录下,用作命令行使用。

详细中文文档可以从 GitHub 查看,因为该工具是用 Rust 语言开发的,其正则表达式语法可以参考 Rust Regex Syntax 中的介绍,如下是简单的示例。

fd

fd 类似于 find 用来快速查找文件,支持并发搜索以及 glob 语法,其内部支持文件搜索,不过仍建议使用该命令,可以通过如下命令安装。

----- 对于Debain,注意,这里的名字是fdfind,看看是否冲突可以通过软链接设置
# apt-get install fd-find
# cd /usr/bin && ln -s fdfind fd

fzf

这是一款使用 Go 语言编写的交互式的 Unix 命令行工具,可以用来查找文件、历史命令、本机主机名、进程、Git 分支等,所有的命令行工具可以将输出通过管道再利用 fzf 进行搜索,不过有个 fzf-native 的动态库适配版本。

其它

which-key.nvim

插件 folke/which-key.nvim 可以根据输入自动提示可用的命令,通过 vim.o.timeout=truevim.o.timeoutlen=300 设置超时时间,此时会自动提示,另外,还可以通过 Ctrl-W 查看。

还可以通过如下方式注册快捷键。

local wk = require("which-key")
wk.register(mappings, opts)

当前的按键映射可以通过 :map 命令查看,而默认的可以查看文档,也就是 :help index 命令。

其它插件