Contents

usr_02 - vimdoc

Home
*usr_02.txt*    For Vim バージョン 7.3.  Last change: 2010 Jul 20

                     VIM USER MANUAL - by Bram Moolenaar

                                 初めての Vim


この章では、Vim を使ってファイルを編集するための最低限のことを説明します。操作
が下手でも遅くても、とにかく編集できるようになりましょう。この章に出てくるコマ
ンドはこれからの基礎になるものなので、少し時間をとって練習してください。

|02.1|  Vim の起動方法
|02.2|  文字の挿入
|02.3|  カーソル移動
|02.4|  文字の削除
|02.5|  undo (取り消し) と redo (やり直し)
|02.6|  他の編集コマンド
|02.7|  Vim の終了
|02.8|  ヘルプの引き方

次章: |usr_03.txt|  カーソルの移動
前章: |usr_01.txt|  マニュアルについて
目次: |usr_toc.txt|

==============================================================================
*02.1*  Vim の起動方法

Vim を起動するには次のコマンドを入力します。

        gvim file.txt

UNIXならコマンドプロンプトから実行できます。Microsoft Windows環境では、MS-DOS
プロンプトを開いて、入力してください。
Vim が起動して file.txt という名前のファイルの編集が開始されます。これは新しい
ファイルなので、ウィンドウは空になっています。次のような画面が表示されます:

        +---------------------------------------+
        |#                                      |
        |~                                      |
        |~                                      |
        |~                                      |
        |~                                      |
        |"file.txt" [New file]                  |
        +---------------------------------------+
             ("#" はカーソルの位置です)

ティルド(~)の行は、ファイルにその行がないことを示しています。ファイルの
末尾より後ろを表示する場合にティルドが表示されます。画面の下の方に、編集中の
ファイル名は "file.txt" で、それが新しいファイルであることが表示されています。
このメッセージの表示は一時的なもので、他のメッセージが表示されると消えてしまい
ます。


VIM コマンド
------------

gvim は編集用のウィンドウを新しく作ります。次のコマンドを使った場合は:

        vim file.txt

コマンドウィンドウの中で編集できます。つまり、xterm の中で実行すれば、Vim は
xterm ウィンドウを使います。Microsoft Windows の MS-DOS プロンプトを使っている
場合も、そのウィンドウの中で編集できます。gvim でも vim でもテキストは同じよう
に表示されますが、gvimにはメニューバーなどの追加機能があります。詳しくは後で述
べます。

==============================================================================
*02.2*  文字の挿入

Vim はモード型エディタです。モードによって挙動が変わります。一番よく使うモード
は「ノーマルモード」と「挿入モード」です。ノーマルモードでは、入力した文字は
コマンドとして扱われます。挿入モードでは、入力した文字はそのまま挿入されます。
Vim を起動した直後はノーマルモードになっています。挿入モードに入るには、"i" コ
マンドを入力します (i は Insert の意)。これで、文章を入力できるようになります。
入力した文章はファイルに挿入されます。入力を間違えても心配する必要はありませ
ん。後から修正できます。プログラマーのリメリック(詩の一種)を入力して見ましょ
う。次のように入力します:

        iA very intelligent turtle
        Found programming UNIX a hurdle

"turtle" を入力した後で <Enter> キーを押して改行します。最後に <Esc> キーを押
して挿入モードを終了し、ノーマルモードに戻ります。このとき、Vim ウィンドウには
次のような二行が表示されています。

        +---------------------------------------+
        |A very intelligent turtle              |
        |Found programming UNIX a hurdle        |
        |~                                      |
        |~                                      |
        |                                       |
        +---------------------------------------+


今は何モード?
-------------

現在のモードを確認できるようにするには、次のコマンドを入力してください。

        :set showmode

":" (コロン記号) を入力すると、カーソルがウィンドウの最下段に移動します。ここ
はコロンコマンド (":"で始まるコマンド) を入力する場所です。<Enter> キーを押す
とコマンドが実行されます (コロンで始まるコマンドは全てこの方法を使います)。
さて、"i" コマンドを入力すると、ウィンドウの最下段に "― 挿入 ―" という表示が
現れます。これは、あなたが挿入モードにいることを示しています。


        +---------------------------------------+
        |A very intelligent turtle              |
        |Found programming UNIX a hurdle        |
        |~                                      |
        |~                                      |
        |― 挿入 ―                               |
        +---------------------------------------+

<Esc> を押すとノーマルモードに戻り、最下段は空白になります。


トラブルを避ける
----------------

Vim を使い始めたときはモードを混同しがちです。現在のモードを忘れてしまったり、
知らないうちに間違ってモードを変更してしまったりすることがあります。どのモード
にいる場合でも <Esc> を押せばノーマルモードに戻れます。<Esc> を二回押さなけれ
ばならないときもあります。ノーマルモードで <Esc> を押すとビープ音が鳴るので、
その場合は既にノーマルモードにいるということです。

==============================================================================
*02.3*  カーソル移動

ノーマルモードでは、次のキーを使って移動できます:

        h   左                                          *hjkl*
        j   下
        k   上
        l   右

最初はでたらめなコマンドに思えるかもしれません。"l" キーで 右 (right) に移動す
るなんておかしいですね。しかしこれには合理的な理由があります。エディタで最もよ
く使うのはカーソル移動であり、これらのキーは右手のホームポジションにあるので
す。つまり、(特に 10 本の指を使ってタイプする人が) 最も速く打てる場所にコマン
ドが配置されています。

        Note:
        カーソルは矢印キーでも移動できます。しかし、ホームポジションから手を離
        さなければならないので、編集速度は落ちてしまいます。一時間に数百回も移
        動することを考えると、結構な時間が消費されることになります。
        また、矢印キーが無いキーボードや、矢印キーの配置場所がおかしいキーボー
        ドもあります。hjkl の使い方を知っていれば、そのような場合でも安心です。

コマンドを覚えるには、"h" は左にあって、"l" は右にあって、"j" は下を指してい
る、とでも覚えてください。図で示します:

                       k
                   h     l
                     j

移動コマンドを覚える一番の方法は使ってみることです。"i" コマンドを使って適当な
テキストを入力し、hjkl キーを使って動き回り、いろんな場所に文字を挿入してみて
ください。<Esc> キーを押してノーマルモードに戻るのを忘れずに。|vimtutor| を使っ
て練習してみるのもいいでしょう。

日本のユーザーへ、Hiroshi Iwataniさんは次のような提案をしています。

                        Komsomolsk
                            ^
                            |
           Huan Ho      <--- --->  Los Angeles
        (Yellow river)      |
                            v
                          Java (ジャワ島。プログラミング言語のあれではない)

==============================================================================
*02.4*  文字の削除

文字を削除したい場合は、文字の上にカーソルを移動して "x" を押します。(これはタ
イプライタを使っていた古い時代に、消したい文字の上に "xxxxxx" と印字していたの
と同じ感覚です)。例えば、例文の一行目にカーソルを移動して、xxxxxxx (xを7つ) 打
ち、"A very " を消してみましょう。その結果は次のようになります:

        +---------------------------------------+
        |intelligent turtle                     |
        |Found programming UNIX a hurdle        |
        |~                                      |
        |~                                      |
        |                                       |
        +---------------------------------------+

さて、新しいテキストを挿入してみましょう。例えば次のように入力します:

        iA young <Esc>

"i" で挿入を開始し、"A young " を入力しています。最後に <Esc> キーを押して挿入
モードを抜けます。結果は次のようになります。

        +---------------------------------------+
        |A young intelligent turtle             |
        |Found programming UNIX a hurdle        |
        |~                                      |
        |~                                      |
        |                                       |
        +---------------------------------------+


行削除
------

行全体を消すには "dd" コマンドを使います。行が消された場所は、それ以降の行を上
げることで詰められます。

        +---------------------------------------+
        |Found programming UNIX a hurdle        |
        |~                                      |
        |~                                      |
        |~                                      |
        |                                       |
        +---------------------------------------+


改行を取る
----------

Vim では複数の行を一行にまとめることができます。これは行と行の間にある改行文字
を削除するのと同じです。それには "J" コマンドを使います。
例えば、次の二行があるとします:

        A young intelligent
        turtle

最初の行にカーソルを動かし "J" を押すと次のようになります:

        A young intelligent turtle

==============================================================================
*02.5*  undo (取り消し) と redo (やり直し)

間違ってテキストを削除してしまった場合、同じ内容を入力し直すこともできますが、
もっと簡単な方法があります。"u" コマンドで直前の編集結果を undo (取り消し)
できます。例えば、"dd" コマンドで削除した行を、"u" コマンドで元に戻せます。
もう一つ例を示します。カーソルを一行目の A に移動して:

        A young intelligent turtle

xxxxxxx とタイプし、"A young" を削除します。結果は次のようになります:

         intelligent turtle

"u" で直前の削除が取り消されます。最後に削除されたのは g なので、その文字が復
活します。

        g intelligent turtle

もう一度 "u" を実行すると、さらに一つ前に削除された文字が復活します:

        ng intelligent turtle

次の "u" コマンドでは u が復活し、次々と元に戻すことができます:

        ung intelligent turtle
        oung intelligent turtle
        young intelligent turtle
         young intelligent turtle
        A young intelligent turtle

        Note:
        "u" を二回押したときに、最初の状態に戻ってしまった場合は、Vi 互換モー
        ドが設定されています。|not-compatible| を参照して正しく設定してくださ
        い。
        このマニュアルでは「Vim方式」の使い方を前提にしています。古き良き時代
        の Vi 方式を使いたい場合は、細かい部分でマニュアルの説明と違うことがあ
        るので注意してください。


redo (やり直し)
---------------

undo し過ぎてしまった場合は、CTRL-R (redo) を押すことで、直前のコマンドを
取り消せます。つまり、undo を undo します。実際に二回 CTRL-R を押してみましょ
う。"A "の二文字が消えます。

        young intelligent turtle

undo コマンドには特別なバージョン、"U" (行 undo) コマンドがあります。行 undo
コマンドは直前に編集した行のすべての変更を取り消します。このコマンドは、二回実
行すると、直前の "U" が取り消されます。

        A very intelligent turtle
          xxxx                          "very"を削除

        A intelligent turtle
                      xxxxxx            "turtle"を削除

        A intelligent
                                        "U" で行全体を元に戻す
        A very intelligent turtle
                                        "u" で "U" を undo
        A intelligent

"u" が undo で、 CTRL-R が redo であるのに対し、"U" コマンドはそれ自身が変更コ
マンドです。ちょっとわかりにくいかも知れませんが心配はいりません。"u" と
CTRL-R があればどんな場合でも大丈夫だ、ってことです。詳細は |32.2| にあります。

==============================================================================
*02.6*  他の編集コマンド

Vim には文章を編集するための数多くのコマンドがあります。下記、または|Q_in|を参
照してください。ここでは頻繁に使うものだけを述べます。


追記 (APPENDING)
----------------

"i" コマンドはカーソルの前に文字列を挿入しますが、行末に文字を追加したいときは
はどうすればいいでしょうか? それにはカーソルの後ろに文を挿入できないといけませ
ん。"a" (append) コマンドで追記できます。
例えば、次の行を

        and that's not saying much for the turtle.
このように変更したいとします
        and that's not saying much for the turtle!!!

まずカーソルを行末のピリオドの上に動かし、"x" でピリオドを消します。この時カー
ソルは行末の turtle の "e" の上にあります。ここで、次のコマンドを入力します。

        a!!!<Esc>

これで turtle の後ろに三つの "!" 記号が追加されます:

        and that's not saying much for the turtle!!!


新しい行を開く
--------------

"o" コマンドを使うと、カーソルの下に新しい空の行が作成され、挿入モードに入りま
す。そのため、そのまま新しい行の文章を入力できます。
以下のような二行があり、カーソルが一行目のどこかにあるとします:

        A very intelligent turtle
        Found programming UNIX a hurdle

"o" コマンドを実行し、テキストを入力すると:

        oThat liked using Vim<Esc>

次のような結果になります:

        A very intelligent turtle
        That liked using Vim
        Found programming UNIX a hurdle

"O" コマンド (大文字) を使うと、カーソルの上に空行を作成できます。


カウンタを使う
--------------

例えば、9 行上に移動したい場合、"kkkkkkkkk" とタイプすることもできますが、"9k"
コマンドでも同様に移動できます。実はほとんどのコマンドには回数を指定できます。
例えば上記の例では、"a!!!<Esc>" で三つの "!" 記号を追加しましたが、これは
"3a!<Esc>" と入力することもできます。最初の 3 はコマンドを三回実行することを指
定しています。同様に、三文字削除したい場合は "3x" を使います。カウントは必ず対
象となるコマンドの前に指定してください。

==============================================================================
*02.7*  Vim の終了

Vim を終了するには "ZZ"コマンドを使います。ファイルが保存され、Vim が終了しま
す。

        Note:
        他の多くのエディタと違い、Vim は自動的にバックアップを作成しません。
        "ZZ" と打つとファイルが上書きされるため、元に戻す方法はありません。バッ
        クアップファイルを作成するように設定することもできます。|07.4|を参照し
        てください。


変更を破棄する
--------------

ファイルを編集した後で、元の方が良かったと気づくことがあると思います。心配はい
りません。「全部投げ捨てて終了する」コマンドがあります。

        :q!

コマンドを確定するには <Enter> キーが必要ですよ。お忘れなく。

詳細を説明すると、このコマンドは三つの部分から成っています。":" はコマンドライ
ンモードの開始、"q" コマンドはエディタを終了するコマンド、"!" はオーバーライド
修飾詞です。
変更を破棄するにはオーバーライド修飾詞が必要です。単に ":q" を実行した場合、エ
ラーメッセージが表示され、コマンドは実行されません:

        E37: 最後の変更が保存されていません (! で変更を破棄)

オーバーライドを指定することで、「バカげたことをしてるように見えるのはわかって
る。でもボクは大人だし、本当にそうしたいんだ」と Vim に告げているわけです。

Vim を終了したくない場合は、":e!" コマンドでオリジナルのファイルを再読み込みで
きます。

==============================================================================
*02.8*  ヘルプの引き方

知りたいことは何でも Vim のヘルプで調べることができます。どんどん調べてくださ
い!
次のコマンドでヘルプの総合案内が表示されます:

        :help

ヘルプは <F1> ファンクションキーでも表示できます。キーボードに <Help> キーがあ
る場合はそれも使えます。
":help" に引数を指定しなかった場合は総合案内が表示されます。Vim の作者はとても
賢い (いや、すごい怠け者かも) ので、ヘルプウィンドウには普通の編集ウィンドウが
使われています。ヘルプウィンドの中ではすべてのノーマルモードコマンドが使えま
す。したがって、h, j, k, l で 上下左右に移動できます。
ヘルプウィンドウは、エディタを終了するのと同じコマンド ("ZZ") で閉じることがで
きます。この場合は、ヘルプウィンドウが閉じるだけで、Vim は終了しません。

ヘルプを読むと、縦棒 "|" で囲まれた文字に気づくと思います (例:|help|)。それは
ハイパーリンクです。その場所にカーソルを置いて、CTRL-] (タグジャンプ) を押す
と、そのヘルプにジャンプできます。(理由は省きますが、Vim ではハイパーリンクの
ことをタグと呼びます。CTRL-] はカーソル下の単語をタグとみなして、その場所にジャ
ンプします。)
ジャンプした後は CTRL-T (タグをポップする) で元の場所に戻れます。CTRL-O(古い
場所へのジャンプ)でも元に場所に戻れます。

ヘルプ画面の最上部に*help.txt*という表記があります。"*" で囲まれた名前はヘルプ
システムのタグ(ハイパーリンクの飛び先)を定義するために使われています。
タグの使い方の詳細は |29.1| を参照してください。

特定のヘルプ項目を見るには次のコマンドを使います:

        :help {subject}

例えば "x" コマンドのヘルプを見るには次のようにします:

        :help x

文字の削除方法を調べるには次のようにします:

        :help deleting

Vim のコマンド一覧を見たい場合は次のようにします:

        :help index

コントロール文字コマンド (例えば CTRL-A) のヘルプを見るには、"CTRL-" に続けて
その文字を指定します:

        :help CTRL-A

Vim にはいろんなモードがあります。特に指定がなければノーマルモードコマンドのヘ
ルプが表示されます。例えば、次のコマンドでノーマルモードの CTRL-H コマンドのヘ
ルプが表示されます:

        :help CTRL-H

他のモードを指定するにはプレフィクスを付けてください。例えば、挿入モードのヘル
プを見たいときには、"i_"を付けます。CTRL-H の場合なら次のようになります:

        :help i_CTRL-H

Vim を起動するときにはコマンドライン引数を指定できます。引数は先頭が "-" で始
まります。例えば、"-t" 引数の意味を調べるには次のコマンドを使います:

        :help -t

Vim にはオプションがたくさんあり、それを設定することでカスタマイズができます。
オプションのヘルプを見るには、アポストロフィでそれを囲ってください。例えば、
'number'オプションの意味を調べるには次のコマンドを使います:

        :help 'number'

モードのプレフィクス一覧は |help-context| を参照してください。

特殊キー不等号で囲んで表記します。例えば、挿入モードの上矢印キーのヘルプを見る
には次のコマンドを使います:

        :help i_<Up>

例えば次のようなエラーメッセージが表示された場合:

        E37: 最後の変更が保存されていません (! で変更を破棄)

行頭のエラーIDを使えばヘルプを検索できます:

        :help E37

サマリー:                                       *help-summary* 

        :help
                一般的なヘルプを表示します。下へスクロールすると、全てのヘルプ
                ファイルの一覧を表示します。ここには独自に追加された、Vim標準
                には添付されていないヘルプファイルも含まれます。
        :help user-toc.txt
                ユーザーマニュアルの目次を表示します。
        :help :subject
                Exコマンド"subject"のヘルプ。例えば次のようなもの:
        :help :help
                ヘルプの探し方のヘルプ。
        :help abc
                ノーマルモードコマンド"abc"のヘルプ。
        :help CTRL-B
                ノーマルモードコマンドにおけるキー<C-b>のヘルプ。
        :help i_abc
        :help i_CTRL-B
                インサートモードにおける特定のキーのヘルプ。
        :help v_abc
        :help v_CTRL-B
                ビジュアルモードにおける特定のキーのヘルプ。
        :help c_abc
        :help c_CTRL-B
                コマンドラインモードにおける特定のキーのヘルプ。
        :help 'subject'
                オプション'subject'のヘルプ。
        :help subject()
                関数"subject"のヘルプ。
        :help -subject
                コマンドラインオプション"-subject"のヘルプ。
        :help +subject
                コンパイル時機能"+subject"のヘルプ。
        :help EventName
                自動コマンドイベント"EventName"のヘルプ。
        :help digraphs.txt
                ヘルプファイル"digraph.txt"のトップ。
                他のヘルプファイルについても同様。
        :help pattern<Tab>
                "pattern"で始まるヘルプタグを検索。<Tab>を繰り返し押すと他の候
                補を検索する。
        :help pattern<Ctrl-D>
                "pattern"にマッチするヘルプタグを全て表示する。
        :helpgrep pattern
                全ヘルプファイルの全テキストからパターン"pattern"を検索し、最
                初のマッチへジャンプする。他のマッチへジャンプするには以下のコ
                マンドを使う:
            :cn
                        次のマッチへ
            :cprev
            :cN
                        前のマッチへ
            :cfirst
            :clast
                        最初/最後のマッチへ
            :copen
            :cclose
                        quickfixウィンドウを開く/閉じる。quickfixウィンドウで
                        <Enter>を押すと、カーソル下の要素へジャンプする。

==============================================================================

次章: |usr_03.txt|  カーソルの移動

Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl: