2009-06-04 4 views
9

My SAS кода требует этого стиля комментариев:Вставка комментариев автоматически в Vim

/* 
* This is the comment 
*/ 

Я был в состоянии ввести эту команду (от Vim Comment Howto):

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

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

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

ответ

19

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

:set formatoptions+=r 

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

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

+0

Я, кажется, сломал свой vim - нажатие ' /' в конце моих комментариев просто приводит к прокомментированному косую черту и комментарий к следующей строке - то есть, vim не распознает '* /' как '* /'. –

+0

@ Daniel: Это поведение запускается символом 'x' в строке': set comments' выше. Подробнее см. В разделе ': help 'format-comments''. Чтобы узнать, где установлено значение bad '' comments'', используйте ': verbose set comments?'. – eswald

2

Какой язык?

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

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

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

+1

ОП упоминает код SAS – webwesen

1

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

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

где^[0A является Ctrl-V + вверх.
Типа /// в режиме вставки, чтобы получить комментарий, как

/** 
* 
*/ 
1

this Vim сценарий может решить вашу проблему - просто положить его в «vimXY/синтаксис» папка

1

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

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

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

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

Смежные вопросы