Заменить строку на строку, которая у меня есть в буфере в vi

Заменить строку на строку, которая у меня есть в буфере в vi

Я 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).

Связанный контент