当我输入:e时,MacVim会自动将其扩展为:编辑。这个问题是我不能丢弃我当前的缓冲区:编辑!,因为我收到一条错误消息,说“!”是不允许的。
我有两个问题:
谢谢!
答案 0 :(得分:1)
如果在键入e
后立即发生扩展,则可能是由于命令模式映射(即:map!
, :cmap
or :lmap
)。如果仅在键入e
后跟空格(或输入)后展开,则可能是缩写(即:abbreviate
or :cabbrev
)。
您可以在e
之前键入Control‑V或Control‑Q来暂时避免基于映射的扩展。另一种解决方法是在输入命令行命令时键入Control‑F(即,您处于:
提示符;或者在启动命令时键入q:
而不是:
。这将打开命令行窗口,以便您可以通过正常/插入模式编辑命令(这可以避免所有命令行模式映射)。
一旦有办法再次将e
输入命令行,您可以使用:verbose
查找映射源:
:verbose cmap e
(您必须使用命令行窗口按字面输入,或者在每个e
之前键入Control-V或Control-Q在命令行输入。)
这将显示映射的定义。此外,如果它来自插件,那么将使用第二行(Last set from /path/to/some/file
)识别来源。
检查缩写是有点诡计,因为有两次扩展机会(在键入时和解析命令行时):
:verbose cab ^Ve
^V
需要是实际的Control-V。通常,您可以通过键入Control-V两次(或Control-Q,然后键入Control-V)来完成此操作。
至于Edit
命令本身,它不是内置命令,所以插件必须定义它。很少有内置命令以大写字母开头,所有“用户定义”命令必须以1开头;见:help E183
。
您可以再次使用:verbose
查找:Edit
的定义位置:
:verbose command Edit
我怀疑映射/缩写和命令可能来自同一个地方。
您可以使用:cunmap
手动禁用基于映射的扩展,使用:cunabbrev
手动禁用基于缩放的扩展:
:cunmap e
:cunabbrev ^Ve
同样,您可能需要在每个e
之前键入Control-V或Control-Q,^V
必须是文字Control-V(输入Control-V两次才能输入)。 / p>
不幸的是,如果定义来自插件,则不能将这些内容放在~/.vimrc
中,因为插件是在~/.vimrc
之后加载的。您应该调查该插件,看它是否提供禁用侵入式映射的选项。有时,插件会检查:let
变量,看看是否应启用某些功能。也许你有问题的插件有一个“旋钮”,让你告诉它不要安装它的e
- > Edit
扩张。如果没有,您可能会报告有关:Edit!
无法正常工作的错误,并要求一种方法来禁用扩展。
答案 1 :(得分:0)
您使用TextExpander,Typinator还是一些文本扩展工具?如果是,那些可能是罪魁祸首。据我所知,MacVim不会像这样扩展文本。