在.vimrc中显示特定映射的注释

在.vimrc中显示特定映射的注释,vim,keymapping,Vim,Keymapping,我知道我可以使用:nmap、:vmap、:imap命令来显示这三种模式的所有映射。但是,我想显示我对单个映射的注释 因此,假设我的vimrc中有以下条目: " Execute current line in bash nmap <F9> :exec '!'.getline('.')<CR> “在bash中执行当前行 nmap:exec'!'.getline('.')) 这也可能是这样的: nmap <F9> :exec '!'.getline('.')&

我知道我可以使用
:nmap、:vmap、:imap
命令来显示这三种模式的所有映射。但是,我想显示我对单个映射的注释

因此,假设我的
vimrc
中有以下条目:

" Execute current line in bash 
nmap <F9> :exec '!'.getline('.')<CR>
“在bash中执行当前行
nmap:exec'!'.getline('.'))
这也可能是这样的:

nmap <F9> :exec '!'.getline('.')<CR> " Execute current line in bash 
<F9>      Execute current line in bash 
nmap:exec'!'.getline('.')“在bash中执行当前行
我希望有一个命令,用于此映射,它看起来像这样:

nmap <F9> :exec '!'.getline('.')<CR> " Execute current line in bash 
<F9>      Execute current line in bash 
在bash中执行当前行
由于这可能只能使用自定义函数来完成,我从哪里开始?我如何解析
.vimrc
以仅剥离键映射及其相应的注释(我只完成了一些非常基本的Vim脚本)

我是否从
:help map comments
中正确理解了我应该避免在
.vimrc
中使用内联注释?

很难将注释“嵌入”到映射中而不影响其功能。这只会对我们自己的映射有所帮助,而不会对插件的映射有所帮助

相反,我建议学习(编写良好的)插件,它们为它们的(默认)键映射提供
:help
目标。因此,要记录映射,请创建一个帮助文件
~/.vim/doc/mymappings.txt
,其中包含:

                                 *<F9>*
<F9>      Execute current line in bash
**
在bash中执行当前行
:helptags~/.vim/doc
之后,您将能够通过
:h
查找注释。通过使用帮助文件,您可以使用语法突出显示、较长的多行注释,甚至示例,因此我认为这是一个更好、更直观的解决方案。

在不影响映射功能的情况下,很难将注释“嵌入”到映射中。这只会对我们自己的映射有所帮助,而不会对插件的映射有所帮助

相反,我建议学习(编写良好的)插件,它们为它们的(默认)键映射提供
:help
目标。因此,要记录映射,请创建一个帮助文件
~/.vim/doc/mymappings.txt
,其中包含:

                                 *<F9>*
<F9>      Execute current line in bash
**
在bash中执行当前行

:helptags~/.vim/doc
之后,您将能够通过
:h
查找注释。通过使用帮助文件,您可以使用语法突出显示、更长的多行注释甚至示例,因此我认为这是一个更好、更直观的解决方案。

就个人而言,我不会对这样的功能有太多用处,原因有二:第一,我总是有一个vim会话,带有一个记录缓冲区,其中包含了我肌肉记忆中尚未包含的所有提示/命令。其次,您可以使用
:map
,列出所有地图,这对于您的大脑学习vim来说总是一个很好的练习,从字面上阅读vim命令

话虽如此

由于这可能只能使用自定义函数来完成,我从哪里开始

…我想你可以想象使用一个带有原型的函数,例如:

AddMap(op, key, cmd, comment)
用法如下:

call AddMap("nmap", "<F9>", ":exec '!'.getline('.')<CR>", "Execute current line in shell")
当然,可以详细说明
ListMap()
函数的实现,以生成一个更“合适”的帮助文件,您可以在缓冲区中打开该文件。但这是一个如何实现接近您所寻找的功能的想法

注:这段代码主要是关于我如何解决这个问题的想法,这是一篇我没有真正尝试过的一次性文章

如何解析.vimrc以仅剥离键映射及其相应的注释(我只编写了一些非常基本的Vim脚本)

我认为这不是一个好的解决办法,我认为实现你的目标的更好的方法是我的建议。更简单、更明确,但不会显示所有映射。但是您的
.vimrc
中没有所有映射

我是否正确理解了:帮助映射我应该避免在.vimrc中使用内联注释的注释

更准确地说,您不应该在映射之后使用内联注释,因为它们将被解释为映射的一部分

如何获得由插件创建的映射


此外,使用
:map
,您就不需要了。您可以查看插件的源代码/文档并了解它们。从运行时到声明点的反向查找是不存在的。

就我个人而言,这种功能没有太多用处,原因有两个:第一,我总是有一个vim会话,带有一个笔记缓冲区,其中包含肌肉内存中尚未包含的所有提示/命令。其次,您可以使用
:map
,列出所有地图,这对于您的大脑学习vim来说总是一个很好的练习,从字面上阅读vim命令

话虽如此

由于这可能只能使用自定义函数来完成,我从哪里开始

…我想你可以想象使用一个带有原型的函数,例如:

AddMap(op, key, cmd, comment)
用法如下:

call AddMap("nmap", "<F9>", ":exec '!'.getline('.')<CR>", "Execute current line in shell")
当然,可以详细说明
ListMap()
函数的实现,以生成一个更“合适”的帮助文件,您可以在缓冲区中打开该文件。但这是一个如何实现接近您所寻找的功能的想法

注:这段代码主要是关于我如何解决这个问题的想法,这是一篇我没有真正尝试过的一次性文章

如何解析.vimrc以仅剥离键映射及其相应的注释(我只编写了一些非常基本的Vim脚本)

我认为这不是一个好的解决办法,我认为实现你的目标的更好的方法是我的建议。更简单、更明确,但不会显示所有映射。但是您的
.vimrc
中没有所有映射

我是否正确理解了:帮助映射我应该避免在.vimrc中使用内联注释的注释

更准确地说,您不应该在映射之后使用内联注释,因为它们将被解释为映射的一部分