gpt4 book ai didi

来自抽取文本的 Vim 宏进入插入模式

转载 作者:行者123 更新时间:2023-12-04 18:20:55 26 4
gpt4 key购买 nike

我遇到了一个最奇怪的问题,即从抽取的文本创建的宏。我可以访问 Ubuntu 上的另一个 vim 安装(我使用 Gentoo),但没有出现此问题。我需要的是帮助找到这种行为的原因。

首先是一个工作正常的案例:

我开始录制一个宏,比方说,qr .

我准确地输入了以下字符:iasdas<ESC>q

这个宏应该插入文本asdas并退出插入模式。使用 @r 运行它正是这样做的。

第二种情况:

现在我想手动输入我的宏,将其拉出并运行。

我进入插入模式:

iasdas^[

当然^[插入 <Ctrl>+v, <ESC> .

我把它拉到一个寄存器 q : "qyy .

然后我验证q的内容这是完全正确的。

我用 @q 运行它我得到的是最令人困惑的。正文 asdas已键入,vim 处于插入模式(!) 且光标位于最后一个 s 上.

这意味着实际上发生的是iasdas^[i - 否则光标会在之后 s .改变 ^[jj ,我已经映射到转义,没有改变任何东西。

我有一个非常复杂的宏,我试图手动编辑它。现在我必须在宏之后退出插入模式,这在很多方面都很糟糕...

作为解决方法,我制作了一个包含 @q^[ 的宏, 但它打破了 @@ 的行为, 所以这不是一个好的解决方案。

这个问题让我很头疼。我不知道从哪里开始寻找这个原因。我刚刚更新到 Vim 7.4,在我的 7.3 上使用完全相同的配置观察到相同的行为。

我的 .vimrc 很长,大约有 10 个插件。尝试删除它们中的每一个都需要大量工作,所以我很想得到任何其他跟踪它的提示。

编辑

根据我尝试调试的建议,运行 vim -V100vimlog 文件名,我得到:

...
Calling shell to execute: "(printf "0x%X" $((0x4A307204 +0x4))) >/tmp/vWo43Tm/2 2>&1"
Executing CursorMoved Auto commands for "*"
Executing TextChanged Auto commands for "*"
Executing CursorMoved Auto commands for "*"
Executing CursorMoved Auto commands for "*"
Executing CursorMoved Auto commands for "*"
Executing TextChanged Auto commands for "*"
Executing CursorMoved Auto commands for "*"
Executing CursorMoved Auto commands for "*"
Executing InsertEnter Auto commands for "*"-- INSERT --
...

不知道为什么会触发 InsertEnter,我能得到更详细的输出吗?

最佳答案

你可以试试这个

:let @q='iasds^['

关于来自抽取文本的 Vim 宏进入插入模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22254055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com