Предотвратить (g)vim автоматический отступ комментариев

Некоторое время назад мне пришлось поставить

filetype plugin on

в моем .vimrc для плагина, который я использую.

Но это вызвало изменение в автоотступе: всякий раз, когда я пишу комментарий «//», а затем нажимаю ввод, автоматический отступ vim автоматически вводит другой «//» в следующей строке.

// This is a comment. <ENTER>
// <-- vim automatically puts '// ' there

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

filetype plugin indent off

Но это не работает.


person knub    schedule 17.02.2012    source источник


Ответы (3)


Взгляните на :h formatoptions и :h fo-table. Опции, которые вам нужно отключить, это r и o. Их отключение не позволяет vim автоматически вставлять начало комментария (в данном случае «//») при нажатии клавиши ввода в режиме вставки или при нажатии o или O в обычном режиме.

person Michael Kristofik    schedule 17.02.2012
comment
set formatoptions=-or на самом деле не работал, хотя в документации так и написано. Сейчас я использую set formatoptions=tnq. Спасибо! stackoverflow.com/questions/6076592/ был полезный, к тому же. - person knub; 18.02.2012
comment
@knub set formatoptions-=o | set formatoptions-=r — это синтаксис, который работает для удаления опций. set formatoptions-=ro работает только в том случае, если они идут последовательно в строке опций как ro точно. - person piojo; 14.01.2019

Я отвечаю на ваш заголовок, а не на основную часть вашего вопроса, поскольку ваш заголовок приводит на эту страницу людей, которые хотят помешать Vim создавать отступы для комментариев.

Переменная, которая определяет, будет ли Vim автоматически отступать от нового символа, — это indentkeys. Я заметил неправильный отступ только в Python и Yaml, поэтому отключил автоматический отступ только для символа # в начале строки: :set indentkeys-=0#

Поскольку загрузка плагина отступа типа файла переопределит любые сделанные вами настройки .vimrc, вы можете настроить autocmd для изменения ключей отступа после создания или загрузки файла. Вот мои:

autocmd BufNewFile,BufReadPost * if &filetype == "python" | set indentkeys-=0# | endif
autocmd BufNewFile,BufReadPost * if &filetype == "yaml" | set expandtab shiftwidth=2 indentkeys-=0# | endif

См. :h ключи отступа.

Обратите внимание, что из-за (возможно) ошибки, если вы используете Neovim, вы также должны указать filetype plugin indent on, иначе тип файла не будет установлен.

person piojo    schedule 14.01.2019

См. :help 'formatoptions' - я знаю, как это раздражает!

Попробуй это:

:set fo-=or
person Peter    schedule 17.02.2012
comment
Мне действительно нравится эта функция. Время от времени мне приходится снова искать этот параметр, чтобы включить его включить. :-) - person Michael Kristofik; 17.02.2012