Как вставить содержимое регистра с указанием номера строки? - PullRequest
2 голосов
/ 04 ноября 2019

Предположим, текстовый файл с 5 строками, каждая из которых имеет разрыв строки. Этот текстовый файл открывается в gvim. В командном режиме и курсоре в строке № 1 содержимое текущей строки заносится в регистр по умолчанию.

Как вставить / вставить рывок в другой номер строки, не перемещая курсор? Например, курсор находится в строке № 1. Янкированный контент должен быть помещен в строку № 4. Как это сделать в gvim, не перемещая курсор на строку № 4?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2019

Положение курсора является важной частью адресации команды ;для интерактивного редактирования не имеет смысла иметь команды, которые работают «на расстоянии». (Внутри Vimscript вы можете использовать низкоуровневые функции, такие как setline(), для изменения произвольных мест, но это не должно быть частью обычного использования, и здесь я не согласен с ответом @ SergioAraujo, который представляет эту команду как подходящую для интерактивного использования.)

Вместо этого Vim позволяет легко перейти в какое-то место и затем вернуться туда, откуда вы пришли. :help jumplist и особенно CTRL-O предназначены для этого. Ваш пример вставьте вам через 4Gp<C-O> или 4Gp&#96;&#96;;чтобы использовать команды Ex, вы должны явно установить точку перехода: m':4put<CR>&#96;&#96;. Преимущество работы со списком переходов состоит в том, что цель вставки теперь также стала его частью, поэтому вы также можете легко перейти к ней (с <C-I>).

0 голосов
/ 05 ноября 2019

Используйте команду :t (синоним :copy). Примеры:

:1t 4
:.t 4
0 голосов
/ 04 ноября 2019

Вот пример:

 :call setline(4, getline(4) . " " . @")

Мы устанавливаем строку 4 для самой строки 4 плюс пробел "" плюс регистр по умолчанию @ ".

На всякий случай, если вы хотите просто поместить содержимоетипа 1 по строке 4:

:call setline(4, getline(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...