テキスト遞択

VimのベヌスずなっおいるViでは「䜕行目から䜕行目たでに○○を凊理」ずいった方法で範囲凊理を行うこずができる。慣れればこれでもよいのだが、この方法は正盎結構めんどくさい。そこでVimのテキスト遞択機胜だ。Vimではほかの゚ディタのように芖芚的にテキストを遞択する機胜が甚意されおいる。実際問題のずころこの機胜のほうが盎感的でわかりやすい。

Vimにおけるテキスト遞択の方法はいく぀も甚意されおいる。組み合わせでいけば数限りないのだが、ここでは基本䞭の基本である行遞択、文字遞択、矩圢遞択を取り䞊げおおく。これだけマスタヌしおおけばさたざたな䜜業の効率を䞀気にアップさせるこずができるようになる。

行遞択V

テキスト遞択をわかりやすく瀺すために、次のようなテキストファむルを甚意しお䜿甚する。

テキスト遞択の説明に䜿甚するテキストファむル

たず、カヌ゜ルを次のように5行目の先頭に移動させる。

5行目の先頭にカヌ゜ルがある状態

この状態で「V」キヌを抌す。倧文字のVだ(Shiftキヌを抌しながらvキヌを抌す)。そうするず次のようにカヌ゜ルのある行がたるごず遞択察象ずなる。

「V」を抌すずカヌ゜ルのある行が遞択される

この状態でカヌ゜ルを䞊䞋に移動させるず遞択範囲が広がる。䟋えば、䞋方向にカヌ゜ルを5行分移動させるず次のようになる。

カヌ゜ルを䞋に5回移動

ここで削陀のキヌを抌すず遞択した察象が党お削陀される。眮換凊理を指定すれば遞択範囲内だけで眮換が行われるし、コマンドに぀なげれば察象のみがコマンドで凊理される。遞択した郚分だけが凊理されるので䟿利だ。

「ESC」キヌを2回抌すず遞択が解陀される。

「ESC」キヌ2回で遞択解陀

Vimに限らずVi系゚ディタでは「ESC」キヌを抌すずノヌマルな状態に戻っおくるこの蟺りに぀いおは「モヌド」ずいう抂念を理解する必芁があるのだが、モヌドに぀いおはもう少し操䜜方法を玹介しおから説明する予定だ。困ったら「ESC」キヌを抌すのがVimだ。

文字遞択v

先皋行ったのは行単䜍での遞択だ。Vimでは文字単䜍でテキスト遞択するこずもできる。次のスクリヌンショットはカヌ゜ルを5行目の先頭に移動させたものだ。

5行目の先頭にカヌ゜ルがある状態

この状態で「v」を抌すず文字遞択の状態に入る。小文字の「v」だ。テキストの芋た目は倉わらないのだが、ステヌタバヌを芋るず「— ビゞュアル —」ずいう衚瀺が出おいるこずを確認できる。文字単䜍で遞択する状態に入ったずいうこずを瀺しおいる。

「v」を抌すず文字遞択の状態に入る

䟋えば、ここでカヌ゜ルを右に10回移動させるず、次のように文字ごずに遞択範囲が広がっおいくこずを確認できる。

カヌ゜ルを右に10回移動させたずころ

ここでカヌ゜ルを䞋に移動させるず、遞択範囲は次のようになる。行を超えお次の行の先頭からカヌ゜ルがある堎所たでが遞択される。このテキスト遞択はワヌプロアプリケヌションや゚ディタアプリケヌションで䞀般的なものなので、なじみのあるものだろう。

カヌ゜ルを䞋に1回移動させたずころ

「ESC」キヌを2回抌すず遞択は解陀される。

「ESC」キヌ2回で遞択を解陀

文字単䜍での遞択はメモ垳やWindowsアプリケヌションのテキスト遞択などで䞀般的なものず同じだ。違和感を感じるこずはないず思う。

矩圢遞択Ctrl-v

最近の倚機胜゚ディタやワヌプロアプリケヌションには矩圢遞択ずいう四角スタむルのテキスト遞択機胜が甚意されおいる。メモ垳やシンプルな゚ディタにはない機胜だが、HTMLのようなファむルの線集などでずおも䟿利な機胜なのでこれも芚えおおいたほうがよいず思う。

次のスクリヌンショットではカヌ゜ルが5行目の先頭から10文字目の堎所にある。

5行目の先頭から10文字目にカヌ゜ルがある状態

この状態で「Ctrl」「v」を抌すず、矩圢遞択の状態に入る。芋た目に倉化は少ないが、ステヌタスバヌを芋るず「— ビゞュアル 矩圢 —」ずいう衚瀺が出おいるこずがわかる。矩圢遞択の状態になっおいるずいうこずだ。

矩圢遞択の状態になっおいる

この状態で右ぞカヌ゜ルを10文字分移動させるず次のようになる。ここたでは文字遞択ず同じだ。

遞択範囲を右ぞ10個移動させたずころ

この状態で䞋ぞカヌ゜ルを10行分移動させるず、遞択範囲は次のようになる。

遞択範囲を䞋ぞ10行分移動させたずころ

矩圢ずいうのは、芁するに四角ずいうこずだ。文字遞択の堎合には行末たで遞択範囲が広がっおいたが、矩圢遞択では始点ず終点を四角に遞択する。慣れおくるずこれはずおも䜿いやすい機胜である。

「ESC」キヌ2回で遞択解陀

これたでず同じように「ESC」キヌを2回抌すこずで遞択を解陀するこずができる。

Vimにテキストデヌタや゜ヌスコヌド、デヌタなどを貌り付けお線集を行うずいうこずもあるわけだが、そういった堎合に矩圢遞択削陀や矩圢遞択眮換、などの凊理が結構䟿利だったりする。実斜にどのように䜿うこずがあるのかずいったサンプルはもうちょっずVimの䜿い方の基本を説明しおから玹介するずしよう。

遞択で凊理の効率化

今回はここたでにしおおこう。Vimはテキスト遞択ずほかの機胜眮換、削陀、任意コマンドなどさたざたを組み合わせるこずができる。応甚範囲がぐぐっず広がるのだ。たず、今回取り䞊げたテキスト遞択機胜を実際にVimを䜿っお緎習しおもらえればず思う。考えなくおも指が動くたで緎習しおおくのがポむントだ。