【问题标题】:autocmd for running Eclim's :JavaImportOrganize用于运行 Eclim 的 autocmd :JavaImportOrganize
【发布时间】:2015-02-24 20:44:35
【问题描述】:

我正在尝试设置一个自动命令,以便在每次保存 java 文件时运行 Eclim 命令 :JavaImportOrganize 和 :syntax。

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

这(预期)会产生错误。我试图找到一个包含插件命令(在这种情况下是从守护程序加载?)和普通命令的 autocmd 示例,但我似乎无法找出正确的语法。

非常感谢任何帮助!

【问题讨论】:

    标签: vim eclim 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 周围的花括号不是必需的(事实上,我什至不知道它们有效:))。命令前的: 符号不是必需的——它们在命令行模式下使用,但它们在脚本中是完全可选的。

    【讨论】:

    • 谢谢!很抱歉没有提到错误。我注意到使用静默的一个问题:它抑制了“按 Enter”消息,但同时它也删除了在导入时有多个库可供选择时弹出的对话框。有什么方法可以使命令只抑制“按 Enter”而不是库选择对话框?谢谢。
    • 好吧,如果“Press Enter”消息是由于输出过长,你可以试试:set shortmess+=T(见:help avoid-hit-enter),但这是一个全局设置。除此之外,我什么都想不出来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多