Идиоматичный способ заменить всю строку содержимым буфера обмена

Я использую vim-gtk вставка из буфера обмена так же проста, как вставка содержимого "+ регистр. Для каждой строки я мог бы заменить ее содержимым буфера обмена следующим образом:

1. V
2. d
3. o
4. <ESC>
5. pasting from clipboard (bound to some shortcut)

Недостатки, которые я вижу здесь:

  1. Переключение между нормальным режимом и режимом вставки (шаг 3)
  2. Переписывание регистров с содержимым мусора (шаг 2)

Так какой же идиоматический способ заменить строку содержимым буфера обмена?

2 ответа

Решение

Есть пара разных вещей, которые вы могли бы сделать. Я не знаю, являются ли какие-то из них более идиоматическими, но они короче.

  1. dd немного идиоматичнее, чем Vdтак что я бы рекомендовал использовать это вместо. ddO<C-r>+<esc> немного короче ddO<esc>"+p

  2. Вы могли бы сделать "+pkdd но это на самом деле не короче. Тем не менее, он остается полностью в обычном режиме, что приятно.

  3. Вы можете просто сделать V"+p, который является кратчайшим путем без отображения.

Конечно, если вы делаете это достаточно часто, вы всегда можете сделать свое собственное отображение, используя любой из этих методов. Например:

nnoremap <leader>p V"+p

<leader> Это всего лишь инструмент, который делает определение ваших собственных отображений более удобным. Например, если вы должны были сделать:

nnoremap p V"+p

то вы теряете возможность звонить по умолчанию p, Лидер - это в основном пространство имен для ваших собственных отображений. Более подробную информацию можно найти здесь.

Мне нужно это так часто, я написал плагин для упрощения и обеспечения максимальной скорости: ReplaceWithRegister.

Этот плагин предлагает два в одном gr команда, которая заменяет текст, покрытый объектом {motion} / text, всей строкой (ами) или текущим выделением, содержимым регистра; старый текст удаляется в регистр черной дыры, т.е. Он прозрачно обрабатывает многие угловые случаи и позволяет быстро повторить через стандарт . команда. Если вам это не нравится, на его странице есть ссылки на альтернативы.

Ваш вариант использования (заменить одну строку с содержимым буфера обмена) будет "+grr,

Другие вопросы по тегам