我知道我可以使用:nmap, :vmap, :imap
命令显示这3种模式的所有映射。但是,我想显示我对单个映射的注释。
假设我的vimrc
中有以下条目:
" Execute current line in bash
nmap <F9> :exec '!'.getline('.')<CR>
这也可能如下所示:
nmap <F9> :exec '!'.getline('.')<CR> " Execute current line in bash
我想有一个命令,对于这个映射看起来像这样:
<F9> Execute current line in bash
由于这可能只能使用自定义功能完成,我从哪里开始?如何解析.vimrc
仅剥离键映射及其相应的注释(我只做了一些非常基本的Vim脚本)?
我是否从:help map-comments
正确理解我应该避免.vimrc
中的内联评论?
答案 0 :(得分:3)
在不影响其功能的情况下将注释“嵌入”映射非常困难。这只会对我们自己的映射有所帮助,而不是来自插件的映射。
相反,我建议学习(编写良好的)插件,这些插件为其(默认)键映射提供:help
个目标。因此,要记录您的映射,请使用以下命令创建帮助文件~/.vim/doc/mymappings.txt
*<F9>*
<F9> Execute current line in bash
:helptags ~/.vim/doc
后,您可以通过:h <F9>
查看评论。通过使用帮助文件,您可以使用语法突出显示,更长的多行注释,甚至示例,因此我认为这是一种更好,更直接的解决方案。
答案 1 :(得分:1)
就个人而言,我不会对这样的功能有多大用处,原因有两个:第一个,就是我总是有一个带有记笔记缓冲区的vim会话,其中包含我尚未提供的所有提示/命令肌肉记忆。其次,你可以使用:map
列出所有地图,它对你的大脑来说总是很好的练习vim来逐字读取vim命令。
有人说......
因为这可能只能使用自定义功能来完成,我从哪里开始?
......好吧我想你可以想象使用一个原型的函数,如:
AddMap(op, key, cmd, comment)
用过:
call AddMap("nmap", "<F9>", ":exec '!'.getline('.')<CR>", "Execute current line in shell")
哪个实现会将key
和comment
添加到数组中,以便您可以列出数组以声明您自己的映射。使用ListMap()
等函数。
let map_list = []
function! AddMap(op, key, cmd, comment)
" add to map list
insert(map_list, [op, key, comment])
" execute map assign
exec op.' '.key.' '.cmd
endfunction
function! ListMap()
for it in map_list
echo it[0] . '\t' . it[1] . '\t' . it[2]
endfor
endfunction
当然,人们可以详细说明ListMap()
函数实现,以生成更多&#34;正确的&#34;您可以在缓冲区中打开的帮助文件。但是,这是一个关于如何为接近您正在寻找的功能实现实现的想法。
N.B。:这个片段主要是关于我如何处理这个问题的一个想法,这是一个我没有尝试过的一次性写作。
如何解析.vimrc只剥离键映射及其相应的注释(我只做了一些非常基本的Vim脚本)?
我认为这不是一个好的解决方案,我认为实现目标的更好方法是我的建议。更简单,更明确,但它不会展示所有映射。但是你没有在.vimrc
中拥有所有映射。
我是否正确理解:帮助地图 - 我应该避免使用.vimrc中的内联注释吗?
更准确地说, 不会在地图后使用内联注释,因为它们将被解释为映射的一部分。
如何获取插件创建的映射?
此外,使用:map
,你不会。您查看插件的来源/文档并了解它们。从运行时到声明点都没有反向查找。