<S-Insert> 映射到将剪贴板内容粘贴到文件类型中



无论处于normalinsert模式,我都希望使用<S-Insert>将剪贴板的内容粘贴到vim

我正在使用[Fedora 23,Gnome终端3.18.3,vim 7.4+xterm_clipboard]


我通常遇到的问题是:

  1. 我上网,在多条线上按Ctrl-C
  2. 回到插入或正常模式下的vim,我想粘贴而不进行缩进修改

我得到了一个缩进混乱的粘贴,但只有当文件被复制为类似r/python的filetype时(我想是因为定义了缩进)


我发现了什么

我找到了这个帖子(和其他帖子),但那不起作用。

如何使其工作

当我使用paste模式时,它工作例如,如果我做

  1. 我上网,在多条线上按Ctrl-C
  2. 在vim中:设置粘贴
  3. 我做<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 返回正常模式

最新更新