Vim yank line затем вставьте его в линию
Скажем, что у меня есть следующие строки:
thing();
getStuff();
Я хочу взять getStuff()
с помощью y y, перейдите к thing()
, поместив курсор на (
и нажмите p, но так как я дернул всю строку, p будет вставьте getStuff()
назад, где он был.
Я знаю, что вы можете ^ D получить строку getStuff()
, тогда p сделает то, что я хочу. Однако я считаю, что это намного утомительно, чем y y.
Есть ли способ y y, но вставьте строку inline?
Ответы
Ответ 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 (в конце строки) вы хотите вставить