1

Есть ли в Vim эквивалент идеи "столбца цели" в Emacs?

Я хотел бы установить целевой столбец, поэтому, когда бы я ни переходил к новой строке в режиме вставки, курсор автоматически помещался в данный столбец.

например, у меня есть текст:

foo bar
foo bar
foo bar

Я набираю 123<space> между foo bar в первой строке и затем получаю (символ трубы показывает, где находится мой курсор):

foo 123 |bar
foo bar
foo bar

Я нажимаю стрелку вниз ... и я в конечном итоге здесь:

foo 123 bar
foo bar|
foo bar

Но я хочу закончить здесь:

foo 123 bar
foo |bar
foo bar

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

1 ответ1

4

Вы можете использовать макропозицию в столбце, а затем:

:map ,1 i123 <Esc>bj

... и продолжайте печатать , 1 ; или вы можете использовать функцию записи макросов Vim (:help recording):

qai123 ^[bjq

(который хранит макрос в регистре 'a', последний q заканчивает запись).

Затем вы можете использовать счетчик повторов (из соответствующего столбца) и вызывать записанный макрос с помощью @a:

100@a

Если вы хотите каждый раз вводить разный текст и иметь более умную функцию следующей строки, вы можете создать для этого макрос:

:imap ,, <Esc>j5^V|i

Этот ^ V является буквальным Control-V, введенным двойным вводом Control V ; следующий символ - это труба, которая переместит курсор в столбец 5.

Вы использовали бы этот макрос в режиме ввода, вводя цифры, затем пробел, затем ,, который переместил бы вас на следующую строку в столбце 5, все еще в режиме ввода. Затем , когда вы :iunmap ,,

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