比較的長いテキストブロックを取り扱う場合は、yank、delete、put よりも ex コマンドを利用した方が正確で便利です。ex コマンドを使うと、画面上で行を数えたり挿入位置を目で探したりするのではなく、行範囲を指示してから挿入位置の上にくる行番号を指定することで移動またはコピーができます。削除コマンドの場合は、挿入位置の指定は必要ありません。
行番号を表示させない場合には、:set nu と入力して Return キーを押します。
行番号は左端に表示されます。なお、ファイルを印刷しても、これらの行番号は印刷されません。行番号が見えるのは画面上だけです。
1 Oh, when I die, take my saddle from the wall, 2 Put it on my pony, lead him out of the stall. 3 Tie my bones to his back, point our faces to the west, 4 And we'll ride the prairies that we love the best. 5 6 Ride around, little doggies, 7 Ride around real slow. 8 Firey and Snuffy are rarin' to go. ~ ~ ~ ~ ~ ~ :set nu |
行番号を表示させない場合は、:set non u と入力して Return キーを押します。
:line#,line# co line# |
コンマで区切られた最初の 2 つの数値は、コピーされる行の範囲を指定します。3 番目の数値は、それを挿入する位置の上の行番号です。
たとえば、1 行目から 5 行目までをコピーしてそのブロックを 12 行目の下に挿入する場合は、次のように入力します。
:1,5 co 12 |
続いて Return キーを押します。
行の範囲を指定するときに、次の省略形を使用できます。
たとえば、「現在カーソルがある行から 5 行目まで」の範囲をコピーしてそのブロックを 12 行目の下に挿入する場合は、次のように入力します。
:.,5 co 12 |
また、「6 行目からファイルの最終行まで」の範囲をコピーしてそのブロックを 2 行目の下に挿入する場合は、次のように入力します。
:6,$ co 2 |
ex 移動コマンドの基本形式は、上記のコピーコマンドの形式と似ています。
:line#,line# m line# |
行範囲と挿入位置 (行) の指定方法はコピーコマンドの場合と同様です。省略形のピリオド (.) とドル記号 ($) も使用できます。コピーと移動の機能の違いは、移動の場合はブロックがある位置から削除されてほかの位置に挿入されることです。
たとえば、1 行目から 5 行目までを 12 行目の下に移動する場合は、次のように入力します。
:1,5 m 12 |
続いて Return キーを押します。
:line#,line# d |
たとえば、1 行目から 5 行目までを削除する場合は、次のように入力します。
:1,5 d |