2015-02-24 45 views
0

我试图设置一个autocmd来运行Eclim命令:JavaImportOrganize和:每次保存java文件时的语法。用于运行Eclim的autocmd:JavaImportOrganize

au BufWritePost {*.java} silent :JavaImportOrganize :syntax on 

哪个(预期)会产生错误。我试图找到一个autocmd的例子,其中包含一个插件命令(在这种情况下从一个守护进程加载?)和一个正常的命令,但我似乎无法弄清楚正确的语法。

任何帮助非常感谢!

回答

1

了解确切的错误信息是很有用的。在我的机器,错误的是:

Error detected while processing BufWritePost Auto commands for "{*.java}": 
E488: Trailing characters: silent :JavaImportOrganize :syntax on 

我想这是你也一样,但它有很大的帮助将其粘贴在的问题,让人们可以更轻松地猜测是什么问题。

在这种情况下,这是一个在单个调用中组合两个命令的简单情况。您可以用|字符(见:help :|了解详细信息)做到这一点:现在

:silent JavaImportOrganize | syntax on 

,在我的实验,这并没有这样的伎俩,因为| syntax on可以被认为是JavaImportOrganize呼叫的一部分。所以我只好用exe:help :execute了解更多信息):

:silent exe 'JavaImportOrganize' | syntax on 

完整的调用看起来是这样的:

au BufWritePost *.java silent exe 'JavaImportOrganize' | syntax on 

各地*.java大括号是没有必要的(事实上,我没有甚至知道他们工作:))。命令没有必要之前的:标志 - 它们在命令行模式下使用,但它们在脚本中是完全可选的。

+0

谢谢!对不起提及错误。 我注意到使用silent的一个问题:它抑制了“Press Enter”消息,但同时它也消除了当导入时有多个库可供选择时弹出的对话框。有什么办法可以让命令只抑制“Press Enter”,而不是**库选择对话框?谢谢。 – 2015-02-26 12:10:42

+0

那么,如果“Press Enter”消息是由于输出很长,你可以尝试':set shortmess + = T'(见':help avoid-hit-enter'),但这是一个全局设置。除此之外,我无法想到任何事情。 – 2015-02-27 08:45:01