viで、大量の行をカット&copyして移動するのが面倒である。
100,200 copy 300
というようにすると100-200行目を300行目に挿入してくれるということはわかったのだが、
その3つの数値を記憶しなければならない。
copy開始の行にカーソルを合わせてCtrl+Gを押し行番号を記憶、終了の行番号を同様にして記憶、そしてターゲットの行番号を確認してコマンドを実行する。
グラフィカルにこっからここまでをコピーしてここにペタリ、という操作ができない。多分なんかいい方法があるのだと思うんだけど・・・
さすがvi。いろいろ方法があったが、簡単なのは以下の方法。
V を入力してカット範囲を選択すると反転する。
目的の範囲が定まったら : を打つと :'<,'>と表示される。
そこにya a と続けると、反転した範囲が a というバッファにコピー(yank)される。
そして貼り付けたい場所にカーソルを持っていって、"apとすれば張り付く。
行番号を一切知る必要がない。
ちなみに私はviとvimについてのみ書かれた1500円する本を一冊持っている。あんまり見ないけど。
それから私の使っているviはvimだった。
Redhat9のは6.1, cygwinのは7.0。
私は家でも仕事でもメインのPCはWindows,仕事場はXP、家ではvistaである。
テキストエディタは秀丸を使っている。Wordを使う事はまずない。
大きなファイルをフィルタリングするような必要がある場合は、秀丸の正規表現を使った置換が使えればそれでやる。これでだいたいできる。
できない場合は、cygwinでgrepコマンドを使う。たとえば PassedまたはFailedと書いてある行のみを抜き出したい場合。
cat aaa.log|grep -e Passed -e Failed>new.log
秀丸でもできるのかもしれないが私は最近覚えたこの方法を使う。
viは、cygwinで使うファイルを開く時とか、メイン以外のlinuxにログインしたときなどに、仕方なく使う。大幅に編集する必要がある場合はメインのPCに持ってきて秀丸で編集している。
しかし最近はviに慣れてきて、秀丸と大差ない機能があることがわかってきた。むしろ、正規表現を使った検索や置換はviというかunixの世界が元祖である。