我想重新格式化一些代碼,看起來像這樣:有沒有辦法用Vim自動重新設置大括號?
if (cond) {
foo;
}
到
if (cond)
{
foo;
}
由於這是C代碼,我一直在尋找cindent
/cinoptions
與=
使用,但它似乎它不涉及多行規則。
我一直在尋找formatoptions
使用gq
,它似乎也不可能。
那麼有可能使用默認的Vim選項,或者我應該使用特定的插件還是函數?
我想重新格式化一些代碼,看起來像這樣:有沒有辦法用Vim自動重新設置大括號?
if (cond) {
foo;
}
到
if (cond)
{
foo;
}
由於這是C代碼,我一直在尋找cindent
/cinoptions
與=
使用,但它似乎它不涉及多行規則。
我一直在尋找formatoptions
使用gq
,它似乎也不可能。
那麼有可能使用默認的Vim選項,或者我應該使用特定的插件還是函數?
:%s/^\(\s*\).*\zs{\s*$/\r\1{/
擊穿:
^\(\s*\)
=捕捉空白在該行的開頭
.*
=一切
\zs
=這個
{
=左大後開始更換大括號
\s*$
=尾隨線年底
\r\1{
=換行,抓獲空白,撐
我不知道這是否能夠徹底解決您的問題,但如果這是一個一次性的操作,你可能會想嘗試的正則表達式:
:%s/^\(\s*\)\(.*)\)\s*{\s*$/\1\2^M\1{/
注意^M
是爲控制字符通常通過按CTRL-V然後ENTER生成(取決於您的終端)。
編輯:正如Jay和Zyx在評論中指出的,\r
是將換行符插入替換字符串的更好方法。我沒有意識到這一點,非常感謝提示。
我不知道你是否可以在vim中完成它,但是你可以嘗試使用BSD indent
命令和-bl
選項。當光標在第一個{
上時,您可以輸入!%indent -bl
輸入。
+1簡單和高可用性 – sehe 2011-04-25 21:01:04
之前空格如果安裝Artistic Style,你可以這樣做:
:set formatprg=astyle\ -b
然後使用gq
重新格式化的塊碼。強調如果您想要啓用此功能後,每次你編輯C文件, 你可以添加以下到您的.vimrc
文件文本
。
autocmd BufNewFile,BufRead *.c set formatprg=astyle\ -b
這一個運作良好! – user1027562 2012-10-10 10:14:12