0

私たちが持っているコードが次のように見える場合

for(...){

}

再フォーマット後、次のようになりたい

for(...)
{

}

すべての関数、メソッド、クラスなどについても同様です。スタックオーバーフローの他の記事で同様のものを見つけましたが、それは正規表現であり、vim コンソールで毎回入力する必要がありました。そして、vimrc ファイルに (可能であれば) 入れて、それを開くたびに動作するものを探しています。

さて、これは私が見つけたものです:

:%s/^(\s*).*\zs{\s*$/\r\1{/ 

http://stackoverflow.com/questions/4463211/is-there-a-way-to-reformat-braces-automatically-with-vimにありますが、ブラケットが正しい場所にある場合でも、新しい行が追加されます...そして、それをキーの組み合わせにマップする方法がまだわかりません。

4

1 に答える 1

0

(より正確なパターンで編集)

これでうまくいくはずです:

nnoremap <F9> :%s/^\(\s*\).\+\zs{\ze\s*$/\r\1{<cr>

しかし、それは私にとって「安全」とは言えません。

代わりに、次のことができます。

nnoremap <F9> :%s/^\(\s*\).\+\zs{\ze\s*$/\r\1{/c<cr>

一致ごとに確認を求めます。

または、マクロを記録し、 を使用して再生し:globalます。

編集

あなたのパターン:%s/^(\s*).*\zs{\s*$/\r\1{/は次の理由で間違っています:

  • (\s*)代わりに、キャプチャ括弧が適切にエスケープされていません\(\s*\)

  • .*は、任意の数の任意の文字に一致します。0これが、単一の{.

于 2012-11-14T13:39:26.393 に答える