Регистры "*
и "+
предназначены для буфера обмена системы ( :help registers
). В зависимости от вашей системы они могут выполнять разные действия. Например, в системах, которые не используют X11, например OSX или Windows, регистр "*
используется для чтения и записи в системный буфер обмена. В системах X11 можно использовать оба регистра. См. :help x11-selection
для получения более подробной информации, но в основном "*
аналогичен _PRIMARY_
-му выбору X11 (который обычно копирует то, что вы выбираете с помощью мыши, и вставляет среднюю кнопку мыши), а "+
аналогичен _CLIPBOARD_
-му выбору X11 (который является собственно буфером обмена).
Если все это прошло мимо вашей головы, попробуйте использовать "*yy
или "+yy
, чтобы скопировать строку в буфер обмена вашей системы. Предполагая, что у вас есть соответствующие параметры компиляции, один или другой должны работать.
Возможно, вы захотите переназначить это на что-то более удобное для вас. Например, вы можете поместить
vnoremap <C-c> "*y
в свой~/.vimrc
, чтобы визуально выбрать и нажать Ctrl + c , чтобы перейти в буфер обмена вашей системы.
Имейте в виду, что копирование/вставка из системного буфера обмена не будет работать, если :echo has('clipboard')
возвращает 0 . В этом случае vim не компилируется с функцией +clipboard
, и вам придется установить другую версию или перекомпилировать ее. Некоторые дистрибутивы linux по умолчанию обеспечивают минимальную установку vim, но если вы установите пакет vim-gtk
или vim-gtk3
, вы все равно сможете получить дополнительные функции.
Вы также можете взглянуть на опцию 'clipboard'
, описанную в :help cb
. В этом случае вы можете :set clipboard=unnamed
или :set clipboard=unnamedplus
, чтобы все операции выдергивания/удаления автоматически копировались в системный буфер обмена. Это может быть неудобством в некоторых случаях, когда вы храните что-то еще в буфере обмена, поскольку это переопределит его.
Для вставки вы можете использовать "+p
или "*p
(опять же, в зависимости от вашей системы и/или желаемого выбора), или вы можете сопоставить их с чем-то другим. Я печатаю их явно, но часто нахожусь в режиме вставки. Если вы находитесь в режиме вставки, вы все равно можете вставить их с правильным отступом, используя <C-r><C-p>*
или <C-r><C-p>+
. См. :help i_CTRL-R_CTRL-P
.
Также стоит упомянуть опцию paste
vim ( :help paste
). Это помещает vim в специальный «paste mode» , который отключает несколько других опций, позволяя вам легко вставлять в vim, используя знакомый ярлык вставки вашего эмулятора terminal или мультиплексора. (Просто введите :set paste
, чтобы включить его, вставьте содержимое, а затем введите :set nopaste
, чтобы отключить его.) Кроме того, вы можете использовать параметр pastetoggle
для установки кода ключа, который переключает режим ( :help pastetoggle
).
Я рекомендую использовать регистры вместо этих опций, но если они все еще слишком страшны, это может быть удобным обходным путем, пока вы совершенствуете свои отбивные vim.
Более подробную информацию см. в разделе :help clipboard
.