避免在Neovim / WSL / ConEmu中以正常模式执行粘贴内容

时间:2017-02-28 22:55:49

标签: vim terminal windows-subsystem-for-linux conemu neovim

我已经开始通过ConEmu在Windows / WSL上使用Neovim。除了一个非常重要的缺陷外,这一切都非常令人惊讶:

当我将内容粘贴到Neovim并忘记之前进入插入模式时,Neovim会将输入注册为键盘笔划并将其作为命令执行。不用说,这可能会非常难看,非常快。

为清晰起见,一个人为的例子:我需要从浏览器中复制一些文本。有问题的文字是“sp”(是的,这完全是愚蠢的,但请耐心等待)。当我将其粘贴到ConEmu(CTRL-V)时,终端将输入传输到Neovim,将其解析为命令,因为它处于正常模式。在这个例子中,Neovim将用 p 替换光标处的任何字符。

Vim for Windows解决了这个问题,并且会在不改变模式的情况下粘贴内容(纯Linux环境如何处理?)。该解决方案的问题在于它依赖于Windows文件系统,与apt-get / Ubuntu / WSL以及其他烦恼相比,调整/维护起来要困难得多。

所以,最初我以为我会尝试让Neovim检测输入是否直接来自键盘而不是任何其他来源,如果是,切换到插入模式并从那里处理它。但我坦率地不确定这是否可能(尤其是WSL)。我还尝试添加一个快捷方式,使Neovim在CTRL-V上进入插入模式,希望首先触发,然后正确粘贴内容。

也许我需要另一个终端而不是ConEmu?

无论如何,我没有想法,希望你们能帮忙。

2 个答案:

答案 0 :(得分:1)

ConEmu不会检测您在终端中运行的应用程序的任何“内部”模式。实际上,当你“粘贴”某些东西时,如果你手动按相同的键,终端几乎会做同样的事情。

好吧,除了一个主要区别:ConEmu使用“括号粘贴模式”,因此控制台应用程序可以确定用户是否粘贴了某些内容或手动按键。 因此,Neovim的问题是如何处理/配置其中的括号粘贴模式。

答案 1 :(得分:0)

在ConEmu设置中,Keys & Marco -> Paste 有一个选项:

  

多行粘贴:避免<<输入>   按键

这就是你需要的。