Чи можна відключити продовження коментарів до наступного рядка у 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.

Взагалі, це те, що я хочу, але не завжди. Як я можу тимчасово вимкнути цю поведінку з автоматичним коментуванням?


Тимчасово ви хочете, щоб команда aa, яка виконує це одноразово, або встановила якусь опцію, яка триватиме декілька команд, поки ви не увімкнете її знову? Можливий крос дублікат сайту: stackoverflow.com/questions/4896003 / ...
Чіро Сантіллі新疆改造中心法轮功六四事件

Відповіді:


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
колись

8

Тимчасове встановлення параметра "вставити" може робити все, що завгодно, але також вимикає безліч інших функцій Vim:

Використовуйте :set pasteдля ввімкнення та :set nopasteвимкнення. Крім того, ви можете використовувати його :set paste!для перемикання.

Дивитися також:

:help 'paste'
:help 'pastetoggle'

(Ці команди вводяться одноцитатами.)


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.
Себастьян Jylanki

0

Я закінчив це:

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

Він додає новий рядок, видаляє все, що вже було вставлено туди, і залишає курсор у режимі вставки в відступному стовпчику, не псуючи параметри формату.


0

Ця відповідь стосується Debian та деяких його похідних.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.