1

Я пишу текст в vim и не хочу превышать ограничение длины строки в 80 символов. Теперь я нахожусь на символе 72, который является пробелом, начинаю писать слово. Слово заканчивается на символе 82. Есть ли какая-то быстрая уловка, как заменить последний пробел новой строкой (или каким-то образом переместить последнее слово в новую строку) с курсором в конце этого слова, поэтому вместо

Esc hhhhhhhhhh i Enter Esc llllllllll i blah blah blah

это было бы

Esc magic i blah blah blah

?

2 ответа2

9

Vim может сделать это автоматически, если вы установите опцию 'textwidth' на 80. Вы можете сделать это, поместив эту строку в ваш файл .vimrc или _vimrc:

set textwidth=80

Это прервет строку в столбце 80 или перед ним при добавлении текста. Это не будет переформатировать весь абзац. Один из способов сделать это в режиме вставки - выполнить

<C-O>gqap

где <CO> означает удерживать клавишу Ctrl при наборе буквы o. gqap - команда для переформатирования (gq) текущего абзаца (ap). Когда эта команда будет выполнена, вы вернетесь в режим вставки с курсором, близким к тому, где он был раньше, но не обязательно в той же точке предложения. Вы можете прочитать больше об этих командах на

:help i_CTRL-O
:help gq
:help ap

Если автоматический разрыв строки в текстовой полосе работает не так, как вы ожидаете, возможно, вам придется изменить «форматирование». Увидеть

:help formatoption
:help fo-table

подробнее об этом.

Если вы не уверены, где находится файл .vimrc или _vimrc, вы можете открыть Vim и выполнить

:e $MYVIMRC
0

Есть много способов сделать это.

Клавиша b возвращает одно слово, а B - «большое» слово (например, b останавливается на тире). Чтобы вы могли нажать

esc B h r enter

если вы хотите вернуться в режим ввода, вы можете сделать

esc B i enter

Вы можете записать макрос, если вы склонны делать это часто. Чтобы записать макрос, вы нажимаете q, за которым следует любая буква (вы назначаете макрос для реестра этой буквы). Допустим, мы хотели записать первую последовательность в виде макроса и назначить ее в реестр z . вы бы сделали:

q z B h r enter q

теперь, когда вы нажимаете @z в обычном режиме, он будет возвращать слово и заменять символ перед ним новой строкой.

больше о макросах здесь http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .