Vim yank line затем вставьте его в строку - PullRequest
50 голосов
/ 15 октября 2011

Скажем, у меня есть следующие строки:

thing();
getStuff();

Я хочу взять getStuff(), используя y y , перейти к thing(), поместивкурсор на ( и ударил p , но так как я дернул всю строку, p вставит getStuff() туда, где она была.

Я знаюВы можете ^ D , чтобы получить строку getStuff(), тогда p будет делать то, что я хочу.Однако я считаю, что это гораздо более утомительно, чем y y .

Есть ли способ y y но вставьте строку inline ?

Ответы [ 4 ]

31 голосов
/ 15 октября 2011

Используйте y i w ("внутреннее слово yank") вместо y y для восстановления именно то, что вы хотите:

y y является построчным янки и захватит всю строку, включая возврат каретки, что вы можете увидеть, если посмотреть на безымянный регистр ("") в :registers, который используется в качестве источника для паст. См :help "":

Vim использует содержимое безымянного регистра для любой команды put (p или P) который не указывает регистр. Кроме того, вы можете получить к нему доступ с помощью name '"'. Это означает, что вы должны ввести две двойные кавычки. Запись в" " регистр пишет в регистр "0.

Дополнительным преимуществом для y i w является то, что вам не нужно быть в начале слова, которое вы дергаете!

30 голосов
/ 15 октября 2011

Проблема в том, что y y копирует всю строку, включая новую строку. Альтернативой может быть копирование с начала до конца строки, а затем вставка.

^ у $

  • ^ Перейти к первому символу строки.
  • y Дернуть до
  • $ Конец строки.

// Благодарность: тестеру и Идану Арье за ​​улучшения vim golf.

8 голосов
/ 15 октября 2011

Один из способов упростить процедуру работы с одним и тем же текстом - это определить отображения, которые имитируют команды выбора текстового объекта. Две пары приведенные ниже сопоставления - одно для визуального режима, а другое для ожидающего оператора режим - предоставьте способ выбрать все в текущей строке, кроме новой символ строки (al) и все, начиная с первого непустого символ текущей строки до последнего непустого символа включительно (il).

:vnoremap <silent> al :<c-u>norm!0v$h<cr>
:vnoremap <silent> il :<c-u>norm!^vg_<cr>
:onoremap <silent> al :norm val<cr>
:onoremap <silent> il :norm vil<cr>

Таким образом, вместо использования yy для копирования содержимого строки, которая должна быть вставлена по символам (а не по линиям) можно использовать команды yal или yil для восстановления и p для вставки, как обычно.

4 голосов
/ 19 сентября 2013

Менее эффективный, но простой метод:

  • v , чтобы выделить слово (слова),
  • y , чтобы восстановить выделенные слова,
  • p (в конце строки), который вы хотите вставить
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...