Можно ли отключить продолжение комментариев к следующей строке в Vim?

65

В Vim, если я набираю комментарий в кодовом файле и нажимаю Enter, он также автоматически делает перевод новой строки комментарием.

Например, в файле Ruby:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

В общем, это то, что я хочу, но не всегда. Как я могу временно отключить это автокомментирование?

Натан Лонг
источник
Временно, вы хотите команду, которая делает это один раз, или установить какой-то параметр, который будет длиться несколько команд, пока вы не включите его снова? Возможный дубликат сайта: stackoverflow.com/questions/4896003/…
Ciro Santilli ti 新疆 中心 法轮功 六四 事件

Ответы:

86

Я думаю, что вы ищете

:set formatoptions-=cro

От :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

t       Auto-wrap text using textwidth
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.
...
Майк Сепловиц
источник
13
Спасибо вам большое! Это поведение беспокоило меня - я перешел с Unix VI на Linux VIM. Для googlers: для постоянного использования см. Также stackoverflow.com/questions/6076592/… и введите эту строку в / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15
Не помогло; ввод по- /**<ESC>oпрежнему добавляет звезду на следующей строке.
Qix
Не работает Z
Felwithe
8

Временная установка опции «вставить» может делать то, что вы хотите, но она также отключает множество других функций Vim:

Используйте, :set pasteчтобы включить и :set nopasteвыключить его. Кроме того, вы можете использовать :set paste!для переключения.

Смотрите также:

:help 'paste'
:help 'pastetoggle'

(Эти команды набираются в одинарных кавычках.)

Heptite
источник
4
:set pasteвключить и :set nopasteвыключить
Пользователь
2
в качестве альтернативы вы можете использовать, :set paste!чтобы переключить ИСТИНА и ЛОЖЬ
Фелипе Альварес
3

Я ввожу неформатированные простые новые строки с <CR>.

Когда я хочу продолжить ввод следующей строки в закомментированном блоке, я просто использую Oклавишу как обычно.

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

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>
Себастьян Юланки
источник
1
Что вы имеете в виду <CR>? Конкретный ключ?
Питер Мортенсен
1
CR обозначает возврат каретки. На компьютерах, которые я использовал, он был сопоставлен с клавишей Enter.
Себастьян Юланки
0

Я закончил с этим:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

Он добавляет новую строку, удаляет все уже вставленные туда и оставляет курсор в режиме вставки в колонке с отступом, не вмешиваясь в параметры форматирования.

Ruben
источник
0

Этот ответ относится к Debian и некоторым его производным.

В дистрибутиве Debian значения Vim по умолчанию неразумны. Они расположены /usr/share/vim/vim80/defaults.vimи применяются после (!) /etc/vim/vimrcЗапуска. Единственный способ запретить Vim использовать его значения по умолчанию - убедиться, что он ~/.vimrcсуществует, даже если он пуст. Vim при запуске пытается прочитать .vimrc, но если файл не найден, он применяет настройки по умолчанию, которые приводят к множеству нежелательных действий, таких как интеграция с мышью, особенности копирования и вставки, автоматическая переноска комментариев и т. Д.

В Debian вы можете исправить ВСЕ, просто запустив touch ~/.vimrc

oᴉɹǝɥɔ
источник