![Заменить строку на строку, которая у меня есть в буфере в vi](https://rvso.com/image/23934/%D0%97%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%BD%D0%B0%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%2C%20%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D0%B0%D1%8F%20%D1%83%20%D0%BC%D0%B5%D0%BD%D1%8F%20%D0%B5%D1%81%D1%82%D1%8C%20%D0%B2%20%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B5%20%D0%B2%20vi.png)
Я cc
или dd
скопирую строку в буфер вставки. Затем я перехожу в новое место.
Я хочу заменить строку, которую вижу. Поэтому я набираю p
Down dd
.
Есть ли более простой способ (с меньшим количеством нажатий клавиш)?
решение1
Вы можете ввести текст V
, чтобы выделить строку, а затем p
заменить ее.
решение2
Другой способ сделать это:"_ddp
"_dd
удаляет текущую строку в нулевой буфер. Это не перезаписывает то, что вы только что скопировали, что я находил полезным много раз! Вставляет p
строку, которую вы скопировали ранее.
Возможно, это не короче с точки зрения количества нажатий клавиш, но знание того, что такая возможность есть, может быть очень полезным!
решение3
Ангус и Тор уже дали краткие ответы, поэтому вот вам бонусное исследование.
Если по какой-то причине вы хотите удалить перед вставкой, вы можете воспользоваться пронумерованными регистрами. Регистр "0
содержит текст, выдернутый последним y
или Y
, но не удаленный. "1
Сквозные "9
регистры хранят последние 9 удалений/вырезок, которые вы сделали. Итак:
- Если вы выдернули с помощью
yy
, вы можете заменить наdd"0P
. - Если вы вырезаете с помощью
dd
илиcc
, вы можете заменить наdd"2P
. (Неdd"1P
потому, чтоdd
заполняет"1
.)
Попробуйте :help "0
получить более подробную информацию.
решение4
Предположим, вы хотите заменить строку 1 на 3, что вы можете сделать:1m3|2d
Это фактически перемещает строку 1 в строку 3 и удаляет строку 2 (т.е. старую строку 3).