正しくフォーマットされていないPerlコードがあります。
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
Vimで再フォーマットしたいです。コマンドを使用した後gg=G
、コードは次のようにフォーマットされます。
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
実際、Vimで次のようにフォーマットしたいと思います。
if ($a==1){
&err_report("$a");
while($b!=1){
&err_ok();
}
}
私は何をすべきか?
Unixライクなオペレーティングシステムを使用していると仮定します...
perltidy (高度にカスタマイズ可能なPerlコードインデンター/フォーマッター)を入手してください。次に、~/.vimrc
ファイルを更新して以下を含めます。
filetype plugin indent on
autocmd FileType Perl setlocal equalprg=perltidy\ -st
これにより、Perlコードの任意のブロックにマークを付けてから、を押して再フォーマットすることができます。 =。これは、perltidy
が$PATH
にあることを前提としています。それ以外の場合は、実行可能ファイルへのフルパスを指定するだけです。
デフォルトでは、perltidy
はコードを次のようにフォーマットします
if ( $a == 1 ) {
&err_report("$a");
while ( $b != 1 ) {
&err_ok();
}
}
...ただし、-i=2
(--indent-columns=2
)および-pt=2
(--paren-tightness=2
)を使用する(これらのオプションを~/.perltidyrc
ファイルに1行に1つずつ配置します)あなたが得る
if ($a == 1) {
&err_report("$a");
while ($b != 1) {
&err_ok();
}
}
これはほとんどあなたが求めていたものです。
while
の後に本当にスペースが必要ない場合は、-nsak=while
(--nospace-after-keyword=while
)を使用してください。
VimにはPerlインデントプラグインが付属しており、スタートアップのどこかに:filetype indent on
がある限り(vimrcなど)、Perlファイルのインデントを実行できるはずです。ただし、インデントのみを行い、改行を追加または削除しないことに注意してください。
まず、必要なフォーマットオプションを設定します(例:set cindent sw=2 expandtab
(Cのようなインデントを使用し、2つのスペースをインデントし、タブ文字をスペースに展開します)。次に、ファイル/バッファ全体をインデントします。