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

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


person Thierry Lam    schedule 16.02.2010    source источник


Ответы (12)


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
person Dolph    schedule 16.02.2010
comment
классное хайку (5/7/5 слогов) - person Scott Pelak; 29.08.2019

spec описывает только один способ пометки комментариев:

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

Это все. Комментариев к блоку нет.

person Eugene Yarmash    schedule 16.02.2010

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

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

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

person Kyle Carlson    schedule 22.05.2013
comment
Если вы используете Eclipse с подключаемым модулем YEdit, стандартный переключатель блочных комментариев Eclipse ctrl- / будет переключать блочные комментарии в файлах yaml. - person Matt Gibson; 07.02.2015
comment
некоторая комбинация работает в eclipse ›4.6 со встроенной поддержкой YAML - person Faraz; 13.06.2016
comment
PhpStorm делает это как шарм - person McBurgerKong; 14.04.2017
comment
Также работает в intellij. - person Rahul Dabas; 27.04.2017
comment
Работает в IDE JetBrains: RubyMine и Gogland - person Rich Sutton; 26.08.2017
comment
Также работает в VSCode. - person Zain Patel; 30.07.2018
comment
Не работает в Sublime 3. См. stackoverflow.com/questions/17742781/ - person nedenom; 02.07.2019
comment
Я использовал ctrl + k, c для комментариев и ctrl + k , u, чтобы отменить комментарий в VSCode в Windows. Я не знал об этой более короткой комбинации клавиш, но с этого момента я буду ею пользоваться. - person John Mills; 29.11.2019
comment
Это отвечает на другой вопрос, чем заданный. Этот вопрос касается грамматики YAML, а не деталей реализации / пользователя, основанных на конкретном инструменте. (Примечание: рабочий процесс StackOverflow UX несколько ограничивает, но это сделано намеренно. Он разработан, чтобы предлагать прямые ответы на заданный вопрос, а не десятки разных ответов, обсуждающих ненужные детали.) - person David J.; 28.02.2021

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

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

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

  1. После ввода визуального блока с помощью Ctrl + v выберите многострочный столбец.
  2. Нажмите r, а затем #, чтобы закомментировать многострочный блок, заменяющий выделение, или Shift + i # Esc, чтобы вставить символы комментария перед выделением.
person knownasilya    schedule 09.07.2014
comment
наименьшее количество возможных размышлений;). "Vim, I did a thing. do it here, and here and here and here and here..." - person Conrad.Dean; 14.07.2014
comment
Вы также можете нажать : и ввести s/^/#, чтобы прокомментировать текущий выбор. - person hakunin; 28.03.2015
comment
@ Conrad.Dean попробуйте научитесь думать макросами. Хотя это практически то же самое для этой задачи, qqI#<esc>jq, затем @Q@Q@Q@Q@Q@Q (потому что быстрее не отпускать клавишу Shift), это привычка, которую вы можете распространить на гораздо более сложные задачи. Начни с малого. Часто тренируйтесь. Вскоре вы будете идеально создавать очень сложные макросы с первой попытки. Если вы очистите регистр первым qqq, вы можете включить @q перед последним q, чтобы получить рекурсию (но только до конца файла). - person Bruno Bronosky; 17.11.2017
comment
@BrunoBronosky: вместо всех этих @q, вы можете просто сделать 6@q или 10000@q, если хотите. - person bodo; 26.04.2018
comment
@bodo, вы действительно можете. Большинство команд vim принимают множители :h count. Но для меня визуально все больше 6, и я должен делать это вручную, потому что я не могу достоверно угадать это. Исключением является то, что я знаю, что у меня на моем терминале более 60 строк, поэтому я буду использовать это для оценки очень больших воспроизведений Marco. В качестве бонуса я предлагаю всем узнать о :h gn, которые упрощают . повторение результатов поиска. См. vimcasts.org/episodes/operating-on-search-matches- using-gn - person Bruno Bronosky; 26.04.2018
comment
Для раскомментирования: 10,15 с / ^ # / - person geek; 08.01.2020

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

If

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

тогда

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

Пример:

Вместо того

# This comment
# is too long

использовать

Description: >
  This comment
  is too long

or

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

Дополнительные преимущества:

  1. Если комментарии становятся большими и сложными и имеют повторяющийся узор, вы можете преобразовать их из текстовых блоков в объекты.
  2. Ваше приложение может в будущем прочитать или обновить эти комментарии
person Dimitrios Tsalkakis    schedule 26.04.2018
comment
Я предполагаю, что это ответ на вопрос священного Грааля; особенно если кто-то хочет, чтобы эти комментарии отображались в JSON или XML, если нужно преобразовать YAML в эти два. - person Mohd; 06.05.2020
comment
это как те var comment = 'this code does stuff' - person mTvare; 10.02.2021
comment
@mTvare Языки программирования подходят к комментированию иначе, чем языки сериализации данных. Конкретный шаблон, который выглядит глупо в одном домене, может быть лучшим выбором в другом. - person Dimitrios Tsalkakis; 11.02.2021

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

В Notepad ++ это можно сделать, щелкнув правой кнопкой мыши параметр «Заблокировать комментарий» для выделенного текста.

Woo Images!

person Nathan Meyer    schedule 04.05.2016
comment
Это не единственный способ. - person Charlie Egan; 05.08.2016
comment
И FWIW, сочетание клавиш для этого (в np ++) будет ctrl-shift-Q (в Windows. Для других платформ см. Меню редактирования ›комментарий / раскомментирование). - person charlie arehart; 20.07.2019
comment
Для вопросов, основанных на грамматике, правильный ответ требует только обсуждения грамматики. Другие подробности о конкретном инструменте (например, о конкретном текстовом редакторе) являются излишне конкретными и, следовательно, неприменимы к заданному вопросу. - person David J.; 28.02.2021

В Emacs есть comment-dwim (Делайте то, что я имею в виду) - просто выберите блок и выполните:

M-;

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

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

person Lester Cheung    schedule 20.11.2015
comment
Опять же, OP задал простой вопрос по грамматике YAML, а не вопрос текстового редактора. (Представьте, если бы каждый общий языковой вопрос содержал ответы на все используемые редакторы ... может быть, некоторым людям нужен такой мир, но это не дизайн StackOverflow.) - person David J.; 28.02.2021

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

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

Чтобы отменить комментарий, выполните те же действия.

person Venkatesh Dongergaonkar    schedule 05.07.2016
comment
Опять же, OP задал вопрос о грамматике YAML, а не вопрос о текстовом редакторе. - person David J.; 28.02.2021

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

ctrl + /

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

person Mark Wragg    schedule 30.01.2019
comment
Я признаю, что я сторонник организации здесь, на SO, поэтому я добавлю здесь свою критику, так же, как я добавил ее к другим ответам: текст здесь отвечает на другой вопрос, чем задан OP. Этот вопрос касается грамматики YAML, а не деталей реализации / пользователя, основанных на конкретном инструменте. (Примечание: рабочий процесс StackOverflow UX несколько ограничивает, но это сделано намеренно. Он разработан, чтобы предлагать прямые ответы на заданный вопрос, а не десятки разных ответов, в которых обсуждаются ненужные детали.) - person David J.; 28.02.2021

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

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

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

person paul    schedule 25.12.2014
comment
Я думаю, это работает для всех IDE JetBrains. Я знаю, что это работает и с PyCharm :) Работает и на Mac OSX. - person Subtubes; 24.11.2016
comment
На грамматический вопрос лучше отвечать напрямую, без лишнего упоминания текстового редактора. (Я бы очень предположил, что существует по крайней мере 25 широко используемых редакторов, очень примерно определяется как более 50 000 пользователей в год.) С другой стороны, есть это только одна доминирующая редакция YAML - третья редакция - выпущенная в 2009 году. - person David J.; 28.02.2021

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

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

Ctrl + K + U Раскомментировать блок

Также есть опция «Переключить блокировку комментариев», но у меня она не сработала. введите здесь описание изображения

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

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

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

Теперь осталось всего лишь #

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

person Blue Clouds    schedule 15.02.2020
comment
Я интерпретирую вопрос как вопрос, как сделать блочный комментарий в любом файле YAML; поэтому ответы не следует связывать с каким-либо конкретным инструментом. - person David J.; 28.02.2021
comment
@david j, можно ли вообще не упомянуть инструмент? В любом из этих ответов? - person Blue Clouds; 28.02.2021
comment
Да: правильный ответ нужен только для обсуждения грамматики YAML. См. Другой ответ на странице stackoverflow.com/a/2276604/109618. Другие детали, основанные на конкретном используемом текстовом редакторе, являются излишне конкретными и поэтому неприменимы для широкой аудитории. - person David J.; 28.02.2021
comment
По этой ссылке попадают те, кто пользуется текстовым редактором. Очевидно, что тот, кого вы указали, набрал 2000+ голосов, что, конечно же, является правильным ответом. Но тот, который набрал 159 голосов, посвящен превосходному редактору, а есть много других на разных инструментах. Или, другими словами, вам нужно сделать больше голосов против. - person Blue Clouds; 01.03.2021
comment
Рабочий процесс StackOverflow UX несколько ограничивает, но это сделано намеренно. Он разработан, чтобы предлагать прямые ответы на заданный вопрос, а не десятки разных ответов, основанных на инструментах. - person David J.; 01.03.2021

В файле .gitlab-ci.yml следующие работы:

Чтобы закомментировать блок (многострочный): выделите всю секцию блока ›Ctrl K C

Чтобы раскомментировать уже закомментированный блок (многострочный): выделите весь раздел блока ›Ctrl K U

person vinsinraw    schedule 15.01.2021
comment
Это сочетание клавиш будет работать для определенного редактора, а не для определенного файла YAML. - person Quentin; 15.01.2021
comment
@Quentin Я упомянул файл gitlab yaml, а не какой-либо другой файл yaml. Получить доступ и обновить файл .gitlab-ci.yaml можно в интерфейсе gitlab в любом браузере. - person vinsinraw; 16.01.2021
comment
Значит, это относится к браузеру-редактору Gitlab и конкретному файлу? Кажется, это не очень полезный ответ на общий вопрос о файлах YML. - person Quentin; 16.01.2021
comment
да. Вопрос был общим, и в нем не упоминался конкретный редактор или среда. Другие дали свои наблюдения относительно своим редакторам, таким как блокнот ++, возвышенный текст, редактор конвейеров Azure и т. д. Мое наблюдение было w.r.t. в файл gitlab yaml в среде gitlab, которая имеет собственный редактор конвейера. Может быть полезно для тех, кто работает над файлом gitlab yaml в среде gitlab. - person vinsinraw; 17.01.2021
comment
спасибо @vinsinraw, помог мне с редактором GitLab - person Yermek DevOps; 02.07.2021