Vim 8.2 的诸多功能其实对普通用户来讲还不能直接使用,正式发布后,我抽了几个周末利用 popup 特性,给 vim 写了一套 ui 扩展。
众所周知,vim/emacs 这类文本编辑器向来以陡峭的学习曲线而闻名,其中最影响入门者的地方其实就是太多快捷键要记忆,我曾经把我弄好的功能很强的配置共享给我的同事使用,但是他们纷纷表示记不住那么多快捷键。
我开始思考这个问题,就算是我自己,自己配置了 200+ 多项快捷键,一些不常用的也很容易忘记,经常要打开 vimrc 查看下哪个功能的快捷键是什么?spacemacs / doom-emacs 的解决方案是在编辑器下方显示一个窗口,提示快捷键:
每按一个键,就会给出下一步提示,该功能也被很多初学者所喜爱。初学者至少可以利用这个功能方便的探索一下 spacemacs/doom-emacs 里面到底有些什么功能,而不用打开配置读一半天。
而 8.2 发布后,我写了一个更好的UI系统 vim-quickui 来做这件事情(点击查看动图):
看起来不就是把 GVim 的菜单系统给移植到了终端?没那么简单:
再也不怕忘记功能键了,也不用担心装了一堆插件,不用的话自己都忘记了装过了啥,这套菜单系统可以很好的展现你的配置到底包含了什么功能。
我把它绑定到 <space><space>
上面,连续按两次空格键就出现了,有人说熟练的话,使用菜单没有快捷键高效,其实根本不会,比如打开 NERDTree,我的操作就是:空格+空格+p+n,熟练的话,瞬间就敲完了, 根本不用看上面的菜单显示啥,根本不影响你的效率,而再你记不住时,它的帮助就非常大了。
欢迎尝试:https://github.com/skywind3000/vim-quickui
安装非常简单:
Plug 'skywind3000/vim-quickui'
使用就是调用 quickui#menu#install
注册目录项目,quickui#menu#open
打开目录:
" 清楚所有目录项目 call quickui#menu#reset() " 安装一个 File 目录,使用 [名称,命令] 的格式表示各个选项。 call quickui#menu#install('&File', [ [ "&New File Ctrl+n", 'echo 0' ], [ "&Open File (F3)", 'echo 1' ], [ "&Close", 'echo 2' ], [ "--", '' ], [ "&Save Ctrl+s", 'echo 3'], [ "Save &As", 'echo 4' ], [ "Save All", 'echo 5' ], [ "--", '' ], [ "E&xit Alt+x", 'echo 6' ], ]) " 每个项目还可以多包含一个字段,表示它的帮助文档,光标过去时会被显示到最下方的命令行 call quickui#menu#install('&Edit', [ [ '&Copy', 'echo 1', 'help 1' ], [ '&Paste', 'echo 2', 'help 2' ], [ '&Find', 'echo 3', 'help 3' ], ]) " 在 %{...} 内的脚本会被求值并展开成字符串 call quickui#menu#install("&Option", [ ['Set &Spell %{&spell? "Off":"On"}', 'set spell!'], ['Set &Cursor Line %{&cursorline? "Off":"On"}', 'set cursorline!'], ['Set &Paste %{&paste? "Off":"On"}', 'set paste!'], ]) " install 命令最后可以加一个 “权重”系数,用于决定目录位置,权重越大越靠右,越小越靠左 call quickui#menu#install('H&elp', [ ["&Cheatsheet", 'help index', ''], ['T&ips', 'help tips', ''], ['--',''], ["&Tutorial", 'help tutor', ''], ['&Quick Reference', 'help quickref', ''], ['&Summary', 'help summary', ''], ], 10000) " 打开下面选项,允许在 vim 的下面命令行部分显示帮助信息 let g:quickui_show_tip = 1 " 定义按两次空格就打开上面的目录 noremap <space><space> :call quickui#menu#open()<cr>
把上面这段放到 vimrc 中,然后每次需要显示菜单时连续两次空格就出现了:
嗯,差不多就是这个样子。
比起 spacemacs / doom-emacs 热键提示窗口的优势有几方面:
希望这个插件能够丰富 Vim 的交互方式,帮大家提高 工作效率,促进配置交流,让新用户可以更容易的接受老用户的配置文件,并且轻易的探索和学习有些什么功能可以使用。
当然,对老用户而言,再也不用记忆那么多快捷键了,忘记了某些键也不用一遍遍打开 vimrc 去复习功课了。
btw 最新版支持多种边框效果和主题:
总有一款适合你。
总之,Vim 8.2 中引入的一些列基础设施,能够极大的方便 Vim 未来的交互拓展,过不了多久我们应该能从各个插件的迭代版中体验到越来越多的便利。
--