基本的なことは &link(こちら,http://www.str.ce.akita-u.ac.jp/~gotou/linux/vine.html#vi)参照。
例えば、時刻データとその時刻の変位データ数行とが、 交互に並んでいるデータファイルから、 時刻だけの行を抜き出したい場合などは、vimのマクロが有用である。
例えば、ccxの動的解析の出力ファイルなど、 以下のように並んでいるデータファイルから、 displacements と書かれた行だけを他のファイルに抜き出して 保存したいとしよう。
12663 3.0118E-06 -3.4520E-17 1.0695E-08 12664 3.0118E-06 3.4680E-17 -1.0695E-08
displacements (vx,vy,vz) for set N1 and time 0.2000E-01
12663 6.0106E-06 -6.8904E-17 2.1343E-08 12664 6.0106E-06 6.9224E-17 -2.1343E-08
displacements (vx,vy,vz) for set N1 and time 0.3000E-01
12663 8.9875E-06 -1.0302E-16 3.1914E-08 12664 8.9875E-06 1.0349E-16 -3.1914E-08
displacements (vx,vy,vz) for set N1 and time 0.4000E-01
12663 1.1927E-05 -1.3672E-16 4.2351E-08 12664 1.1927E-05 1.3735E-16 -4.2351E-08
こういう作業をするときは、元ファイルを壊してしまうと困るので、 作業用ファイルにコピーしてから作業するのが安全。 という訳で、上記のファイルをsagyou.datにコピーしたとしよう。
後は適宜、保存するなりすればよい。 節点12663の行だけをファイルにコピーしたければ、同様に操作すればよい。 複数のマクロを定義したければ、qa, qb, qc, みたいにいくらでも定義できる。
例えば、aaaというファイルのdisplacementsと書いてある行だけを抜き出したいんだったら、 わざわざ、上のようなviのマクロ機能を使わなくたって、
viを起動するたびに「E575: viminfo:」と出てくる。エンターを押せばそのまま続行できるが、\home\kiso\.viminfoを消せばエラーメッセージが消える。 消したあとも今のところ不具合なし。