Буферы копирования копий vim
Предположим, у меня есть следующий текст (для ясности я пронумеровал строки), а курсор находится в начале 5-й строки:
1
2 var x = 1;
3 var y = 2;
4
5 if (true) {
6 print("Hey!");
7 }
Хорошо, теперь я пытаюсь вырезать строки 5, 6, 7 (все это "если" штуковина). Для этого я делаю:
Vjjd
. Теперь, кажется, я нахожусь в начале четвертой строки, которая является пустой строкой.
Мой вопрос: возможно ли в этот момент удалить 4-ю строку без потери ранее скопированных строк 5, 6, 7 (это "если" штука), так что я смогу вставить их где-нибудь еще, скажем, на 1-й строке позже?
Ответы
Ответ 1
Вы всегда можете yank или удалить в регистр, используя n, где n - это любой ключ. См. список доступных регистров в "справочных регистрах", некоторые из которых имеют особое значение. Например, вы можете сделать:
> "a3dd (to delete the last three lines into a register called a)
> dd (to delete the blank line)
> "ap (to paste the a register)
Вы также можете использовать объявление Vjj, чтобы соответствовать тому, что вы делали в исходном вопросе.
Ответ 2
Да: вы можете использовать регистр Blackhole buffer: type "_dd
Ответ 3
если ваша строка # 4 пустая строка, это легко, вам не нужно играть с регистром. просто выполните:
kJ
это означает:
k: move to #3
J: (shift-J) Join #3 and #4
или вы предпочитаете делать это в режиме INSERT
.
i<BS>
или
I<c-u>
, если эта строка не пуста:
- используя регистр для хранения 3 строк или # 4, например, @Derek предложил
- используя регистр черных дыр, например @Jan, предложите
- или используя нумерованный регистр.
скажем, теперь вы только что сделали 3dd
(без именованного регистра) и указали на непустую строку (# 4), вы могли бы непосредственно сделать dd
. 3 строки не исчезли. вы можете вставить их снова:
"2p