Vim';s键映射在gui模式和cli模式之间的行为不同

Vim';s键映射在gui模式和cli模式之间的行为不同,vim,Vim,我一直在努力解决这个问题,但仍然失败了,我的一些自定义密钥映射(大多数用于插件)在gui模式和cli模式之间的行为完全不同,即使我使用带有-v标志的gui模式命令(如mvim-v)或在终端Vi中使用:gui命令 例如,Emmet插件可以方便地扩展HTML/CSS表达式,默认的触发键一开始从不工作(在我经常使用的Cli模式下),我总是不知道为什么,直到有一天我使用MacVim一段时间,突然发现它工作了 之后,我尝试将默认触发器从重新映射到或,它们在MacVim中工作正常,但在terminal Vi

我一直在努力解决这个问题,但仍然失败了,我的一些自定义密钥映射(大多数用于插件)在gui模式和cli模式之间的行为完全不同,即使我使用带有
-v
标志的gui模式命令(如
mvim-v
)或在终端Vi中使用
:gui
命令

例如,Emmet插件可以方便地扩展HTML/CSS表达式,默认的触发键
一开始从不工作(在我经常使用的Cli模式下),我总是不知道为什么,直到有一天我使用MacVim一段时间,突然发现它工作了

之后,我尝试将默认触发器从
重新映射到
,它们在MacVim中工作正常,但在terminal Vim中仍然不走运

是否有任何特殊原因导致此问题?也许我的配置有问题


任何建议都将不胜感激,谢谢

最后我自己解决了,但谢谢@ebenezer的提醒

我们经常使用
set timeoutlen
set ttimeoutlen
来调整关键代码或映射序列的延迟。我们大多数人都不能容忍使用
ttimeoutlen
(即
-1
)的默认值,因为按
ESC
Ctrl-[
退出插入模式时,它会迫使我们等待很长时间

出于这个特殊原因,我将此值更改为
10
(毫秒),但我从现在不记得的地方复制了此设置,并将所有文件类型的
setttimeoutlen
放置在
autocmd
中,如下所示:

if!有('gui\u running')
设置ttimeoutlen=10
autocmd InsertEnter*设置timeoutlen=0
autocmd InsertLeave*设置timeoutlen=1000
恩迪夫
我不知道为什么这会使一些插件无法正常工作,我对其进行了一些更改,以使其现在适合我:

if!有('gui\u running')
autocmd插入器*设置ttimeoutlen=100
autocmd InsertLeave*设置ttimeoutlen=-1
恩迪夫

如果你遇到同样的问题,希望这能对你有所帮助。

最后我自己解决了,但感谢@ebenezer的提醒

我们经常使用
set timeoutlen
set ttimeoutlen
来调整关键代码或映射序列的延迟完成。我们大多数人不能容忍使用
ttimeoutlen
的默认值(即
-1
),因为按
ESC
Ctrl-[
退出插入模式时,它会迫使我们等待很长时间

出于这个特殊原因,我将此值更改为
10
(毫秒),但我从现在不记得的地方复制了此设置,并将所有文件类型的
setttimeoutlen
放置在
autocmd
中,如下所示:

if!有('gui\u running')
设置ttimeoutlen=10
autocmd InsertEnter*设置timeoutlen=0
autocmd InsertLeave*设置timeoutlen=1000
恩迪夫
我不知道为什么这会使一些插件无法正常工作,我对其进行了一些更改,以使其现在适合我:

if!有('gui\u running')
autocmd插入器*设置ttimeoutlen=100
autocmd InsertLeave*设置ttimeoutlen=-1
恩迪夫

如果您遇到同样的问题,希望这将对您有所帮助。

我可以获得一个映射,以便在终端Vim和MacVim中工作(从技术上讲,这两种MacVim都可以,但在GUI和终端模式下都可以)。你能说说你安装了哪些插件吗?太多了,可能20+到30个。所以你认为它可能与其他插件冲突?我会尝试禁用其他插件,然后看看会发生什么。谢谢你的想法。@ebenezer OMG…我禁用了除Emmet之外的所有其他插件,不起作用。我创建了一个全新的。vimrc an我只安装了Emmet,现在它可以工作了。这意味着我的其他配置有问题……天哪,对他们中的许多人来说……祝我好运,我会解决这个问题的……天哪!没问题。我刚才在这里看到了你的回复,我从下面看到你找到了答案-耶!:)我可以得到一个在终端Vim和MacVim中工作的映射(从技术上讲,MacVim都可以,但GUI和终端模式都可以)。你能说说你安装了哪些插件吗?太多了,可能20+到30个。所以你认为它可能与其他插件冲突?我会尝试禁用其他插件,然后看看会发生什么。谢谢你的想法。@ebenezer OMG…我禁用了除Emmet之外的所有其他插件,不起作用。我创建了一个全新的。vimrc an我只安装了Emmet,现在它可以工作了。这意味着我的其他配置有问题……天哪,对他们中的许多人来说……祝我好运,我会解决这个问题的……天哪!没问题。我刚才在这里看到了你的回复,我从下面看到你找到了答案-耶!)