星期一, 七月 21, 2025

VIM学习笔记 快捷键速查表(vim-which-key)

 Vim提供了一种不依赖鼠标的快速高效的编辑体验,通过大量的键盘快捷键,可以快速地进行文本移动、编辑、修改等操作。然而如何记忆和使用种类繁多的快捷键,也形成了另一种挑战。

打开vimrc配置文件,然后使用以下命令,可以列示所有F功能键的当前定义:

:for i in range(1, 12) | execute("map <F".i.">") | endfor

map_list_FunKey

使用以下命令,可以将键盘映射(和修改过的选项),写入到当前目录下的_exrc文件:

:mk

map_list_mk_exrc

更高效的方式,则是使用vim-which-key插件,可以在弹出窗口(popup)中列示当前所有快捷键的定义,大大减轻了记忆各种快捷键的负担。

安装配置

推荐使用minpac等插件管理器,来安装GitHub上的vim-which-key插件。(请参阅官方安装文档

假设使用逗号键,作为前缀键(leader)

let mapleader=","

vimrc配置文件中设置timeoutlen选项,指定在按下leader键后,如果在约定时间后没有进一步的按键操作,则会在弹出窗口中显示快捷键绑定信息:

set timeoutlen=500
nnoremap <silent> <leader> :<c-u>WhichKey '<Space>'<CR>
nnoremap <silent> <localleader> :<c-u>WhichKey  ','<CR>

定义快捷键字典

首先,需要创建一个空字典:

let g:which_key_map = {}

vim-which-key插件能够自动识别已经存在的leader快捷键,你可以为其添加文字描述;使用'name'关键字,可以定义二级字典组,以便于为捷键分类显示。

let g:which_key_map.s = { 'name' : '+source' }
let g:which_key_map.s.v = 'Source-vimrc'
let g:which_key_map.t = { 'name' : '+tab' }
let g:which_key_map.t.v = 'Tab-vimrc'

对于尚不存在的快捷键,也可以直接定义命令和描述:

let g:which_key_map.f = {
      \ 'name' : '+file' ,
      \ 'n' : ['fn' , 'File Name to Clipboard'] ,
      \ 'p' : ['fp' , 'Path Name to Clipboard'] ,
      \ }

更多vim-which-key插件配置代码,请参阅实例

显示快捷键列表

在常规模式下点击前缀键(leader),将在弹出窗口(popup)中显示一级菜单,其中“+”开头的菜单项表示包含子菜单:

Popup

点击“+”后的首字母,比如",b"将显示缓冲区(buffer)子菜单下的快捷键信息:

Group

点击退格键<BACKSPACE>,将返回上一级菜单;点击<ESC>键,将关闭弹出窗口并返回常规模式。

Ver: 250716 | YYQ<上一篇 | 目录 下一篇>