Какими будут команды, чтобы иметь возможность делать CTRL + V на gVim?
В OS X я могу скопировать текст в vim, но в Windows я не получаю.
Я бы порекомендовал одно из следующих вместо установки пользовательских ярлыков:
Вставить из реестра:
"+++p
Вставить с помощью средней кнопки мыши
Вставить используя контекстное меню
РЕДАКТИРОВАТЬ:
В соответствии с этим ответом вам может потребоваться установить в буфер обмена безымянный, чтобы заставить работать вставку регистра.
set clipboard=unnamed
Из документации vim:
mswin.vim
Чтобы использовать стандартный способ MS-Windows CTRL-X, CTRL-C и CTRL-V, используйте сценарий $ VIMRUNTIME/mswin.vim. Вы можете добавить эту строку в ваш файл _vimrc: source $ VIMRUNTIME/mswin.vim
Хотя вы можете настроить привязки клавиш, как предлагает Отиэль, я думаю, что было бы более полезно понять, как копировать и вставлять работает в Vim, и узнать, что на самом деле означают эти команды.
Команды вырезания, копирования и вставки в Vim (d
, y
и p
) работают с так называемыми регистрами, которые содержат последний вырезанный или скопированный текст. По умолчанию они используют безымянный регистр ""
, а системный буфер обмена - "+
регистр.
Вместо этого вы можете добавить к регистру команды с регистром. Итак, чтобы скопировать из Vim в Windows, используйте "+y
, а для вставки из Windows - "+p
.
У вас также есть 26 регистров с именами от "a
до "z
которые вы можете использовать для чего угодно. Это может быть очень полезно при выполнении сложных операций редактирования.
Также есть больше специальных регистров, для получения дополнительной информации см :help registers
.
Добавьте следующее в ваш файл vimrc
(должен находиться в C:\Program Files\Vim\_vimrc
):
" CTRL-X = cut
vnoremap <C-X> "+x
" CTRL-C = copy
vnoremap <C-C> "+y
" CTRL-V = paste
map <C-V> "+gP
cmap <C-V> <C-R>+
exe 'inoremap <script> <C-V>' paste#paste_cmd['i']
exe 'vnoremap <script> <C-V>' paste#paste_cmd['v']
imap <S-Insert> <C-V>
vmap <S-Insert> <C-V>
Или используйте команду p
в vim, чтобы вставить содержимое буфера обмена.