TextMate 2退出键:如何禁用下一个完成和上一个完成

Jar*_*ike 3 textmate textmate2

默认情况下,在TextMate中按Esc会循环显示可能的完成操作(除了关闭对话框),这可能会在文档中放入不需要的字符,尤其是如果您习惯Esc作为在大多数文本编辑器中都可以打的安全键。(实际上,在许多IDE中,必须多次按Esc键才能关闭自动完成弹出窗口,以便使用向上和向下箭头键。)

如何禁用此行为,因此在正常的文本编辑中,按Esc键不会执行任何操作,但是关闭对话框仍然可以按预期进行?

Jar*_*ike 5

什么有效

根据@matt的评论,我发现我可以通过覆盖默认的键绑定来完成我需要的操作,如此处提到的https://manual.macromates.com/en/key_bindings.html

另外,TextMate具有/path/?to/?TextMate.app/?Contents/?Resources/?KeyBindings.dict文件,其中包含一些特定于TextMate的额外键绑定(因此不适合放入每个用户的全局键绑定文件)。您可以将此文件复制到〜/ Library /?Application Support /?TextMate并进行编辑,然后将优先于捆绑的文件。

我编辑了文件,然后取出带有nextCompletion的行,分配给shift + Esc($ \ 033)并分配了Esc和shift + Esc来调用noop

"\033"     = "noop:";
"$\033"    = "noop:";
Run Code Online (Sandbox Code Playgroud)

我在这里了解了noop选择器的存在:

退出并重新启动后,TextMate Esc现在除了关闭对话框外什么也不做。

(显然,要更改此设置,您需要了解Objective-C才能识别选择器字符串(以及具有“ nop”的程序集),以便可以猜测应该有一个noop选择器。并且您需要知道八进制,因此您将Escape键识别为033 =27。)


我尝试失败的事情

编辑:供人们想知道如何花90分钟更改一个小设置的参考。

在手册的第4.2节末尾找到了此段:

当您提供自己的完成命令(或列表)时,您可能需要禁用默认匹配。可以通过将disableDefaultCompletion设置为1来完成。

我尝试在“首选项”>“变量”窗格中将disableDefaultCompletion设置为1,然后退出并重新打开该应用程序。我发现捆绑菜单>选择捆绑项目,然后单击设置显示所有设置的列表,包括我的disableDefaultCompletion = 1在底部。显然这什么也没做?(其他设置所覆盖的其他设置显示为划线,而我的设置则没有。)

我还搜索了http://github.com/textmate/textmate存储库中的字符串disableDefaultCompletion,它显示在搜索结果中,因此该功能应该存在于某处。

我尝试退出应用程序,然后在命令行上:

默认写入com.macromates.TextMate disableDefaultCompletion true

重新启动并重试(在JavaScript模式下,按Esc到结束}的右侧),它仍然不会禁用完成功能。