Syntax 将行末注释添加到vim语法中

Syntax 将行末注释添加到vim语法中,syntax,comments,vim,Syntax,Comments,Vim,并非Vim中的每个命令都允许添加行末注释。有时,“作为一个参数是有效的,因此它是不明确的。但是,如果插入管道,则命令结束,您可以插入注释。因此,您实际上可以在vim中获得可靠的行尾注释: noremap ' ` |" Use single quote as alternate range key 整洁,对吗?但是syntax/vim.vim文件没有将此识别为行尾注释。我如何告诉vim识别此语法 我在syntax/vim.vim中找到了这个: syn match vimLineComment

并非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 '|".*$+'

有什么想法吗?

您不能对
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*".*$'
这可能会改变“评论”的突出显示,但我不建议这样做。

Background
  • 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中的问题
  • 在internet上搜索此功能很棘手,因为它会在通用编程上下文中找到与注释相关的链接,而与vimscript无关
另见 Vim帮助链接(直接进入Vim Cmdline模式):

  • :帮助vim脚本介绍|/一些命令的注释
  • :帮助:条形图
  • :帮助命令行模式
网页链接:


你绝对可以。看到烟斗了吗?在本例中,注释是一个单独的“命令”。试试看。我添加了一些介绍性文字以使上下文更清楚。@sideways我明白你的意思。就个人而言,它一点也不“整洁”。你为什么要这么做?顺便说一句,您必须排除
\|“foo
case,因为它可能是
rhs
中的文字管道,为什么这不是真正的重点。我的问题是如何在Vim的VimScript语法中添加行末注释标记。这些信息对于任何试图以任何语法添加/修复注释标记的人都很有用。如果你只是好奇的话,那是因为我的~/.vimrc中有一长串命令,所以我想用这种方式进行评论。这只是一种偏好。
syn匹配
。。。只有当我使用Neovim将行放入
~/nvim/after/syntax/vim.vim
时,行才对我有效。@Daniel我已经为我的主题创建了一个repo。我的主题细节:顺便说一句,我使用的终端是urxvt。但这个答案中的vim是GVIM