5.削除と複写
■削除(=移動データの切り取り)
[n]x カーソル位置から行末に向かってn文字を削除する。nを省略時は、カーソル上の文字を1文字削除する。
[n]Xカーソルの直前の文字から行頭に向かってn文字を削除する。nを省略時は、カーソルのすぐ前の1文字を削除する。
dカーソル移動コマンドカーソル位置からカーソル移動コマンドで指定した位置までの文字を削除する。
(ex.)dw
カーソル位置から単語の終わりまで削除
[n]ddカーソル行から下にn行削除する。nを省略すると、カーソルのある行を削除する。
Dカーソル位置から行末までの文字を削除する。
"名前 削除コマンド上記の削除コマンドで削除した文字列や行を名前つきバッファ(a〜z中の1文字)に対して退避する。
(ex)"adw
名前付きバッファaにカーソル位置から単語の終わりまでの文字を削除して格納する。
[n]<<カーソル行から下にn行分の先頭のタブを1つを削除する。タブはオプションshiftwidthで値を変更できる。
:L,M dL行目からM行目までを削除する。

ワンポイント
 もし、間違ってデータを削除してしまったら?

間違えて消したくない行や単語を消してしまったら、あわてずすぐ、uコマンドを入力しましょう。 uコマンドは直前に行ったコマンド実行を取り消す(undo)というコマンドです。

■複写元データの指定(バッファへのコピー)
[n]yy または [n]Y (yank)カーソル行から下にn行を名前なしバッファにコピーする。nを省略すると現在行のみコピーする。
yカーソル移動コマンドカーソル位置からカーソル移動コマンドで指定した位置までの内容を名前なしバッファにコピーする。
(ex1.)yw
カーソル位置から単語の終わりまで格納
(ex2.)y$
カーソル位置から行末まで格納
"名前 複写コマンド名前つきバッファ(a〜z中の1文字)に、複写コマンドを実行した結果を格納する。
(ex1)"a4y
名前付きバッファaにカーソル位置から右に4文字分を格納

■移動・複写先へのデータの取り出し
p         (put)名前なしバッファの内容をカーソル行の下、もしくはカーソル位置の右に挿入する。
P名前なしバッファの内容をカーソル行の上、もしくはカーソル位置の左に挿入する。
"np または、"nPn番目(nは、1から9まで)の番号つきバッファの内容をpまたはPコマンドでカーソル位置に取り出す。 nを省略した場合は、1番のバッファの内容を取り出す。
"名前p または、"名前P名前つきバッファ(a〜z中の1文字)の内容を pまたはPで取り出す。
(ex)"ap
名前付きバッファaの内容をカーソルの左もしくは下の行に取り出す
:L,M mN L行目からM行目までをN行目の直後に移動する。
:L,M tN L行目からM行目までをN行目の直後に複写する。

 

 

ワンポイント
 削除と複写のしくみ・・・・バッファって何?

xや ddコマンドで削除された文字や行は、メモリ上のバッファと呼ばれる作業領域に自動的に退避されます。また、yyなどのコマンドは、編集内容をバッファに複写しています。


画面上は消えているがバッファに退避している。


画面上は変わらないがバッファにコピーしている。

p,P コマンドを使えばバッファの内容を画面上の好きな位置に取り出すことができます。viの複写や移動はバッファを経由してデータをやり取りすることで実現しているのです。

(複写)
yyコマンドなどで画面のデータを残したままバッファにデータを格納
→P,pコマンドで取り出す。
(移動)
xや ddコマンドなどで画面のデータを削除し、バッファにデータを格納
→P,pコマンドで新しい位置に取り出す。
このように、自動的にデータを退避、コピーするバッファを名前なしバッファといいます。名前なしバッファの内容は、次に削除や複写のコマンドを使って上書きされるまで有効です。

ステップアップ
 いろいろなバッファを使いこなそう

名前なしバッファの他、バッファには次の2種類があります。
番号つきバッファ
行単位で削除した内容は、自動的に番号付きバッファに退避されます。番号つきバッファは 1、2、3・・・という名前で参照できます。(最大9つまで)
名前つきバッファ
自分で名前をつけられるバッファです。単語や文字単位の退避もできます。
これらのバッファを利用すると、頻繁に内容が変わってしまう名前なしバッファと違い、いくつものデータを何度も使うことができます。