比較的長いテキストブロックを取り扱う場合は、yank、delete、put よりも ex コマンドを利用した方が正確で便利です。ex コマンドを使うと、画面上で行を数えたり挿入位置を目で探したりするのではなく、行範囲を指示してから挿入位置の上にくる行番号を指定することで移動またはコピーができます。(削除コマンドの場合、挿入位置の指定は必要ありません。)
行番号を表示するには、:set nu と入力して Return キーを押します。
行番号は左端に表示されます。なお、ファイルを印刷しても、これらの行番号は印刷されません。行番号が見えるのは画面上だけです。
行番号を表示させない場合は、:set nonu と入力して Return キーを押します。
:line#,line# co line# |
コンマで区切られた最初の 2 つの数値は、コピーされる行の範囲を指定します。3 番目の数値は、それを挿入する位置の上の行番号です。
たとえば、1 行目から 5 行目までをコピーしてそのブロックを 12 行目の下に挿入する場合は、次のように入力して Return キーを押します。
:1,5 co 12 |
行の範囲を指定するときに、次の省略形を使用できます。
ピリオド (.) は、「現在カーソルがある行」を意味します。
ドル記号 ($) は、「ファイルの最終行」を意味します。
たとえば、「現在カーソルがある行から 5 行目まで」の範囲をコピーしてそのブロックを 12 行目の下に挿入する場合は、次のように入力します。
:.,5 co 12 |
また、「6 行目からファイルの最終行まで」の範囲をコピーしてそのブロックを 2 行目の下に挿入する場合は、次のように入力します。
:6,$ co 2 |
ex 移動コマンドの基本形式は、上で説明したコピーコマンドの形式と似ています。
:line#,line# m line# |
行範囲と挿入位置 (行) の指定方法はコピーコマンドの場合と同様です。省略形のピリオドとドル記号も使用できます。コピーと移動の機能の違いは、移動の場合はブロックがある位置から削除されて他の位置に挿入されることです。
たとえば、1 行目から 5 行目までを 12 行目の下に移動する場合は、次のように入力して Return キーを押します。
:1,5 m 12 |
:line#,line# d |
たとえば、1 行目から 5 行目までを削除する場合は、次のように入力します。
:1,5 d |