【问题标题】:Map <S-Insert> to paste content of clipboard in a filetype映射 <S-Insert> 以将剪贴板的内容粘贴到文件类型中
【发布时间】:2016-05-06 16:57:13
【问题描述】:

我想用&lt;S-Insert&gt;将剪贴板的内容粘贴到vim,不管我是在normal还是insert模式

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


我经常遇到的问题是:

  1. 我上网,多行按Ctrl-C
  2. 在插入或普通模式下返回 vim 我想粘贴 WITHOUT 缩进修改

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


我发现了什么

我找到了this post(以及其他人),但这不起作用。

如何让它发挥作用

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

  1. 我上网,多行按Ctrl-C
  2. 在 vim 中:设置粘贴
  3. 我愿意&lt;S-Insert&gt;

然后它无论模式或文件类型如何都可以工作,我可以:set nopaste

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

线索 ??

问题是我什至不确定这是否与 vim 相关,我想我无法映射 &lt;S-Insert&gt; 就好像我这样做了

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

然后启动新终端然后 vim 并尝试&lt;S-Insert&gt; 它仍然复制

【问题讨论】:

    标签: vim key-bindings gnome-terminal


    【解决方案1】:

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

    这是因为 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 将您带回正常模式

    【讨论】:

    • 我确实有 +xterm_clipboard 不幸的是你的修复对我不起作用
    • 你可以试试:map &lt;silent&gt; &lt;S-Insert&gt; "*p 吗?即* 而不是+
    • "*p"+p 是否将文本粘贴到剪贴板?
    • 您好 :map &lt;silent&gt; &lt;S-Insert&gt; "*p 不起作用,但从剪贴板 "+p 粘贴“香草”确实有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    相关资源
    最近更新 更多