0

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

当我将内容粘贴到 Neovim 并且之前忘记进入插入模式时,Neovim 会将输入注册为键盘敲击并将它们作为命令执行。不用说,这可能会变得非常丑陋,非常快。

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

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

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

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

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

4

2 回答 2

1

ConEmu 不应检测您在终端中运行的应用程序的任何“内部”模式。实际上,当您“粘贴”某些内容时,如果您手动按下相同的键,终端会执行几乎相同的操作。

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

于 2017-02-28T23:18:29.190 回答
0

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

多行粘贴:避免按<Enter>键执行意外命令

这就是你需要的。

于 2017-04-14T08:57:55.903 回答