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

时间:2014-12-28 15:16:19

标签: vim keymapping

我知道我可以使用: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中的内联评论?

2 个答案:

答案 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")

哪个实现会将keycomment添加到数组中,以便您可以列出数组以声明您自己的映射。使用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,你不会。您查看插件的来源/文档并了解它们。从运行时到声明点都没有反向查找。