无论处于normal
或insert
模式,我都希望使用<S-Insert>
将剪贴板的内容粘贴到vim
我正在使用[Fedora 23,Gnome终端3.18.3,vim 7.4+xterm_clipboard]
我通常遇到的问题是:
- 我上网,在多条线上按Ctrl-C
- 回到插入或正常模式下的vim,我想粘贴而不进行缩进修改
我得到了一个缩进混乱的粘贴,但只有当文件被复制为类似r/python的filetype
时(我想是因为定义了缩进)
我发现了什么
我找到了这个帖子(和其他帖子),但那不起作用。
如何使其工作
当我使用paste
模式时,它工作例如,如果我做
- 我上网,在多条线上按Ctrl-C
- 在vim中:设置粘贴
- 我做
<S-Insert>
然后它工作,而不考虑模式或文件类型,我可以:set nopaste
另一种方法是从剪贴板粘贴"+p
,它工作(不干扰paste
模式)
潜在客户
问题是,我甚至不确定这是否与vim
有关,我想我不能像绘制一样绘制<S-Insert>
nnoremap <S-Insert> <NOP>
inoremap <S-Insert> <NOP>
vnoremap <S-Insert> <NOP>
并启动新的终端,然后vim并尝试<S-Insert>
,它仍然复制
我得到了一个粘贴有一个混乱的压痕
这是因为vim假设复制的文本是一个输入到其中的字符流
如果你可以在vim中使用系统剪贴板,请使用这些映射
:map <silent> <S-Insert> "+p
:imap <silent> <S-Insert> <Esc>"+pa
你可以使用找到vim是否支持剪贴板
vim --version
如果你看到"+xterm_clipboard",你就可以去了。与一起使用
set clipboard=unnamed " or
set clipboard=unnamedplus
如果不适合使用系统键盘,我的建议是编写一个函数,用set paste
粘贴模式,粘贴复制的文本,用set nopaste
返回正常模式