2015-02-24 16 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