将行尾注释添加到vim语法

时间:2014-06-06 21:29:01

标签: syntax comments vim

并非Vim中的每个命令都允许您添加行尾注释。有时"作为参数有效,因此它是不明确的。 但是,如果您插入管道,该命令将结束,您可以插入注释。因此,您实际上可以在vim中实现可靠的行尾注释:

noremap ' ` |" Use single quote as alternate range key

干净吧?但syntax/vim.vim文件并未将此识别为行尾注释。我如何告诉Vim识别这种语法?

我在syntax/vim.vim中找到了这个:

syn match   vimLineComment  +^[ \t:]*".*$+  contains=@vimCommentGroup,vimCommentString,vimCommentTitle

我尝试将这样的内容添加到我的~/.vimrc,但没有任何效果。 VimScript很难。 :/

syntax match vimLineComment '|".*$+'

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您不能对map s

使用内嵌评论
:h map-comments
你会看到:

                            *map-comments*
It is not possible to put a comment after these commands, because the '"'
character is considered to be part of the {lhs} or {rhs}.

我希望这能回答你的问题。

好的,你可能有充分的理由这样做。

仅定义syn match vimLineComment是不够的,您必须覆盖vimMapRhs语法。所以这两行将|"foo bar突出显示为注释:

syn match vimMapRhs '.*\ze|\s*".*'
syn match vimLineComment '|\s*".*$'

enter image description here 这可能会改变“评论”的亮点,但我不建议这样做。

答案 1 :(得分:2)

背景

  • vim 7.3所有平台
  • vimscript语言(用于vim文件)

问题

vimscript语言支持注释,但行尾注释并不总是可预测的,因为行末注释可能被vim错误地解释为命令的一部分。

添加行尾注释在vimscript中是有问题的,因为它不适用于所有命令。

解决方案

  • 1)使用管道符:help :bar创建单独的Ex命令
    • 这是@sidewaysmilk列举的解决方案
  • 2)只需在下一行的相关vimscript命令下添加注释
  • 3)使用execute命令(参见:help :execute

陷阱

  • 解决方案1)是一种有点非常规的管道使用(又名:bar
  • 并非所有命令都支持管道字符(请参阅例如:help :execute
  • 解决方案2)可能不适合vimscript的可读性,并且它没有直接解决OP中的问题
  • 在互联网上搜索此功能非常棘手,因为它会显示与通用编程上下文中的注释相关的链接,与vimscript无关

另见

Vim帮助链接(直接将这些链接输入到vim Cmdline模式):

  • :help vim-script-intro | /comments for some commands
  • :help :bar
  • :help Command-line-mode

网络链接: