网站首页 > 开源技术 正文
之前我们定义了各种各样的快捷键,有为了增强功能自定义的,有针对插件的。数量一多有的时候就不那么容易记忆了。要是每次要去配置文件找我定义了哪些快捷键肯定会影响使用的。
本篇将要介绍一个插件,它是快捷键的一个词典,可以快速找到我们想要的快捷键
安装
使用 packer 的小伙伴可以使用如下代码进行安装
use {"folke/which-key.nvim"}
然后我们新建一个文件作为它的配置文件,并写入如下代码
require("which-key").setup({})
这个时候我们使用一些快捷键并且在中间停顿一下就可以看到它已经给出了相关的提示了
配置
默认的配置已经足够好了,基本不需要我们对它的行为做某些配置。它真正强大的地方在于,我们可以自己注册快捷键到显示中去。有时候不知道什么原因某些插件或者我们自定义的快捷键无法显示时可以使用这个方法注册到显示中。
假设我们现在有一个 <leader>ff 的键,它用来打开配置文件,但是它在 which-key 中没有显示出来,我们可以使用它的 register 方法来注册。该方法原型如下
register(mappings, opts)
它接收两个 table 参数,第一个表示需要注册的快捷键绑定,第二个是注册时的一些属性。
mappings 中的字段主要用来定义快捷键以及它的显示文字,后面我们通过例子来体会它的具体参数
opts 主要有下面几个参数
- mode: 表示模式,与nvim_set_keymap第一个参数中的模式相同
- prefix: 前置键,我们触发该条快捷键需要的前置键,一般使用leader作为前置键
- buffer: 命令对应的缓冲区id,用它来指定这个绑定作用于某个局部缓冲区
- silent: 同我们之间介绍的 nvim_set_keymap中的 silent含义
- noremap: 快捷键不进行递归传递
接下来我们通过几个例子来体会它的用法
local wk = require("which-key")
wk.register({
f = {
name = "myvimrc", -- 指定该快捷键组的名称
f = {":edit $MYVIMRC<CR>", "Open vimrc"}, -- 创建新的快捷键绑定
s = {":source $MYVIMRC<CR>", "reload vimrc", noremap = true},
-- 也可以只显示一个标签而不绑定到具体的快捷键
e = {"New File"}
}
}, {prefix = "<leader>"})
通过上面的代码我们绑定了 <leader>ff、<leader>fs 和 <leader>fe 这三个快捷键。我们可以尝试一下执行 <leader>ff 发现它确实打开了我们的配置文件,而且我们稍微停顿一下它也给出了提示
我们将这个改写一下
wk.register({
["<leader>"] = {
f = {
name = "myvimrc", -- 指定该快捷键组的名称
f = {":edit $MYVIMRC<CR>", "Open vimrc"}, -- 创建新的快捷键绑定
s = {":source $MYVIMRC<CR>", "reload vimrc", noremap = true},
-- 也可以只显示一个标签而不绑定到具体的快捷键
e = {"New File"}
}
}
}, {silent = true, noremap = true})
或者也可以改写为这样
wk.register({
["<leader>f"] = {
name = "myvimrc",
f = { ":edit $MYVIMRC<CR>", "Open vimrc" },
s = { ":source $MYVIMRC<CR>", "reload vimrc", noremap = true },
n = { "New File" },
},
})
wk.register({
["<leader>f"] = { name = "myvimrc" },
["<leader>ff"] = { ":edit $MYVIMRC<CR>", "Open vimrc" },
["<leader>fs"] = { ":source $MYVIMRC<CR>", "reload vimrc", noremap = true },
["<leader>fn"] = { "New File" },
})
到这里相信各位小伙伴应该已经明白了如何使用 mappings这个字段,它外层是每次按下的按键,最内层则用来绑定具体的命令和提示时显示的具体内容。一般来说我们用不到这个东西,但是如果希望动态地修改这个显示的内容,例如把快捷键归类,这个就很有用了。
我们可以对照一下之前定义的快捷键,发现分屏相关的快捷键并没有显示出提示,这个时候我们就可以将它添加到对应的快捷键中
wk.register({
["s"] = {
name = "split window",
v = { ":vsp<CR>", "vertical split window" },
h = { ":sh<CR>", "horizontal split window"},
c = { ":close<CR>", "close this window"},
o = { ":only<CR>", "close all but this window"},
},
}, {noremap = true, silent = true})
如果你不喜欢它用英文显示,还可以尝试 将所有英文提示改为中文,这是一个浩大的工程,有兴趣的小伙伴可以尝试一下
查看所有快捷键绑定
有时候我们不知道某个功能具体绑定到哪个键上面了,甚至不知道它有这个快捷键绑定,这个时候可以使用 :WhichKey 这个命令来检查一下。它默认有2个参数
- 第一个参数是一个字符串,查看所有以此字符串为开头的快捷键,例如使用 :WhichKey <leader>s 来查看所有以 <leader>s开头的快捷键
- 第二个参数一个是表示模式的字符,用来限定它只显示绑定在某个模式中的快捷键,例如 :WhichKey<leader>s n 只显示在 normal 模式下的快捷键
好了,本篇的内容到此就结束了。
猜你喜欢
- 2024-10-25 Linux编辑器——Vim,你知道多少?
- 2024-10-25 细述vim编码格式配置(vim中文编码)
- 2024-10-25 Vim 文本编辑工具详解(vim文本编辑器的使用)
- 2024-10-25 大白话 vim 教程-05-配置文件和插件
- 2024-10-25 为ansible yml设置vim(ansible部署lnmp)
- 2024-10-25 学会这些配置,让你的vim酷炫起来!文末有惊喜
- 2024-10-25 如何在 Vim 中进行文本选择操作和使用标志
- 2024-10-25 10款超牛Vim插件,爱不释手了(vim插件开发教程)
- 2024-10-25 Vim死忠粉必备 简约的Vim插件管理器Vim-Plug
- 2024-10-25 安装支持剪贴板的Vim版本,需要遵循这些步骤
你 发表评论:
欢迎- 最近发表
-
- 6月游戏推荐(二)(6月份新出的游戏)
- 37【源码】数据可视化:基于 Echarts + Python 动态实时大屏
- Kubernetes Kube-Proxy 组件 IPVS 模式工作原理及常用故障排查
- 《茶余饭后顶级英文歌曲精选》(茶余饭后的经典句子)
- rainx和MediaTek携手推出101产品生态,为5G FWA提供创新
- KAPITAL 推出蓝染风格 Aloha Shirt 系列
- 欧美经典怀旧歌曲Free loop-管不住的音符
- Mac 下php5.3-7.0的二进制包 ── PHP-OS
- 如何把一个Python应用程序装进Docker
- 为何推荐 JsonTree.js 做 JSON 可视化?
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)