MacVim:e扩展为编辑和编辑!不会让我放弃改变?

时间:2011-09-12 01:30:47

标签: edit macvim

当我输入:e时,MacVim会自动将其扩展为:编辑。这个问题是我不能丢弃我当前的缓冲区:编辑!,因为我收到一条错误消息,说“!”是不允许的。

我有两个问题:

  1. 为什么:编辑!工作与否:编辑!
  2. 有没有办法在MacVim中禁用此自动扩展功能,或者可能将其切换为扩展为:编辑!而不是:编辑! ?
  3. 谢谢!

2 个答案:

答案 0 :(得分:1)

如果在键入e后立即发生扩展,则可能是由于命令模式映射(即:map!, :cmap or :lmap)。如果仅在键入e后跟空格(或输入)后展开,则可能是缩写(即:abbreviate or :cabbrev)。

您可以在e之前键入Control‑VControl‑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不会像这样扩展文本。