显示有序的VIM键盘映射
是否可以显示当前vim环境的所有键盘映射的有序列表,如下所示:显示有序的VIM键盘映射,vim,Vim,是否可以显示当前vim环境的所有键盘映射的有序列表,如下所示: a: append b: back one word c: ... . . . ---- Ctrl mappings ---- <C-a> (I dont know...) . . . <C-p> Default mode for CrtlP ... ---- Alt mappings ---- ... a:append b:回一个字 c:。。。 . . . ----Ctrl映射---- (我不知道……
a: append
b: back one word
c: ...
.
.
.
---- Ctrl mappings ----
<C-a> (I dont know...)
.
.
.
<C-p> Default mode for CrtlP
...
---- Alt mappings ----
...
a:append
b:回一个字
c:。。。
.
.
.
----Ctrl映射----
(我不知道……)
.
.
.
CrtlP的默认模式
...
----Alt映射----
...
这对我非常有用。
:map
和:verbose map
显示会话中定义的映射列表,但它们的顺序不是这样的。顺便说一句,Vim并没有提供这么好的格式:恐怕您必须为此编写一个自定义函数
编辑
另外,请注意,a
、b
和朋友不是“映射”,因为CtrlP的
是映射<代码>:地图根本不会显示它们
所以,你的想法虽然有趣,但可能不是一行就可以做到的。您可以从:h index
中提取信息,添加:map
的结果,并尝试按照对您有意义的顺序安排所有这些内容,但这似乎不是一项简单的任务。听起来它非常适合python/ruby/php脚本,不是吗
endedit如果您想要当前映射的排序、可搜索列表,以便在其中查找未使用的键,可以执行以下操作:
function! s:ShowMaps()
let old_reg = getreg("a") " save the current content of register a
let old_reg_type = getregtype("a") " save the type of the register as well
try
redir @a " redirect output to register a
" Get the list of all key mappings silently, satisfy "Press ENTER to continue"
silent map | call feedkeys("\<CR>")
redir END " end output redirection
vnew " new buffer in vertical window
put a " put content of register
" Sort on 4th character column which is the key(s)
%!sort -k1.4,1.4
finally " Execute even if exception is raised
call setreg("a", old_reg, old_reg_type) " restore register a
endtry
endfunction
com! ShowMaps call s:ShowMaps() " Enable :ShowMaps to call the function
nnoremap \m :ShowMaps<CR> " Map keys to call the function
函数!s:ShowMaps()
让old_reg=getreg(“a”)”保存寄存器a的当前内容
让old_reg_type=getregtype(“a”)也保存寄存器的类型
尝试
redir@a“将输出重定向到寄存器a
以静默方式获取所有键映射的列表,满足“按ENTER键继续”
无声映射|调用feedkeys(“\”)
“重拨结束”结束输出重定向
vnew“垂直窗口中的新缓冲区
放置一个“放置”寄存器的内容
“按第4个字符列排序,该列为键”
%!排序-k1.4,1.4
最后,“即使引发异常也执行”
调用setreg(“a”,old_reg,old_reg_type)”恢复寄存器a
末日
端功能
通用域名格式!ShowMaps调用s:ShowMaps()“启用:ShowMaps以调用函数
nnoremap\m:ShowMaps“映射键以调用函数
这是一个强大的函数,用于创建带有排序输出:maps
的垂直分割。我把它放在我的vimrc
中
最后一行映射了两个键\m要调用函数,请随意更改
注意:@romainl提到,这将不包括像我这样的命令来插入文本这个答案可能会有帮助:帮助索引看起来不错,但它并没有显示我的插件快捷方式。我认为存在类似的东西,我的想法是用它来帮助VIM新手。稍后我将尝试编写一个脚本来完成此操作。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-谢谢你的反馈。我现在已经包括了代码。