前回は自作の関数をmapで実行しましたが、一行の関数だったので、わざわざ関数にする必要もありません。mapだけで同じ処理をしてみます。
:let a=getline("w0","w$") :echo a
‘で囲んだ中でさらに、’が登場するので、エスケープする必要があります。
‘をエスケープするには、2個重ねればよいです。
:call map(a,'join(reverse(split(v:val,''\zs'')),"")') :echo a
‘で囲むと文字そのもの。”で囲むと、\は\記号ではなく、エスケープシーケンスになるので、
‘の代わりに”を使って、\記号をエスケープしておいても良いですね。
:call map(a,'join(reverse(split(v:val,"\\zs")),"")')
では変換した変数をバッファのテキストと置き換えます。
:call setline("w0w$",a)
コメント