PHP_BeautifierをVimに組み込み終えたばかりで、空白が削除されるという事実は私を苛立たせます。どうやらそれは2007年以来のバグです。この問題を修正するためのハックがありますが、それは他の問題につながります。代わりに、ラウンドアバウト方式を使用することにしました。
まず、ここで提案されているコマンドを使用して、複数の空白行を1つの空白行に変換します
:g/^\_$\n\_^$/d
次へすべての空白行をそのようなユニークなものに変換します(美化中に変更されないようにしてください)
:%s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge
次にPHP_Beautifierをそのように呼び出します
:% ! php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)"<CR>
最後に、すべての一意の行を次のように空の行に戻します
:%s/$x='It puts the lotion on the skin';//ge
私がそれらを個別にテストしたとき、4つすべてが機能します。3番目のステップもF8キーにマッピングされています
map <F8> :% ! php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)"<CR>
しかし、パイプ記号を使用してコマンドをつなぎ合わせようとすると、次のようになります(さまざまなコマンドをわかりやすくするために、パイプに空白を埋め込みました)
map <F8> :g/^\_$\n\_^$/d | %s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge | % ! php_beautifier --filters "ArrayNested() IndentStyles(style=k&r) NewLines(before=if:switch:foreach:else:T_CLASS,after=T_COMMENT:function)" | %s/$x = 'It puts the lotion on the skin';//ge<CR>
次のエラーが発生します
/home/xxx/.vimrcの処理中にエラーが検出されました: 105行目: E749:空のバッファ E482:ファイル/ tmp / vZ6LPjd/0を作成できません ENTERを押すか、コマンドを入力して続行します
これらの複数のコマンドをキー(この場合はF8)にバインドするにはどうすればよいですか。
ibの答えのおかげで、私はついにこれを機能させることができました。誰かがこれと同じ問題を抱えている場合は、このスクリプトを.vimrcファイルにコピーするだけです。
func! ParsePHP()
:exe 'g/^\_$\n\_^$/d'
:%s/^[\ \t]*\n/$x = 'It puts the lotion on the skin';\r/ge
:exe '%!php_beautifier --filters "ArrayNested() IndentStyles(style=k&r)"'
:%s/$x = 'It puts the lotion on the skin';//ge
endfunc
map <F8> :call ParsePHP()<CR>