私は私のvimrcに以下を持っています:
func! AddSpaceBeforeEqual()
s/\([a-z)_0-9"'\[\]]\)=/\1 =/ge
endfunc
vimrcのlintにvintを使用していて、次の警告が表示されました。
ProhibitCommandWithUnintendedSideEffect 意図しない副作用のあるコマンドを回避します。:s [ubstitute]を使用すると、カーソルが移動してエラーメッセージが出力されるため、使用しないでください。スクリプトにより適した関数(search()など)を優先します。多くのvimコマンドには、副作用が少なく同じことを行う関数が存在します。組み込み関数のリストについては、:help functions()を参照してください。Google Vimscriptスタイルガイド
ただし、:s
コマンドを使わずに置換を行う方法だとは思いません。
たとえば、search()
関数はパターンに一致する行を提供しますが、置換を行う方法はありません。このsubstitute()
関数は文字列を操作し、ファイル全体を置き換えません。
自分で代替メソッドを実装する必要がありますか、それとも私の関数を書き換えるよりスマートな方法ですか?
:help function-search-undo