2012-03-20 52 views
6

我希望將源代碼格式化程序Uncrustify與Vim集成。以下兩個選項中的任何一個都足夠了。Vim autocmd(保存文件,運行代碼格式化程序,重新加載文件)

  1. 格式化我正在編輯的代碼(即當按下了gq時)。
  2. 保存文件時格式化代碼,然後將格式化後的文件重新加載到當前的Vim窗口中。

選項1是優選的。我試過

set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup 

即我用命令行選項調用Uncrustify。 這不起作用。 Vi給出了E518: Unknown option: ~/misc/uncrustify.cfg錯誤。

對於第二種情況,我想在以後保存該文件格式的vimrc文件

autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile> 

以下,但我必須手動重新加載該文件到Vim中。

回答

4

您是否嘗試過逃跑的空格:

​​

UPDATE

uncrustify打印 「分析:170個字節......」 信息標準錯誤,所以我們需要把它重定向到/dev/null

:set formatprg=uncrustify\ -c\ ~/misc/uncrustify.cfg\ -l\ CPP\ --no-backup\ 2>/dev/null

gq在線上操作,因此您可以在可視模式下選擇必要的線並執行gq。例如,如果你想重新格式化整個文件,執行ggVGgq。在:help gq

+0

即刪除VI錯誤

更多信息。我還必須添加-l選項來將語言指定爲CPP,因爲uncrustify的輸入來自stdin。但是,在vi中按gq不會格式化文件。如果再按一次,則只格式化當前行,並將以下行添加到正在編輯的文件 - 「解析:來自標準輸入的57個字節(57個字符)作爲語言CPP」。我想我缺少的是如何配置formatprg命令來讀取整個文件,其次,防止上面的行輸出到正在編輯的文件。 – user1280213 2012-03-21 04:36:28

+0

@ user1280213我已更新答案,希望有幫助 – galymzhan 2012-03-21 09:00:14

+0

謝謝。這有幫助。 – user1280213 2012-03-26 10:29:15

相關問題