首页 > 其他分享 >从零开始配置 vim(17)——快捷键提示

从零开始配置 vim(17)——快捷键提示

时间:2022-08-19 10:26:35浏览次数:72  
标签:MYVIMRC vimrc 17 noremap 绑定 vim 快捷键 true

之前我们定义了各种各样的快捷键,有为了增强功能自定义的,有针对插件的。数量一多有的时候就不那么容易记忆了。要是每次要去配置文件找我定义了哪些快捷键肯定会影响使用的。

本篇将要介绍一个插件,它是快捷键的一个词典,可以快速找到我们想要的快捷键

安装

使用 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 模式下的快捷键

好了,本篇的内容到此就结束了。

标签:MYVIMRC,vimrc,17,noremap,绑定,vim,快捷键,true
From: https://www.cnblogs.com/lanuage/p/16601073.html

相关文章

  • 一本通 例2.17 分糖果
    #include<iostream>intmain(){intcan[5];for(inti=0;i<5;i++)std::cin>>can[i];for(inti=0;i<5;i++){intarv=can[i]/3;......
  • 1.一本通 例2.17 分糖果
    某幼儿园里,有5个小朋友编号为1、2、3、4、5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己......
  • 1017 [USACO 2007 Ope B]Bronze Cow Party dij 板子题
    链接:https://ac.nowcoder.com/acm/contest/26077/1017来源:牛客网题目描述OnecowfromeachofNfarms(1<=N<=1000)convenientlynumber......
  • [Oracle] LeetCode 1740 Find Distance in a Binary Tree
    Giventherootofabinarytreeandtwointegerspandq,returnthedistancebetweenthenodesofvaluepandvalueqinthetree.Thedistancebetweentwono......
  • vs2017 configurationmanager不存在 解决
    解决:点击【添加引用】【程序集】勾选如图备注:确定程序集和项目的FrameWork版本是否一致,确定类库框架是否正确......
  • 2022-8-17 mysql 第三天
    DQL查询语言子查询按照结果集的行列数不同,子查询可以分为以下几类:标量子查询:结果集只有一行一列(单行子查询)列子查询:结果集有一列多行行子查询:结果集有一行多列表子......
  • NetBeans IDE 快捷键
    1、Application应用程序的参数args的设置,在Build->SetMainProjectsConfiguration2、程序运行快捷键F63、@Deprecated4、代码自动完成Ctrl+Space,利用这个可以添加类的......
  • 黑莓Z10变砖后自己刷机 (2014-01-17 18:46:36)
     解决办法一:强制刷机刷机开始之前,请查看Z10的型号目前有STL100-1100-2100-3大家可以在手机设置,关于中找到,或者去说明书中查看。目前亚洲非洲版为100-1也就是得州处......
  • 17、生成器
    17、生成器  目录:一生成器与yield二yield表达式应用三三元表达式、列表生成式、生成器表达式3.1三元表达式3.2列表生成式3.3生成器表达式......
  • 17 Djaogo日期归档查询方式
    Django提供了一种方式:日期归档查询方式如果以后遇到,要用某年某月分组的话,那么可以使用Django提供的方式:#fromdjango.db.models.functionsimportTruncMonth,TruncDay......