Вставлять комментарии автоматически в Vim - PullRequest
10 голосов
/ 04 июня 2009

Для моего кода SAS требуется следующий стиль комментариев:

/*
* This is the comment
*/

Мне удалось набрать эту команду (из Комментарий Vim Howto ):

:set comments=sl:/*,mb:*,elx:*/

Проблема в том, что когда я набираю эту команду set, я не знаю, как на самом деле получить эти комментарии для добавления в код. В инструкциях говорится, что нужно набрать /\*<enter>, но в режиме вставки это работает нормально, а в командном режиме это находит *.

Как мне заставить это работать, и есть ли лучшие способы, чем это, чтобы автоматически вставлять метки комментариев?

Ответы [ 5 ]

19 голосов
/ 04 июня 2009

По умолчанию Vim автоматически не вставляет новые строки или маркеры конца для вас. Вместо этого он позволяет легко вводить их при вводе, если 'formatoptions' содержит r:

:set formatoptions+=r

После этого начните вводить свой комментарий как обычно: "/*<Enter>" (в режиме вставки). После того, как вы нажмете клавишу Enter, на следующей строке должен автоматически появиться лидер комментария (звездочка и пробел), чтобы вы могли начать печатать. Когда ваш комментарий будет завершен, завершите его "<Enter>/"; <Enter> перемещается на следующую строку, а косая черта становится вторым символом конечного маркера. Да, он удалит место для вас, но только сразу после нажатия клавиши ввода.

Чтобы упростить редактирование комментариев этого типа, вы также хотите добавить символы c и / или o к formatoptions. Первая позволяет автоматически переносить комментарии, а вторая вставляет лидер комментариев, когда вы создаете новую строку внутри комментария с помощью команд обычного режима.

3 голосов
/ 04 июня 2009

Какой язык?

В C Vim автоматически загружает этот параметр для комментариев:

" Set 'comments' to format dashed lists in comments.
setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://

Что работает так, как вы ожидаете. Может быть, вам нужно добавить это в ftplugin для языка / расширения, которое вы используете?

1 голос
/ 19 марта 2012

Также не забудьте проверить стиль ваших комментариев (:set comments?), если вы используете несколько типов файлов. Например, PHP иногда будет использовать комментарии в стиле HTML <!-- ... -->, если есть встроенный HTML, поэтому ввод /* и последующее нажатие Enter окажутся безрезультатными.

В моем файле .vimrc есть следующее, чтобы убедиться, что комментарии PHP используются по умолчанию

au Bufenter *.php set comments=sl:/*,mb:*,elx:*/

HTML-код все равно будет правильно прокомментирован, однако пробелы в HTML-коде могут использовать соглашение о комментировании PHP (если вы используете такие плагины, как tComment ), и у вас не будет строчные HTML-комментарии, которые я не считаю возможными в любом случае.

1 голос
/ 04 июня 2009

этот скрипт Vim может решить вашу проблему - просто поместите его в папку "vimXY / syntax"

1 голос
/ 04 июня 2009

У меня есть это сокращение в моем .vimrc:

" /// -> insert javadoc comment
iab <buffer> /// /**^M *^M*/^[0A

, где ^ [0A - ctrl-v + up.
Введите /// в режиме вставки, чтобы получить комментарий типа

/**
 * 
 */
...