2016-08-17 7 views
2

私はパターンに従っているコード内のすべての行を修正したいと思います:Vim - 最後のcharを使わずにmatchと置き換える方法は?

int main() { 

同じ

int main() 
{ 

がある場合に適用され

で文やループ。簡単に言えば、固定金具です。私はそれらを一致した:

:%s/.*\(.*\).*{/&^?^M{/gc 

しかし、私は次のような出力が得られます。

int main() { 
{ 

それが一致(&)だとどのように私は私のパターンを置き換えるんが、最後の文字のないまたは特に「なし{"?

+0

これは助けになるかもしれません:http://unix.stackexchange.com/questions/35206/replace-using-vim-reuse-part-of-the-search-pattern – Bernhard

+0

それはうまくいくかもしれませんが、\ 1フリーズ私のvim 7.4のubuntu 16.04LTS。 – pbn

答えて

3
%s/.*(.\{-})[^{]*\zs{/\r&/ 

このコマンドはあなたの例のために働くあなたがそれらを必要とする場合、フラグgまたはgcを追加します。ただし、実際のソースファイルに適用すると、インデントが正しいかどうかを確認することもできます。

私はコードスタイルの固定のための特別なツールがあるはずだと思います。 IMO、Vim/shellスクリプトは、これらのソースコードバッチ編集の最後のオプションです。

+0

それは魅力のように働いた、ありがとう。プロジェクトには多くのソースファイルはありませんが、ツールについてはあなたが正しいです。 – pbn

関連する問題