1 *visual.txt* For Vim バージョン 7.2. Last change: 2009 Oct 14
4 VIMリファレンスマニュアル by Bram Moolenaar
7 ビジュアルモード *Visual* *Visual-mode* *visual-mode*
9 ビジュアルモードは利用者にとってテキストの部分を選択する柔軟で簡単な方法であ
10 る。矩形範囲のテキスト(ブロック)を選択する唯一の方法でもある。
12 ユーザーマニュアルの|04.4|で簡単に説明されている。
14 1. ビジュアルモードを使う |visual-use|
15 2. ビジュアルモードの開始と終了 |visual-start|
16 3. ビジュアル領域の変更 |visual-change|
17 4. ビジュアル領域での操作 |visual-operators|
18 5. 矩形範囲の操作 |blockwise-operators|
19 6. 繰り返し |visual-repeat|
20 7. 使用例 |visual-examples|
21 8. 選択モード |Select-mode|
23 {Vi にはビジュアルモードは無く、"visual"という名前はExモードとは区別するため
25 {コンパイル時に|+visual|が無効にされていると使えません}
27 ==============================================================================
28 1. ビジュアルモードを使う *visual-use*
30 ビジュアルモードを使うには3つの部分から構成される:
31 1. 選択したいテキストの開始位置を"v"、"V"またはCTRL-Vでマークする。
32 カーソルの下の文字が開始位置として使用される。
33 2. 選択したいテキストの終了位置に移動する。
34 ビジュアルモードの開始位置からカーソルの下の文字を含むテキストが強調され
39 ビジュアルモードでの強調表示の仕方を設定するのに、'highlight'オプションを使用
41 文字のない場所を選択するには'virtualedit'を設定する。
43 強調されたテキストにはカーソルの下の文字も含まれる。
44 けれども、'selection'オプションが"exclusive"に設定されていて、カーソルが
45 Visualエリアの後にあるとき、カーソルの下の文字は含まれない。
47 "v"では開始位置より前と、終了位置より後のテキストは強調されない。しかし全ての
48 大文字とアルファベット以外のキーによる操作は、"~"と"U"を除いて、表示に関係なく
52 CTRL-V(矩形ビジュアルモード)は開始位置からカーソルの位置まで、テキストを矩形に
53 強調する。しかし、幾つかの操作(下記のリストを参照)はそれとは関係無く行単位で適
54 用される。「変更」と「置き換え」の操作は強調されたテキストを削除し、選択範囲の
57 ==============================================================================
58 2. ビジュアルモードの開始と終了 *visual-start*
60 *v* *characterwise-visual*
66 *CTRL-V* *blockwise-visual*
67 CTRL-V 矩形ビジュアルモードを開始する。Note: ウィンドウズでは
68 CTRL-Vはテキストの貼り付けにマップされることがあり、そ
70 |CTRL-V-alternative|を参照。
72 ビジュアルモードの最中に<Esc>を使用したり、マウスの右ボタンをクリックしたり、
73 または他のバッファに移動するコマンドを使用した場合には、強調は停止しテキストに
74 は何の操作も行なわれない。文字単位のビジュアルモード中に"v"を叩いた時や、矩形
75 ビジュアルモード時の"CTRL-V"、行単位のビジュアルモードでの"V"も同様である。
76 CTRL-Zを押すと強調は停止し、エディタが一時停止するか新しいシェルが開始される
79 タイプ後の新モード: *v_v* *v_CTRL-V* *v_V*
80 旧モード "v" "CTRL-V" "V" ~
82 ノーマル ビジュアル 矩形ビジュアル 行ビジュアル
83 ビジュアル ノーマル 矩形ビジュアル 行ビジュアル
84 矩形ビジュアル ビジュアル ノーマル 行ビジュアル
85 行ビジュアル ビジュアル 矩形ビジュアル ノーマル
87 *gv* *v_gv* *reselect-Visual*
88 gv 最後に使用したのと同じ範囲のビジュアルモードを開始す
89 る。ビジュアルモードで使用すると、現在の選択領域と以前
91 ビジュアルモードで"p"や"P"を実行した後にこれを使うと、
95 <LeftMouse> 現在のカーソル位置を設定する。ビジュアルモードが活動中
96 の場合は停止する。オプション'mouse'が'n'もしくは'a'を
97 含むときだけ働く。指定した位置がスクリーンの下端から
98 'so'行以内の時にはテキストがスクロールアップする。指定
99 した位置がスクリーンの上端から'so'行以内の時にはテキス
103 <RightMouse> ビジュアルモードが活動していないのならば開始する。カー
104 ソルの位置からクリックした位置までのテキストが強調され
105 る。ビジュアルモードが既に活動しているならば、開始位置
106 か終了位置のどちらか近いほうがクリックした位置になる。
107 オプション'mouse'が'n'もしくは'a'を含むときだけ働く。
109 Note: 'mousemodel'が"popup"の時には<RightMouse>の代わ
110 りに<S-LeftMouse>を使用する。
113 <LeftRelease> <LeftMouse>と同じ位置でなければ、これは<LeftMouse>のよ
114 うに働く。古いxtermでは実行されているディスプレイ(環境
115 変数DISPLAYもしくは-display引数による)へのアクセスが無
116 い限り、xterm上ではボタンが離されるまで選択領域を見る
117 ことはできない。'mouse'オプションが'n'もしくは'a'を含
120 ビジュアルモードが活動していない時に"v"、"V"もしくはCTRL-Vが数字(カウント)の後
121 に使用されると、以前の強調領域の大きさが開始位置から使用される。その時カーソル
122 は強調領域の終了位置へ移動し通常の操作を行なうことができる。領域の形式(文字、
124 - 行ビジュアルモード: 行数がカウント倍される。
125 - 矩形ビジュアルモード; 行数とカラム数がカウント倍される。
126 - 1行内の通常ビジュアルモード: 文字数がカウント倍される。
127 - 複数行にまたがる通常ビジュアルモード: 行数がカウント倍され、最終行だけは前回
128 の強調領域の最終行と同じ文字数が使用される。
129 テキストの開始位置はカーソルの位置となる。強調テキストを拡張するための最後のコ
130 マンドとして"$"コマンドが使用された場合、領域は最長の行の最右端のカラムまで拡
133 前回の時と全く同じ領域を強調したいときには、"gv"を使用できる |gv| |v_gv|。
136 <Esc> ビジュアルモード: ビジュアルモードを停止する。
139 CTRL-C ビジュアルモード: ビジュアルモードを停止する。挿入モー
140 ドがぶら下がっている時には(モードメッセージが"--
141 (insert) VISUAL --"となる)、そちらも終了する。
143 ==============================================================================
144 3. ビジュアル領域の変更 *visual-change*
147 o 強調されたテキストのもう一方の端へ移動する: 現在のカー
148 ソルの位置が強調されたテキストの開始地点になり、カーソ
149 ルは強調されたテキストのもう一方の端に移動する。強調さ
153 O 強調されたテキストのもう一方の端へ移動する: これは"o"
154 に近い動作だが、ビジュアル矩形モードではカーソルが同じ
155 行内のもう一方のコーナーに移動する。移動した先のキャラ
156 クタが画面上で1つ以上の文字幅を占有している場合(例えば
157 <Tab>文字)、強調される範囲は変更・拡張される。
160 矩形(ブロック)選択モード時に"$"コマンドを使用すると、選択されるテキストの右終
161 端は選択されているラインのうち一番長いものによって決定される。この状態は水平方
164 ブロックの終端へ移動するために色々なコマンドを使うことができるが、Exコマンド、
165 変更を加えるコマンド、もしくはファイルを放棄するコマンドは使用できない。次の文
166 字で開始するコマンド".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I,
167 CTRL-O を使用するとブザー音が発生し、ビジュアルモードが継続される。
169 同じバッファを表示している別のウインドウに切り替えるとき、そのウインドウのカー
170 ソル位置はVisual選択に合わせて調整されます。これは特にVisual選択の開始位置や終
171 了位置を確認するのに便利です。選択範囲を変更するのに<RightMouse>が使えます。
172 ('mousemodel'が"popup"に設定されているときは<S-LeftMouse>)。
174 ==============================================================================
175 4. ビジュアル領域での操作 *visual-operators*
184 ! 外部コマンドによるフィルタ (1) |v_!|
185 = 'equalprg'オプションで指定されたフィルタ (1) |v_=|
186 gq 'textwidth'の長さによる行の整形 (1) |v_gq|
189 aw (空白文字を含む) 1語(訳注:|word|) |v_aw|
190 iw 1語(訳注:|word|) |v_iw|
191 aW (空白文字を含む) 1語(訳注:|WORD|) |v_aW|
192 iW 1語(訳注:|WORD|) |v_iW|
193 as (空白文字を含む) 1文 |v_as|
195 ap (空白文字を含む) 1段落 |v_ap|
197 ab (丸括弧文字を含む) ()のブロック |v_ab|
199 aB (波括弧文字を含む) {}のブロック |v_aB|
201 a< (大小記号文字を含む) <>のブロック |v_a<|
203 a[ (各カッコ文字を含む) []のブロック |v_a[|
207 : 強調された行にExコマンドを適用 (1) |v_:|
225 (1): 常に全部の行、|:visual_example|を参照。
226 (2): CTRL-Vを使ってないときは全部の行。
227 (3): CTRL-Vを使ってないときは全部の行、CTRL-Vを使っているときは行の最後までを
229 (4): CTRL-Vを使っているときにはブロックにのみ作用。
231 ビジュアルモードでは特別なキー割り当てを行なうために":vmap"コマンドを使うこと
232 が出来ることに注意。例えば、"/"をビジュアル領域を拡張するのではなくて、選択し
233 たテキストによる検索を行なわせたい場合には: >
235 (<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし
236 'cpoptions'から'B'と'<'のフラグを外しておく必要がある)
238 """コマンドを使用するときにレジスタ名を指定したい場合には、操作キーを入力する
239 前にタイプする: "v{move-around}"xd"。
241 コマンドの回数を指定したい場合には、操作キーを入力する前にタイプする:
242 "v{move-around}3>" (行を3単位、右へインデントする)。
245 {move-around}は一連の移動コマンドのシーケンス。1つの移動コマンドを意味する
248 ビジュアル領域に対して操作を行うもう1つの方法は、パターンにアイテム|/\%V|を含
249 めることがある。例えば、ビジュアル領域内のすべての'('を'X'に置換するには: >
253 ==============================================================================
254 5. 矩形範囲の操作 *blockwise-operators*
256 {|+visualextra|機能を無効にしてコンパイルした場合には利用できない}
258 注意: 'virtualedit'オプションを設定して、行末を越えた選択や、Tab文字の(表示上
262 矩形選択中に、I文字列<ESC> を行なうとブロック内の全ての行のブロック先頭にその
263 文字列が挿入され、行の長さはその分拡張される。選択ブロックの左側のカラムより短
264 い行は変更されない。タブは見た目のカラムを保つように分解される。
268 矩形選択中に、A文字列<ESC> を行なうとブロック内の全ての行のブロック末尾ににそ
269 の文字列が挿入される。ブロックの右端が真っ直ぐでない時には、行の長さの違いに
272 1. ブロックが <C-v>$ で作成された場合
273 このケースでは各行の最後に文字列が追加される。
274 2. ブロックが <C-v>{move-around}で作成された場合。
275 このケースではブロック内の各行のブロック末尾に文字列が追加され、行長が拡張
276 される。さらにブロックの末尾を揃えるために空白文字が挿入される。
278 Note: "I"と"A"は変更によって行が拡張されるときに違う動作をする。これはわざとそ
279 うなっていて、あなたがしたいようにできる。
282 矩形選択されたテキストの全てが同じテキスト文字列によって置き換えられる。"c"を
283 押した時には選択されたテキストが消去された後に挿入モードに入る。テキスト(改行
284 を除く)を入力できる。<Esc>を叩くと、選択されていた行全てに同じ文字列が入力され
287 ビジュアル矩形変更(大文字) *v_b_C*
288 小文字の"c"と同様だが、選択領域が各行の末尾まで拡張される。
292 ブロックが'shiftwidth'によりシフトされる。ブロックの右端には拠らない。ブロック
293 の左端がどのポイントから右シフトを適用するかを決定し、'ts'と'et'に従い最適なタ
294 ブ文字が埋め込まれる(パディング)。ブロックの左端が何処まで左シフトするかを決定
300 強調された領域の全ての画面上の文字が同じ文字で置き換えられ、タブ文字は画面上の
301 レイアウトを保持するために仮想的な空白文字に置き換えられる。
305 ==============================================================================
306 6. 繰り返し *visual-repeat*
308 ビジュアルモードの操作を繰り返して行なう時には、最後の時と同じ量のテキストに対
311 - 矩形ビジュアルモード: 同じ行数とカラム数
312 - 1行内の通常ビジュアルモード: 同じ文字数
313 - 複数行にまたがる通常ビジュアルモード: 同じ行数で、最終行だけは前回の時の最
315 テキストの開始位置は現在の位置となる。最後のコマンドとして強調されたテキストを
316 拡張するために"$"が使用された場合には、繰り返されるコマンドへは一番長い行の右
320 ==============================================================================
321 7. 使用例 *visual-examples*
324 現在":"コマンドは行全体に対して働くだけである。行の一部を選択して、":!date"の
325 ような何かを行なっても1行全体が置換わってしまう。行の一部だけを置き換えたい場
326 合には何かマッピングのようなものを作らなければならないだろう。将来のリリースで
327 は":"は部分的に動作するようになるだろう。
329 ここに1つ、選択されたテキストを"date"の出力に置き換える例がある: >
330 :vmap _a <Esc>`>a<CR><Esc>`<i<CR><Esc>!!date<CR>kJJ
332 (<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし
333 'cpoptions'から'B'と'<'のフラグを外しておく必要がある)
338 a<CR><Esc> 選択領域の直後に改行を挿入する
340 i<CR><Esc> 選択領域の直前に改行を挿入する
341 !!date<CR> 選択されたテキストをdateでフィルタリングする
345 選択したテキストを検索に使用することを可能にするマッピングのアイデアがここにあ
349 (<>表記 |<>| の中身は、これを入力する時には文字通り入力すれば良い; ただし
350 'cpoptions'から'B'と'<'のフラグを外しておく必要がある)
352 特別なキャラクタ('.'や'*'のようなもの)が問題を引き起こすことに注意。
354 矩形ビジュアルモードの例 *blockwise-examples*
355 以下のテキストを使って、矩形モードのコマンドの使用法と結果を示していく。どの
356 ケースでも、初めカーソルはテストテキストの最初の行の先頭の'a'の上にあるものと
358 以下、modelineの設定は ":ts=8:sw=4:" であることを仮定している。
360 次のように設定しておくと理解の助けになるだろう。
363 <TAB>とかかれている場所は本物のタブに読み替える。これが操作を可視化してくれ
368 abcdefghijklmnopqrstuvwxyz
369 abc defghijklmnopqrstuvwxyz
370 abcdef ghi jklmnopqrstuvwxyz
371 abcdefghijklmnopqrstuvwxyz
373 1. fo<C-v>3jISTRING<ESC> *v_b_I_example*
375 abcdefghijklmnSTRINGopqrstuvwxyz
376 abc STRING defghijklmnopqrstuvwxyz
377 abcdef ghi STRING jklmnopqrstuvwxyz
378 abcdefghijklmnSTRINGopqrstuvwxyz
380 2. fo<C-v>3j$ASTRING<ESC> *v_b_A_example*
382 abcdefghijklmnopqrstuvwxyzSTRING
383 abc defghijklmnopqrstuvwxyzSTRING
384 abcdef ghi jklmnopqrstuvwxyzSTRING
385 abcdefghijklmnopqrstuvwxyzSTRING
387 3. fo<C-v>3j3l<.. *v_b_<_example*
389 abcdefghijklmnopqrstuvwxyz
390 abc defghijklmnopqrstuvwxyz
391 abcdef ghi jklmnopqrstuvwxyz
392 abcdefghijklmnopqrstuvwxyz
394 4. fo<C-v>3j>.. *v_b_>_example*
396 abcdefghijklmn opqrstuvwxyz
397 abc defghijklmnopqrstuvwxyz
398 abcdef ghi jklmnopqrstuvwxyz
399 abcdefghijklmn opqrstuvwxyz
401 5. fo<C-v>5l3jrX *v_b_r_example*
403 abcdefghijklmnXXXXXXuvwxyz
404 abc XXXXXXhijklmnopqrstuvwxyz
405 abcdef ghi XXXXXX jklmnopqrstuvwxyz
406 abcdefghijklmnXXXXXXuvwxyz
408 ==============================================================================
409 8. 選択モード *Select* *Select-mode*
411 選択モードはビジュアルモードに似ているように見えるが、受け付けるコマンドが少し
412 異なる。これはMicrosoft Windowsの選択モードに似ている。オプション'showmode'が
413 設定されている時には、"-- SELECT --"が最下の行に表示される。
416 - 'selectmode'が"mouse"を含んだ状態で、マウスを使って領域を選択する。
417 'mouse'が現在のモードのフラグを含んでなければならない。
418 - 'selectmode'が"key"を含んだ状態で、シフトキーを押しながら表示できない移動コ
419 マンドを使用する。例えば: <S-Left>や<S-End>。'keymodel'が"startsel"を含んで
421 - 'selectmode'が"cmd"を含んだ状態で "v", "V" もしくはCTRL-Vを使用する。
422 - ノーマルモードで "gh", "gH" もしくは "g_CTRL-H" コマンドを使用する。
423 - ビジュアルモードでCTRL-Gを押す。 *v_CTRL-G*
426 - 表示可能な文字、及び<NL>と<CR>は選択領域を削除し、Vimは入力モードに移行す
428 - シフトキーを押しながらの表示不可能な移動コマンド、は選択領域を拡張する。
429 'keymodel'は"startsel"を含まねばならない。
430 - シフトキーを押さずに表示不可能な移動コマンドを使用すると、選択モードを終了す
431 る。'keymodel'は"stopsel"を含まねばならない。
433 - CTRL-Oでビジュアルモードに切り替え1つだけコマンドを実行する。 *v_CTRL-O*
434 - CTRL-Gでビジュアルモードに切り替える。
436 それ以外では、入力された文字はビジュアルモードと同様に扱われる。
438 選択モードで操作が行なわれると、行選択の時には、選択された行が操作対象になる
439 が、文字選択の時のように扱われる。例えば、行全体を削除した時には、後でその内容
443 選択モード時のマッピングとメニュー *Select-mode-mapping*
445 コマンド|:vmap|や|:vmenu|で定義したマッピングとメニューはビジュアルモードと選
446 択モードの両方で働く。選択モードでは、それらのマッピングやメニューが実行される
447 直前に自動的にビジュアルモードに切り替わるので、ビジュアルモードと同じ動作が行
448 われる。ビジュアルモードと選択モードで別々にマッピングを定義するときは|:xmap|
451 ユーザーは印字可能な文字を押すと選択された領域が置換されることを期待している。
452 そのため、選択モードで印字可能な文字にマップするのは避けること。または |:map|
453 と|:vmap|のあとで |:sunmap| をして選択モードに対するマップを削除すること。
455 マッピング及びメニューが終了した後には、選択領域が削除されるか、他のバッファに
456 切り替わるか、ウィンドウのレイアウトが変更されない限り、選択領域が再び有効にな
459 文字が入力されたとき、選択領域が削除され挿入モードにはいると挿入モードのマッピ
460 ングが適用されます。選択モードで入力された文字に挿入モードのマッピングが適用さ
461 れると言うのはおそらく混乱を招きます。そのうえ言語マッピングも適用されます。
464 gV 選択モードのマッピング及びメニューが終了したあとでビ
465 ジュアル領域が再度自動的に選択されるのを抑制する。マッ
466 ピングやメニューの終わる直前にこれを使用する。少なくと
467 もセレクションのあらゆる操作の後に行なわれるべきであ
471 gh 文字選択モードを開始する。これは"v"に似ているが、ビ
472 ジュアルモードの代わりに選択モードを開始する。
473 覚え方: "get highlighted"
476 gH 行選択モードを開始する。これは"V"に似ているが、
477 ビジュアルモードの代わりに選択モードを開始する。
478 覚え方: "get Highlighted".
481 g CTRL-H 矩形選択モードを開始する。これはCTRL-Vに似ているが、ビ
482 ジュアルモードの代わりに選択モードを開始する。
483 覚え方: "get Highlighted".
485 vim:tw=78:ts=8:ft=help:norl: