扱う問題
Collect List* item1上のファイルを以下のように変更せよ。
* item2 * item3 * item4 * item5
item1,item2,item3,item4,item5
解説
私が最初に思いついた答えと、ランキング一位の回答が一致していた。ちょっとだけVim力に自信がついた。
<C-V>Gls,<Esc>x5gJZZ
- <C-V>Gls,<Esc>
矩形選択で、全行の最初の二列を選択し、カンマに置き換える。
<Esc>でノーマルモードに復帰した際、カーソルはファイル先頭に戻る。 - x
第一行先頭のカンマを削除する。 - 5gJ
5行をスペースを含めずに1行にまとめる。 - ZZ
ファイルを保存して終了する。
12ストロークである。
矩形選択でカンマの処理をした際、カーソルがファイル先頭に戻ることでシームレスに次の処理に移ることができている。
別解
マクロを使って、短くできないか試してみた。
qqdwJr,lq5@qZZ
- qq
マクロの記録を開始する。 - dwJ
"* "の2文字を削除し、次の行を現在の行の末尾につなげる。 - r,l
スペースをカンマに置き換える。
置き換えの後、カーソルは次の"item"に先行する"* "にある。 - q
マクロの記録を終了する。 - 5@q
5回マクロを繰り返す。 - ZZ
ファイルを保存して終了する。
14ストロークである。
矩形選択を用いた場合よりも、キーストロークが2文字多くなってしまっているが、シームレスにマクロを実行できることが分かった。
まとめ
今回の問題は、矩形選択で全体を一気に編集するか、行単位でマクロを実行するかの選択を検討した。
今回のケースでは、行単位でのマクロの実行よりも、矩形選択の方が少ないキーストロークで編集できた。
0 件のコメント:
コメントを投稿
コメント表示は承認制に設定しています