您如何在YAML中阻止评论?


Answers:


2003

YAML支持内联注释,但不支持阻止注释。

来自维基百科

注释以数字符号(#)开头,可以在一行的任何地方开始,一直持续到该行的结尾

与JSON的比较,也来自Wikipedia

语法上的差异是微妙的,在实践中很少出现:JSON允许扩展字符集(如UTF-32),YAML要求在逗号,等号和冒号等分隔符后留一个空格,而JSON则不需要,并且一些非标准的JSON实现将语法扩展到包括Javascript的/* ... */注释。处理此类极端情况可能需要在将JSON解析为嵌入式YAML之前对JSON进行少量预处理。

# If you want to write
# a block-commented Haiku
# you'll need three pound signs

48
令人敬畏的句(5/7/5音节)
Scott Pelak


137

不想对此精打细算,但是如果您对编辑器使用Sublime Text,则步骤如下:

  1. 选择块
  2. cmd+ /Mac或ctrl+ /在Linux和Windows
  3. 利润

我以为其他编辑器也具有类似的功能。您正在使用哪一个?我很乐意进行一些挖掘。


8
也在Atom中工作
mndrix 2015年

3
如果您使用的是带有YEdit插件的Eclipse,则ctrl- /的标准Eclipse block-comment-toggler将在yaml文件中切换块注释。
马特·吉布森

1
eclipse> 4.6中的某些组合有效,并内置了对YAML的支持
Faraz

3
在JetBrains IDE中工作:RubyMine和Gogland
Rich Sutton

3
也可以在VSCode中使用。
Zain Patel '18

67

在Vim中,您可以执行以下操作之一:

  • 注释所有行: :%s/^/#
  • 评论行10-15: :10,15s/^/#
  • 将第10行注释到当前行: :10,.s/^/#
  • 注释行10结束: :10,$s/^/#

或使用可视块:

  1. 通过进入可视块后,选择多行列Ctrl+v
  2. 按下,r然后按下#以注释掉替换选择的多行块,或Shift+i#Esc在选择之前插入注释字符。

8
尽可能少的思考;)。 "Vim, I did a thing. do it here, and here and here and here and here..."
Conrad.Dean 2014年

4
您还可以点击:并键入s/^/#以评论当前选择。
hakunin

1
@ Conrad.Dean尝试学习在宏中思考。虽然几乎是相同的这个任务,qqI#<esc>jq然后@Q@Q@Q@Q@Q@Q(因为它的速度更快也不放过shift键),是一种习惯,你可以扩展到更复杂的任务。从小开始。经常练习。很快,您将完全尝试创建非常复杂的宏。如果您先清除寄存器qqq,则可以@q在最后一个寄存器之前包含它q以进行递归(但仅保留到文件末尾)。
布鲁诺·布罗诺斯基

@BrunoBronosky:除了所有这些@q,您可以简单地执行6@q10000@q根据需要进行操作。
bodo '18

2
@bodo的确可以。大多数vim命令接受:h count乘数。但是对我来说,视觉上超过6的任何东西都必须手工完成,因为我无法可靠地猜到它。例外是,我知道我的终端上有60多个行,因此我将用它来估计非常大的marco播放次数。作为奖励,我将建议大家学习:h gn使.搜索重复容易的方法。参见vimcasts.org/episodes/operating-on-search-matches-using-gn
Bruno Bronosky,

28

替代方法:

如果

  • 您的YAML结构具有定义明确的字段,供应用程序使用
  • 并且您可以自由添加不会干扰您的应用的其他字段

然后

  • 在任何级别,您都可以添加一个新的块文本字段,例如“ Description”或“ Comment”或“ Notes”等

例:

代替

# This comment
# is too long

采用

Description: >
  This comment
  is too long

要么

Comment: >
    This comment is also too long
    and newlines survive from parsing!

更多优势:

  1. 如果注释变得又大又复杂并且具有重复模式,则可以将其从纯文本块升级为对象
  2. 您的应用程序将来可能会阅读或更新这些评论

聪明!谢谢。
Justin Krause

我猜这是对这个问题的圣杯答案。特别是如果要从YAML转换为这两个,则希望这些注释以JSON或XML形式出现。
莫哈末

6

如果您将Eclipse与yedit插件(.yaml文件的编辑器)一起使用,则可以通过以下方式注释掉多行:

  1. 选择要注释的行,然后
  2. Ctrl+ Shift+C

要取消注释,请遵循相同的步骤。


6

在YAML中阻止评论的一种方法是使用文本编辑器(如Notepad ++)一次将#(注释)标记添加到多行中。

在Notepad ++中,可以使用“块注释”右键单击所选文本的选项来执行此操作。

Images图片!


18
这不是唯一的方法
查理·伊根

FWIW的快捷键(在np ++中)将为ctrl-shift-Q(在Windows上。对于其他平台,请参见edit> comment / uncomment菜单)。
查理·阿瑞哈特

5

对于Windows上的Ruby Mine用户:

在编辑器中打开文件选择块,然后按 Ctrl+ forward slash,您将选择以#开头的块。

现在,如果您要取消注释已注释的块,请再次按相同的组合键Ctrl+forward slash


1
我认为这适用于所有JetBrains IDE。我知道它也适用于PyCharm :)也适用于Mac OSX。
Edgar Martinez

5

Emacs有comment-dwim(执行我的意思)-只需选择该块并执行以下操作:

M-;

这是一个切换-用它注释和取消注释块。

如果未安装yaml-mode,则需要告诉Emacs使用井号(#)。


5

对于Visual Studio Code(VSCode)用户,注释掉多行的快捷方式是突出显示要注释的行,然后按:

ctrl + /

再次按ctrl+ /也可用于关闭一个或多个选定行的注释。


1

在Azure Devops浏览器(管道yaml编辑器)中,

Ctrl+ K+ C评论块

Ctrl+ K+ U取消注释块

也有一个“切换块注释”选项,但这对我不起作用。 在此处输入图片说明

还有其他“怪异”的方式:右键单击以查看“命令面板”或 F1

在此处输入图片说明

然后选择一个光标选项。 在此处输入图片说明

现在只是一个问题 #

甚至更聪明[ Ctrl+ k] + [ Ctrl+ c]

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.