我正在编写一小组映射,以实现在vim和系统剪贴板/选择剪贴板之间复制和粘贴的功能。到目前为止,我与xclip
工作有很好的集成,但我正在使用的一些机器既没有xclip
,也没有图形/剪贴板启用的vim安装。
我想知道如果没有这些增强功能,我将如何与系统剪贴板集成。
如果不可能的话,我愿意接受部分解决方案,例如我目前有一个第二好的方法,它会向cat
移动,这允许我选择要复制的文本,但仍无法轻松粘贴。
以下是我.vimrc
的相关摘要(也使用映射复制):
" System yank and put
if executable('xclip')
" Yank and put with the system clipboard
nnoremap <silent> <leader>p :let @@ = system('xclip -o')<cr>""p
nnoremap <silent> <leader>P :let @@ = system('xclip -o')<cr>""P
nnoremap <silent> <leader>Y V""Y:call system('xclip -i', @")<cr>
vnoremap <silent> <leader>Y V""Y:call system('xclip -i', @")<cr>
vnoremap <silent> <leader>y ""y:call system('xclip -i', @")<cr>
vnoremap <silent> <leader>p <esc>:let @@ = system('xclip -o')<cr>gv""p
vnoremap <silent> <leader>P <esc>:let @@ = system('xclip -o')<cr>gv""P
else
" Display the text for easy selection
nnoremap <silent> <leader>Y V""Y:echo @"<cr>
vnoremap <silent> <leader>Y V""Y:echo @"<cr>
vnoremap <silent> <leader>y ""y:echo @"<cr>
endif
编辑:我没有使用:'<,'> w !cat
,因为它只能按行工作。使用寄存器作为中间人可以实现字符精度。
编辑:作为参考,这是我使用的其中一台计算机上vim --version|grep clipboard
的输出,它没有剪贴板支持:
-clipboard +iconv +path_extra -toolbar
+eval +mouse_dec +startuptime -xterm_clipboard