Подтвердить что ты не робот

Vim yank line затем вставьте его в линию

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

thing();
getStuff();

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

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

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

4b9b3361

Ответ 1

Используйте y i w ( "yank inner word" ) вместо y y, чтобы вытащить только то, что вы хотите:

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

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

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

Ответ 2

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

^ y $

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

//Кредит: тестер и Идан Арие для улучшения гольфа vim.

Ответ 3

Один из способов упростить процедуру работы с одним и тем же текстом - это определить сопоставления, которые имитируют команды выбора текстовых объектов. Две пары сопоставления ниже - один для визуального режима, а другой для ожидающего оператора mode - обеспечить способ выбора всего в текущей строке, кроме нового (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 для копирования содержимого строки, которая должна быть вставлена characterwise (а не linewise), можно использовать команды yal или yil, чтобы выдернуть и p для вставки, как обычно.

Ответ 4

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

  • v, чтобы выделить слово (ы),
  • y, чтобы вытащить выделенное слово (слова),
  • p (в конце строки) вы хотите вставить