1

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

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

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

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

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

2 ответа2

1

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

  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 . Лидер - это в основном пространство имен для ваших собственных отображений. Более подробную информацию можно найти здесь .

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .