Как вы блокируете комментарии в YAML?

1373

Как мне закомментировать блок строк в YAML?

Тьерри Лам
источник
в вопросе не указано, как это сделать с определенным текстовым редактором, поэтому, пожалуйста, продолжайте отвечать на него с точки зрения правил и свобод синтаксиса yaml.
Александр Стор

Ответы:

2009

YAML поддерживает встроенные комментарии, но не поддерживает блочные комментарии.

Из Википедии :

Комментарии начинаются со знака числа ( #), могут начинаться в любом месте строки и продолжаться до конца строки

Сравнение с JSON, также из Википедии :

Различия в синтаксисе незначительны и редко возникают на практике: JSON допускает расширенные наборы символов, такие как UTF-32, YAML требует пробел после разделителей, таких как запятая, равно и двоеточие, а JSON нет, а некоторые нестандартные реализации JSON расширяют грамматику до включить /* ... */комментарии Javascript . Обработка таких крайних случаев может потребовать легкой предварительной обработки JSON перед синтаксическим анализом как встроенного YAML.

# If you want to write
# a block-commented Haiku
# you'll need three pound signs
Дольф
источник
49
удивительное хайку (5/7/5 слогов)
Скотт Пелак
224

Спецификация описывает только один способ маркировки комментариев:

Явный комментарий отмечен знаком «#».

Это все. Там нет блочных комментариев.

Евгений Ярмаш
источник
137

Не пытаясь быть умным об этом, но если вы используете Sublime Text для своего редактора, выполните следующие шаги:

  1. Выберите блок
  2. cmd+ /на Mac или ctrl+ /на Linux и Windows
  3. прибыль

Я полагаю, что другие редакторы также имеют подобную функциональность. Какой вы используете? Я был бы рад покопаться.

Кайл Карлсон
источник
8
Работает и в Atom
mndrix
3
Если вы находитесь в Eclipse с плагином YEdit, стандартный блок-комментарий-переключатель Eclipse ctrl- / будет переключать комментарии блоков в файлах yaml.
Мэтт Гибсон
1
некоторая комбинация работает в eclipse> 4.6 со встроенной поддержкой YAML
Faraz
3
Работает в IDE JetBrains: RubyMine и Gogland
Рич Саттон,
3
Работает в VSCode тоже.
Зейн Патель
67

В Vim вы можете выполнить одно из следующих действий:

  • Комментарий всех строк: :%s/^/#
  • Строки комментариев 10 - 15: :10,15s/^/#
  • Строка комментария 10 к текущей строке: :10,.s/^/#
  • Строка комментария 10 до конца: :10,$s/^/#

или используя визуальный блок:

  1. Выберите многострочный столбец после ввода визуального блока с помощью Ctrl+v.
  2. Нажмите, rа затем, #чтобы закомментировать многострочный блок, заменяющий выделение, или Shift+i#Escвставить символы комментария перед выделением.
knownasilya
источник
9
наименьшее количество мыслей возможно;). "Vim, I did a thing. do it here, and here and here and here and here..."
Conrad.Dean
4
Вы также можете нажать :и напечатать, s/^/#чтобы прокомментировать текущий выбор.
hakunin
1
@ Conrad.Dean попытаться научиться мыслить в макросах . Хотя практически то же самое для этой задачи, qqI#<esc>jqто @Q@Q@Q@Q@Q@Q(потому что это быстрее , чтобы не отпускать клавишу смены), привычка вы можете расширить до более сложных задач. Начните с малого. Практикуйтесь часто. Вскоре вы отлично создадите очень сложные макросы с первой попытки. Если вы сначала очистите регистр qqq, вы можете включить его @qдо последнего, qчтобы получить рекурсию (но только до конца файла).
Бруно Броноски
@BrunoBronosky: вместо всего этого @q, вы можете просто сделать 6@qили, 10000@qесли хотите.
18:00
2
@ Бодо, ты действительно можешь. Большинство команд vim принимают :h countмножители. Но для меня, визуально все, что старше 6, и я должен сделать это вручную, потому что я не могу надежно угадать это. Исключением является то, что я знаю, что у меня более 60 строк на моем терминале, поэтому я буду использовать это для оценки очень больших воспроизведений marco. В качестве бонуса я собираюсь предложить всем узнать о :h gnтом, как можно легко делать .повторы при поиске совпадений. См. Vimcasts.org/episodes/operating-on-search-matches-using-gn
Бруно Броноски
29

Альтернативный подход:

Если

  • ваша структура YAML имеет четко определенные поля, которые будут использоваться вашим приложением
  • И вы можете свободно добавлять дополнительные поля, которые не будут портить ваше приложение

тогда

  • на любом уровне вы можете добавить новое блочное текстовое поле с именем типа «Описание» или «Комментарий» или «Заметки» или что-то еще

Пример:

Вместо

# 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. Ваше приложение может - в будущем - прочитать или обновить эти комментарии
Димитриос Цалкакис
источник
Умный! Спасибо.
Джастин Краузе
Я думаю, что это ответ Холли Грааля на вопрос; особенно если кто-то хочет, чтобы эти комментарии появлялись в JSON или XML, если нужно преобразовать YAML в эти два.
Мохд
7

Один из способов заблокировать комментирование в YAML - использовать текстовый редактор, такой как Notepad ++, чтобы добавить тег # (comment) к нескольким строкам одновременно.

В Notepad ++ вы можете сделать это, используя опцию щелчка правой кнопкой мыши «Block Comment» для выделенного текста.

Ву изображения!

Натан Мейер
источник
18
Это не единственный способ .
Чарли Иган
И FWIW, сочетание клавиш для этого (в np ++) было бы ctrl-shift-Q (в Windows. Для других платформ см. Меню «Правка»> «Комментарий / комментарий»).
Чарли Арехарт
6

Если вы используете Eclipse с плагином yedit (редактор для файлов .yaml), вы можете закомментировать несколько строк:

  1. выбирая строки для комментариев, а затем
  2. Ctrl+ Shift+C

И чтобы оставить комментарий, выполните те же шаги.

лучшее еще впереди
источник
5

Для пользователей Ruby Mine в Windows:

Откройте файл в редакторе. Выберите блок и нажмите Ctrl+ forward slash, у вас будет выбран блок, начинающийся с #.

Теперь, если вы хотите откомментировать комментируемый блок, снова нажмите ту же комбинацию клавиш Ctrl+forward slash

Павел
источник
1
Это работает для всех JetBrains IDE, я думаю. Я знаю, что это работает и для PyCharm :) Работает и на Mac OSX.
Эдгар Мартинес
5

В Emacs есть comment-dwim (Do What I Mean) - просто выберите блок и выполните:

M-;

Это переключатель - используйте его для комментирования и раскомментирования блоков.

Если у вас не установлен yaml-режим, вам нужно указать Emacs использовать хеш-символ (#).

Лестер Чунг
источник
5

Для пользователей кода Visual Studio (VSCode) ярлык, чтобы закомментировать несколько строк, должен выделить строки, которые вы хотите закомментировать, а затем нажать:

ctrl + /

Повторное нажатие ctrl+ /также можно использовать для отключения комментариев для одной или нескольких выбранных строк.

Марк Рэгг
источник
1

В браузере Azure Devops (конвейерный редактор yaml),

Ctrl+ K+ CБлок комментариев

Ctrl+ K+ UУдалить комментарий

Также есть опция «Toggle Block Comment», но у меня это не сработало. введите описание изображения здесь

Есть и другие «странные» способы: щелкните правой кнопкой мыши, чтобы увидеть «Командная палитра» или F1

введите описание изображения здесь

Затем выберите опцию курсора. введите описание изображения здесь

Теперь это просто вопрос #

или даже умнее [ Ctrl+ k] + [ Ctrl+ c]

Синие облака
источник