映射<s-insert>以在文件类型中粘贴剪贴板的内容

时间:2016-05-06 16:57:14

标签: vim key-bindings gnome-terminal

我想使用<S-Insert>将剪贴板内容粘贴到vim,无论我处于normal还是insert模式

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

我遇到的常见问题是:

  1. 我在网上和多行上的Ctrl-C
  2. 在插入或普通模式下返回vim我想粘贴没有缩进修改
  3. 我得到一个带有混乱缩进的粘贴,但只有当文件被复制为filetype时才像r / python(我猜因为缩进被定义)

    我找到了什么

    我找到了this post(其中包括),但那不起作用。

    如何让它发挥作用

    当我使用paste模式时,它可以正常工作 例如,如果我

    1. 我在网上和多行上的Ctrl-C
    2. 在vim中:设置粘贴
    3. 我做<S-Insert>
    4. 然后无论模式或文件类型,它都可以工作,我可以:set nopaste

      另一种方法是从剪贴板"+p粘贴工作(不会弄乱paste模式)

      潜在客户

      我甚至不确定这是vim相关的,我想我无法像{I}那样映射<S-Insert>

      nnoremap <S-Insert> <NOP>
      inoremap <S-Insert> <NOP>
      vnoremap <S-Insert> <NOP>
      

      然后启动新终端然后vim并尝试<S-Insert>它仍然复制

1 个答案:

答案 0 :(得分:0)

  

我得到一个带有混乱缩进的粘贴

这是因为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的粘贴模式,粘贴复制的文本,使用{{1}将您带回正常模式}