さぁ、やってきました。 テキストエディタの主兵装の一つ、カット及びコピーと貼り付けコマンドの説明。 これまた強力なのだよ。 ところで、一般的にコピーと呼ばれる操作は、viでは(Emacs等でもそうだが)「ヤンク(yank)」と呼ぶ。 ゆえに、コピーしたテキストを一時保存する領域はクリップボードではなくヤンクバッファという。 本テキストも、今後はヤンクと表記するのでそのつもりで。
カット、ヤンク、貼り付けを行単位に行う場合は、 次のコマンドを用いる。
コマンド | 動作 |
---|---|
「行数」yy |
指定した行数ヤンクする |
「行数」dd |
指定した行数カットする |
「回数」p |
ヤンクバッファの内容を下の行に指定した回数貼り付ける |
「回数」P |
ヤンクバッファの内容を上の行に指定した回数貼り付ける |
「行数」「回数」はどちらも省略可能で、そうした場合は「1」が指定されたと見なされる。
それでは例を示そう。次の2行からなる文があるとする。カーソル位置は一行目の先頭である。
That is not dead which can eternal lie,
And with strange aeons even Death may die.
ここで「yyp」と入力すると、一行ヤンクして貼り付ける、つまり次のようになる。
That is not dead which can eternal lie,
That is not dead which can eternal lie,
And with strange aeons even Death may die.
yy2pであれば、こんな感じ。
That is not dead which can eternal lie,
That is not dead which can eternal lie,
That is not dead which can eternal lie,
And with strange aeons even Death may die.
2yyjpだと2行ヤンクして一行下に行って一回貼り付けるから・・・?
That is not dead which can eternal lie,
And with strange aeons even Death may die.
That is not dead which can eternal lie,
And with strange aeons even Death may die.
yy2Pと打てば、次のようになる。カーソル位置に注意してほしい。 一行上に貼り付けられている。
That is not dead which can eternal lie,
That is not dead which can eternal lie,
That is not dead which can eternal lie,
And with strange aeons even Death may die.
カットの場合は、ヤンクの例のyyをddに読み替えればよい。
カットやヤンクをする場合、いつも行単位とは限らない。 むしろ、一単語、一文節だけ、というような使い方のほうが多いだろう。 一見面倒な操作に思えるが、慣れるとやはり便利で離れられなくなるくらいなのでがんばってくれい。
とりあえず、コマンド一覧を見よう。
コマンド | 動作 |
---|---|
y「move」 |
現在位置から移動先までヤンクする |
d「move」 |
現在位置から移動先までカットする |
「文字数」x |
指定した文字数カットする |
p |
カーソル位置の先に貼り付ける |
P |
カーソル位置の手前に貼り付ける |
「move」には、先に説明したカーソル移動操作が入る。 xは説明済みの文字削除コマンドである。 いかなる削除動作であっても、viでは削除内容は必ずヤンクバッファに保存されるわけだ。
では、例文。
A new generation king of braves, hope of the earth, unparalleled perfection, it's the GAOFIGHGAR!
unparalleledの先頭のuにカーソルがある。この状態で、例えば、df,
のように入力すると、
,
が現れる位置まで(f,)カットせよ(d)、という操作になる。
結果、次のようになるはずだ。
A new generation king of braves, hope of the earth, it's the GAOFIGHGAR!
「unparalleled protection,」がカットされている。このあと、行末まで移動して(せっかくだから$で跳んでくれい)、「p」のように入力すると・・・?
A new generation king of braves, hope of the earth, it's the GAOFIGHGAR!unparalleled perfection,
と、カットした部分が貼り付けられる。ほかにも、例えばこんな操作をしてみる。
yfdp
d2Ft
d$
結果がどうなるか予測できるだろうか。 こんな感じである。
1.は、y-fd-pのように切って読む。「前方にはじめにdが現れる位置まで(fd)ヤンクして(y)、その内容を貼り付ける(p)」という操作だ。 2.は、d-2Ft。「後方に2つ目にtが現れる位置(2Ft)までカットする(d)」という操作。 3.は、d-$。「行末まで($)すべてカット(d)」である。
とにかく、最初にyまたはdを打って、 続けてヤンクまたはカットしたい位置までカーソルを移動させればよいのである。 移動先までの内容がヤンクバッファに放り込まれる。 いろいろ試してほしい。