Идиоматичный способ заменить всю строку содержимым буфера обмена
Я использую vim-gtk
вставка из буфера обмена так же проста, как вставка содержимого "+
регистр. Для каждой строки я мог бы заменить ее содержимым буфера обмена следующим образом:
1. V
2. d
3. o
4. <ESC>
5. pasting from clipboard (bound to some shortcut)
Недостатки, которые я вижу здесь:
- Переключение между нормальным режимом и режимом вставки (шаг 3)
- Переписывание регистров с содержимым мусора (шаг 2)
Так какой же идиоматический способ заменить строку содержимым буфера обмена?
2 ответа
Есть пара разных вещей, которые вы могли бы сделать. Я не знаю, являются ли какие-то из них более идиоматическими, но они короче.
dd
немного идиоматичнее, чемVd
так что я бы рекомендовал использовать это вместо.ddO<C-r>+<esc>
немного корочеddO<esc>"+p
Вы могли бы сделать
"+pkdd
но это на самом деле не короче. Тем не менее, он остается полностью в обычном режиме, что приятно.Вы можете просто сделать
V"+p
, который является кратчайшим путем без отображения.
Конечно, если вы делаете это достаточно часто, вы всегда можете сделать свое собственное отображение, используя любой из этих методов. Например:
nnoremap <leader>p V"+p
<leader>
Это всего лишь инструмент, который делает определение ваших собственных отображений более удобным. Например, если вы должны были сделать:
nnoremap p V"+p
то вы теряете возможность звонить по умолчанию p
, Лидер - это в основном пространство имен для ваших собственных отображений. Более подробную информацию можно найти здесь.
Мне нужно это так часто, я написал плагин для упрощения и обеспечения максимальной скорости: ReplaceWithRegister.
Этот плагин предлагает два в одном gr
команда, которая заменяет текст, покрытый объектом {motion} / text, всей строкой (ами) или текущим выделением, содержимым регистра; старый текст удаляется в регистр черной дыры, т.е. Он прозрачно обрабатывает многие угловые случаи и позволяет быстро повторить через стандарт .
команда. Если вам это не нравится, на его странице есть ссылки на альтернативы.
Ваш вариант использования (заменить одну строку с содержимым буфера обмена) будет "+grr
,