Как добавить в буфер обмена зарегистрироваться в Vim?

21

Я уже знаю, что вы можете скопировать что-либо в регистр, используя: (плюс команда yank, delete и т. Д.)

"a

Я также понимаю, что вы можете добавить в реестр, используя:

"A

Кроме того, я понимаю, как скопировать что-то в регистр буфера обмена, используя:

"+

Что мне ввести, чтобы добавить в реестр буфера обмена?

Моя версия vim:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:59) Huge version with GTK2 GUI.
Джейсон Басанезе
источник

Ответы:

10

Для этого нет команды обычного режима, но вы можете просто добавить другой регистр и :letрегистр буфера обмена к содержимому этого регистра:

"Ay
"Ay
"Ay
:let @+ = @A
romainl
источник
1
Могу ли я поместить это в мой файл .vimrc?
Джейсон Басанезе
3
Обратите внимание, что let @+ = @Aотбрасывает тип регистра a. Правильный способ для копирования регистров что - то вроде этого: call setreg('+', getreg('a', 1, 1), getregtype('a')).
Сато Кацура
//, это на самом деле добавить хотя?
Натан Басанезе
// Почему вы перечислили три "Ayкоманды?
Натан Басанезе
Это могло быть четыре или двенадцать. Просто пример.
romainl
7

Вы можете позвонить setreg('+', lines, 'a'), но, насколько я могу судить, нет способа сделать это с помощью команд обычного режима. Для этого вы должны использовать один из регистров букв верхнего регистра.

lcd047
источник
Просто использование, :let @+ .= 'XXX'кажется, работает?
Мартин Турной
7
@Carpetsmoker Да и нет. В последнее время об этом говорилось на vim_dev, и, очевидно, вы не должны этого делать, хотя может показаться, что он работает в некоторых условиях. Я предполагаю, что это связано с содержимым регистра, имеющим тип (символ / строка / блок), и конкатенацией строк, не выполняющей необходимый учет. В любом случае это не имеет значения, это все еще не команда нормального режима.
lcd047