Vimスクリプトで文字列を逆にする方法


11

文字列を逆にしようとしているので、に'abc defg hij'なり'jih gfed cba'ます。私が思いついた解決策は

join(reverse(split(l:text, '.\zs')), '')

よりエレガントな解決策はありますか、それとも私が思いついたものに固執するべきですか?


1
それはあなたが「優雅」で何を意味するかによる。文字列を反転するための専用の内部関数はありません。内部関数の呼び出しが2回以下で、追加のステートメントがない場合でも、それは可能ではないようです。
佐藤桂

1
現在のソリューションは、エレガントでありながら慣用的です。
romainl 2015年

1
「。」をスキップ 分割部分。
Christian Brabandt、2015年

1
@SatoKatsura実は、正規表現エンジンが何にも一致する必要がないため、より効率的だと思います。さらに、これはドキュメントから推奨される方法です。
Christian Brabandt、2015年

1
マニュアルによると@ChristianBrabandt、split()なしの{keepempty}オプションは、最後に先頭の単一の空のアイテム、および単一の空の項目を削除する必要があります。現在、リストの中央にあるものも含めて、すべての空のアイテムが削除されます(私に尋ねると、文書化された動作よりも便利ですが、おそらくそうではありません)。これについては最近議論されたと思いますvim_dev
佐藤桂

回答:


10

あなたの解決策はとてもエレガントです!Unixベースの環境の場合の代替:

!!rev


2

UNIXライクなシステムを使用している場合は、vimでex-commandと入力します。 :%! rev

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.