剛健典雅

でありたい(弓について)
と思いつつの雑記あるいはたわごと

vi, emacs, nedit

2007-02-13 18:17:06 | コンピュータ
私はUNIX(Linux)では、3つのエディタを状況に応じて使い分けているので、その応用例を一つ。
a01.FIT, a02.FIT, a03.FIT, ..., a99.FITを
a01.fits, a02.fits, a03.fits, ..., a99.fits
に名前を変えたいとき、つまり
mv a01.FIT a01.fitsを沢山したい場合には以下のようにしています。
(たぶんもっと良い方法があるんだろうけれど...)
(1) まず、\ls *.FIT > lst でファイル名のリストを作る。
  \lsにしているのは、lsにaliasがかかっていて余計なコードが入るのを防ぐため
(2) 次に、neditでファイルlstを開き、ファイル名を2列にする。
  (a) まず、Ctrlキーを押しながらドラッグして、ファイル名を含む矩形領域を選択し、Ctrl+Cでコピーする
  (b) 次に、1行目の後に少し空白を入力してから、その後にCtrl+Shift+Vで先の矩形領域を貼り付ける。
 これで、ファイル名が2列になったので、Ctrl+Sで保存してからneditを閉じる
(3) 今度は修正済みのファイルをviで開き、さらに修正する
  (a) :1,$s/a/mv a/ で、各行の先頭にmvを加える
  (b) :1,$s/FIT/zzz/等として、各行最初のFITをzzz等の出てこない文字列に変換
  (c) :1,$s/FIT/fits/等で2つ目のFITをfitsに変換
  (d) :1,$s/zzz/FIT/等で、最初のFITを回復
  (e) :wqでviを閉じる
(4) 各行が思い通りに変更されたのを確認してから
   sh lst として、名前の変更を実行する。

たぶん、sedなんかを使うともう少しスマートにできそうな気もするが、私はいつもこの手で...
とにかく、文字列変換は、vi又はemacsのreplace-stringを使うけれど、矩形領域のコピーペーストは、私にとっては、これが一番楽チン。

最新の画像もっと見る

コメントを投稿