Merge branch 'KaoriYa'
[MacVim/KaoriYa.git] / runtime / doc / usr_20.jax
blob161c09cfb8b1556139919187e90725ea567a59d2
1 *usr_20.txt*    For Vim バージョン 7.2.  Last change: 2006 Apr 24
3                      VIM USER MANUAL - by Bram Moolenaar
5                         コマンドラインを素早く入力する
8 Vim にはコマンド入力を簡単にするための一般的な機能が備わっています。コロン (:)
9 コマンドでは短縮入力、編集、履歴、文脈依存の補完機能が利用できます。
11 |20.1|  コマンドライン編集
12 |20.2|  コマンドライン短縮入力
13 |20.3|  コマンドライン補完
14 |20.4|  コマンドライン履歴
15 |20.5|  コマンドラインウィンドウ
17 次章: |usr_21.txt|  中断と再開
18 前章: |usr_12.txt|  便利な小技
19 目次: |usr_toc.txt|
21 ==============================================================================
22 *20.1*  コマンドライン編集
24 コロン (:) コマンドや検索コマンド (/ or ?) を使うとき、カーソルは画面の一番下
25 に表示されます。そこにコマンドや検索パターンを入力するわけです。その場所を「コ
26 マンドライン」と呼びます。
28 コマンドラインの編集で最もわかりやすいのは <BS> でしょう。カーソルの直前の文字
29 を削除できます。他の位置にある文字を削除したい場合は、矢印キーでカーソルを動か
30 してから <BS> を押してください。
31 例えば、次のように入力して: >
33         :s/col/pig/
35 <Enter> を押す前になって、"col" が "cow" の入力ミスであることに気づきました。
36 これを修正するには、左矢印キー (<Left>) を 5 回押して "col" の直後にカーソルを
37 動かしてから、<BS> と "w" を入力します: >
39         :s/cow/pig/
41 修正したら、その場で <Enter> を押しましょう。コマンドを実行するためにカーソル
42 を行末まで動かす必要はありません。
44 コマンドラインでのカーソル移動には次のキーがよく使われます:
46         <Left>                  1 文字左
47         <Right>                 1 文字右
48         <S-Left> or <C-Left>    1 単語左
49         <S-Right> or <C-Right>  1 単語右
50         CTRL-B or <Home>        行頭
51         CTRL-E or <End>         行末
53         Note:
54         <S-Left> (シフトキーを押したまま左矢印キーを押す) と <C-Left> (コント
55         ロールキーを押したまま左矢印キーを押す) が機能しないキーボードもありま
56         す。その他のシフトキーとコントロールキーの組み合せも同様に、機能しない
57         ことがあります。
59 カーソルはマウスでも動かせます。
62 削除
63 -----
65 上述のとおり、<BS> でカーソルの直前の文字を削除できます。単語を削除するには
66 CTRL-W を使います。
68         /the fine pig ~
70                      CTRL-W
72         /the fine ~
74 CTRL-U ですべてのテキストを削除できます。コマンドを最初から入力し直したいとき
75 に使ってください。
78 上書き
79 ------
81 <Insert> キーを押すと、挿入と上書きが切り替わります。次のテキストを使って説明
82 します:
84         /the fine pig ~
86 <S-Left> を 2 回押して (<S-Left> が機能しない場合は <Left> を 8 回押して)
87 "fine" の先頭にカーソルを動かします。<Insert> を押して上書きに切り替え、
88 "great" と入力します:
90         /the greatpig ~
92 おっと、スペースが消えてしまいました。ここで <BS> を押すと "t" が削除されてし
93 まいます (置換モードとは違いますね)。<Insert> を押して、上書きから挿入に切り替
94 え、スペースを入力します:
96         /the great pig ~
99 キャンセル
100 ----------
102 : または / コマンドを入力した後で、そのコマンドの実行をキャンセルしたくなった
103 場合は、CTRL-C または <Esc> を押してください。
105         Note:
106         <Esc> キーはどこでも使える「脱出」キーですが、残念なことに、古き良き
107         Vi では、コマンドラインで <Esc> を押すと、コマンドが実行されてしまいま
108         す。これはおそらくバグなので、Vim では <Esc> でコマンドをキャンセルで
109         きるようになっています。ただし、'cpoptions' を設定して Vi 互換の動作に
110         変更することもできます。また、マップが適用されたときは (それが Vi 用に
111         書かれたものであってもなくても) <Esc> は Vi 互換の動作をします。CTRL-C
112         を使えば設定に関係なくキャンセルできます。
114 コマンドラインの先頭にカーソルがあるときに <BS> キーを押すとコマンドをキャンセ
115 ルできます。これは行頭にある ":" や "/" を削除するような感覚です。
117 ==============================================================================
118 *20.2*  コマンドライン短縮入力
120 とても長い名前の ":" コマンドがいくつかあります。":substitute" が ":s" と短縮
121 できることは既に説明しましたが、これはなにも特別なことではありません。すべての
122 ":" コマンドが短縮できます。
124 コマンドはどこまで短縮できるでしょうか。アルファベットは 26 文字ですが、コマン
125 ドはそれよりたくさんあります。例えば、":set" の先頭は ":s" ですが、":s" では
126 ":set" を実行できません。":set" の短縮形は ":se" です。
127 二つのコマンドが同じ名前に短縮できたとしても、最短の名前を使えるのは一つのコマ
128 ンドだけです。その決定方法に明確なルールはないので、個別に覚えるしかありませ
129 ん。コマンドの最短の名前はヘルプファイルに記述されています。例: >
131         :s[ubstitute]
133 これは ":substitute" の短縮形が ":s" であることを示しています。それ以降の文字
134 は任意です。":su" でも ":sub" でも動作します。
136 ユーザーマニュアルではコマンドの長い名前と短い名前の両方が使われますが、読み難
137 い短縮形は使われません。例えば、":function" は ":fu" と短縮できますが、これだ
138 と大半の人が何の略なのか理解できないので ":fun" が使われます。(Vim に ":funny"
139 コマンドはありませんが、もしあれば、":fun" でも混乱を招きますよね)
141 Vim スクリプトを書くときはコマンドの長い名前を使うことをお勧めします。そうして
142 おけば、後で変更しようと思ったときに読むのが楽です。しかし、":w" (":write") や
143 ":r" (":read") のような頻繁に使われるコマンドなら短縮形を使っても構わないでしょ
144 う。
145 特にややこしいのは ":end" です。これは ":endif" の短縮形ですが、":endwhile" や
146 ":endfunction" と誤解しやすいので、常に長い名前を使うようにしましょう。
149 オプションの短い名前
150 --------------------
152 ユーザーマニュアルではオプションの長い名前が使われますが、ほとんどのオプション
153 には短い名前があります。":" コマンドと違い、オプションの短い名前は一つしかあり
154 ません。例えば、'autoindent' の短い名前は 'ai' なので、次の二つのコマンドは同
155 じ動作をします: >
157         :set autoindent
158         :set ai
160 オプションの長い名前と短い名前の一覧は |option-list| を参照してください。
162 ==============================================================================
163 *20.3*  コマンドライン補完
165 コマンドライン補完はこれだけでも Vi から Vim に乗り換えるに値する程の機能です。
166 一度使ってしまったら、手放せなくなるでしょう。
168 次のようなファイルを含むディレクトリがあるとします:
170         info.txt
171         intro.txt
172         bodyofthepaper.txt
174 bodyofthepaper.txt を開くには次のコマンドを使います: >
176         :edit bodyofthepaper.txt
178 いかにも打ち間違えそうです。もっと簡単にやりましょう: >
180         :edit b<Tab>
182 どちらも結果は同じになります。どういうことでしょうか。<Tab> キーによってカーソ
183 ル直前の単語 (この場合なら "b") が補完されたのです。ディレクトリが検索され、
184 "b" で始まるファイルが一つだけ見つかり、それはあなたが探しているファイルに違い
185 ないので、その名前が補完されました。
187 さて、次はこのように入力してみます: >
189         :edit i<Tab>
191 ビープ音が鳴り、次のように表示されます: >
193         :edit info.txt
195 ビープ音は複数のファイルが見つかったことを示しています。まずは (アルファベット
196 順で) 最初のファイルが表示されます。もう一度 <Tab> を押すと、次のようになりま
197 す: >
199         :edit intro.txt
201 つまり、最初の <Tab> で、探しているファイルが出てこなかったら、もう一度 <Tab>
202 を押せばよいのです。ファイルがたくさんあるなら、一つずつ表示していきましょう。
203 最後の補完候補を表示しているときに <Tab> を押すと、最初の状態に戻ります: >
205         :edit i
207 また最初から補完候補を表示できます。つまり、補完候補は循環表示されます。CTRL-P
208 を使うと、逆方向に移動できます:
210               <------------------- <Tab> -------------------------+
211                                                                   |
212                   <Tab> -->                    <Tab> -->
213         :edit i               :edit info.txt               :edit intro.txt
214                   <-- CTRL-P                   <-- CTRL-P
215            |
216            +---------------------- CTRL-P ------------------------>
219 文脈
220 -----
222 ":edit i" ではなく、":set i" と入力してから <Tab> を押すと、次のようになりま
223 す: >
225         :set icon
227 どうして ":set info.txt" にならないのでしょうか。それは、Vim が文脈を認識して
228 いるからです。補完される単語の種類は入力されたコマンドに依存します。":set" コ
229 マンドに指定するのはファイル名ではなくオプション名であることを Vim は知ってい
230 るのです。
231 上述の例と同様、<Tab> を入力すれば補完候補が一つずつ順番に表示されます。たいて
232 いは、いくつかの文字を入力してから補完した方が素早く補完できます: >
234         :set isk<Tab>
236 次のような結果になります: >
238         :set iskeyword
240 さて、"=" を入力してから <Tab> を押してみましょう: >
242         :set iskeyword=@,48-57,_,192-255
244 オプションの現在の設定が挿入されるので、それを編集することができます。
245 <Tab> で補完されるのはその場所に入力すべき内容です。どのように動作するかは自分
246 で試してみてください。期待したような結果にならないこともあると思いますが、それ
247 は、Vim がその文脈を認識できなかったか、その文脈における補完が実装されていない
248 かのどちらかです。その場合は <Tab> 文字が挿入されます (画面上では ^I と表示さ
249 れます)。
252 補完候補一覧
253 ------------
255 補完候補がたくさんあるとき、その一覧を確認することができます。それには CTRL-D
256 を使います。例えば、次のコマンドを入力してから CTRL-D を押してみます: >
258         :set is
260 次のような結果になります: >
262         :set is
263         incsearch  isfname    isident    iskeyword  isprint
264         :set is
266 補完候補の一覧が表示され、また元の入力に戻ります。この一覧に期待した項目がある
267 かどうか確認してください。ない場合は、<BS> でテキストを削除し、入力し直してく
268 ださい。補完候補がたくさんある場合は、さらにいくつかの文字を入力してから <Tab>
269 を押して補完してください。
270 注意深い方なら、候補一覧にある "incsearch" が "is" で始まっていないことに気づ
271 いたと思います。"is" は "incsearch" の短縮形です。ほとんどのオプションには短い
272 名前と長い名前がありますが、Vim は賢いので、 オプションの短い名前を見て、長い
273 名前に展開してくれます。
276 さらに他にも
277 ------------
279 CTRL-L コマンドを使うと、共通したところまで補完できます。例えば、"info.txt" と
280 "info_backup.txt" というファイルがあって、":edit i" と入力してから CTRL-L を押
281 すと、":edit info" になります。
283 'wildmode' オプションで補完の動作を変更できます。
284 'wildmenu' オプションを設定すると補完候補をメニューのように表示できます。
285 'suffixes' オプションに優先度の低いファイルを指定しておくと、それらのファイル
286 は補完候補の末尾に現れます。
287 'wildignore' オプションには補完候補として表示して欲しくないファイルを指定しま
288 す。
290 コマンドライン補完についての詳細は |cmdline-completion| を参照してください。
292 ==============================================================================
293 *20.4*  コマンドライン履歴
295 履歴については三章で簡単に説明しました。簡単に言えば、<Up> キーで以前に入力し
296 た古いコマンドラインを呼び出すことができる機能です。<Down> で新しい方のコマン
297 ドに戻れます。
299 履歴には四種類あります。ここでは ":" コマンドと検索コマンド ("/" or "?") の履
300 歴を説明します。"/" と "?" はどちらも検索コマンドなので、同じ履歴を共有します。
301 他には、式入力と input() 関数の履歴があります。|cmdline-history|
303 例えば、":set" コマンドを実行した後で、他のコマンドを 10 個実行し、再び ":set"
304 コマンドを実行したいとします。":" を押してから <Up> を 10 回押せばできますが、
305 もっと簡単な方法があります: >
307         :se<Up>
309 以前使った "se" で始まるコマンドに戻ります。これなら探していた ":set" コマンド
310 に効率良くたどり着けるでしょう。少なくとも、何度も何度も <Up> を押す必要はあり
311 ません (入力したすべてのコマンドが ":set" コマンドでもない限り)。
313 <Up> キーを押すと、入力されたテキストと履歴のコマンドラインが比較され、マッチ
314 した履歴だけが使われます。
315 探していた履歴が見つからなかった場合は、<Down> で元に戻ってから正しく入力し直
316 すか、CTRL-U を押して最初からやり直してください。
318 履歴をすべて見るには次のコマンドを使います: >
320         :history
322 ":" コマンドの履歴が表示されます。検索コマンドの履歴を表示するには、次のコマン
323 ドを使います: >
325         :history /
327 <Up> の代わりに CTRL-P を使うこともできますが、CTRL-P の前に入力されていたテキ
328 ストは無視されます。同様に、<Down> の代わりに CTRL-N を使うこともできます。
329 CTRL-P は previous (前)、CTRL-N は next (次) という意味です。
331 ==============================================================================
332 *20.5*  コマンドラインウィンドウ
334 コマンドラインでの文字入力は挿入モードでの文字入力とは違います。テキストを編集
335 するための多くのコマンドが使えません。通常のコマンドライン入力ではそれほど問題
336 になりませんが、複雑なコマンドを入力しなければならないときもあるでしょう。その
337 ようなときは、コマンドラインウィンドウが便利です。
339 次のコマンドでコマンドラインウィンドウを開いてください: >
341         q:
343 画面の下の方に (小さな) ウィンドウが作成されます。ウィンドウにはコマンドライン
344 履歴が表示され、最終行には空行があります:
346         +-------------------------------------+
347         |other window                         |
348         |~                                    |
349         |file.txt=============================|
350         |:e c                                 |
351         |:e config.h.in                       |
352         |:set path=.,/usr/include,,           |
353         |:set iskeyword=@,48-57,_,192-255     |
354         |:set is                              |
355         |:q                                   |
356         |:                                    |
357         |command-line=========================|
358         |                                     |
359         +-------------------------------------+
361 ウィンドウを開いた後はノーマルモードになっています。"hjkl" キーで移動できます。
362 例えば、"5k" を入力し、":e config.h.in" の行に移動します。"$h" で "in" の "i"
363 に移動し "cwout" と入力します。行が次のように変更されました:
365         :e config.h.out ~
367 <Enter> を押すとこのコマンドが実行され、コマンドラインウィンドウが閉じます。
368 <Enter> コマンドで現在行が実行されます。挿入モードでもノーマルモードでも同じ動
369 作です。
370 コマンドラインウィンドウでの編集は失われます。つまり、コマンドライン履歴は変更
371 されません。ただし、実行したコマンドは、通常どおり、履歴に追加されます。
373 コマンドラインウィンドウは、実行したいコマンドに似たコマンドを履歴の一覧から探
374 し、それをちょっと変更して再実行するような場合に便利です。コマンドラインウィン
375 ドウでは検索コマンドも使えます。
376 上の例の場合なら、"?config" という検索コマンドを実行すれば、以前に実行した
377 "config" を含んでいるコマンドを探せます。これは少し不思議ですね。コマンドライ
378 ンを使ってコマンドラインウィンドウの中を検索しているのですから。しかし、検索コ
379 マンドを入力するための新たなコマンドラインウィンドウを作成することはできませ
380 ん。コマンドラインウィンドウは常に一つだけです。
382 ==============================================================================
384 次章: |usr_21.txt|  中断と再開
386 Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl: