vim-jp / vimdoc-ja / intro

intro - Vim日本語ドキュメント

メインヘルプファイルに戻る
*intro.txt*     For Vim バージョン 8.0.  Last change: 2016 Sep 24


                  VIMリファレンスマニュアル    by Bram Moolenaar


序文                                                    *ref* *reference*

1. はじめに                     |intro|
2. インターネットの Vim 情報    |internet|
3. クレジット                   |credits|
4. ヘルプの表記法               |notation|
5. モードの紹介                 |vim-modes-intro|
6. モードの切り替え             |mode-switching|
7. ウィンドウに表示される内容   |window-contents|
8. 用語の定義                   |definitions|

==============================================================================
1. はじめに                                             *intro*

Vim は Vi IMproved (Viの改良版) です。かつては Vi IMitation (Viの模造品) でし
たが、多くの改良が加えられたので適切な名前に変更されました。Vim はテキストエ
ディタです。Unix のプログラム "Vi" のほとんどのコマンドと、さらに多くの新しい
コマンドを備えています。プログラムを書いたりテキストを編集するのにとても便利で
す。
すべてのコマンドはキーボードから入力します。そのため、キーボードから手を離す必
要も、スクリーンから目を離す必要もありません。お望みなら、マウスを使うこともで
きますし、GUIではスクロールバーやメニューを使うこともできます(|gui.txt|参照)。

このマニュアルの概要は |help.txt| にあります。Vim から <Help> や <F1> キー、
|:help| コマンドで開くことができます (単に :help と入力してください。引用符も
バーも必要ありません)。
ヘルプファイルが標準の位置にインストールされていない場合は、ヘルプファイルの名
前をオプション 'helpfile' に設定してください。タグでジャンプするのと同じように
ヘルプの項目へジャンプできます。ジャンプしたい項目にカーソルを合わせて CTRL-]
でジャンプできます。CTRL-T で元の場所に戻れます。

このマニュアルでは、Vi と Vim の相違点を次のように中カッコの中に記述していま
す。{Vi にはオンラインヘルプはありません}。Vim と Vi の相違点についての要約は
|vi_diff.txt|を参照。

このマニュアルの内容は Vim が実行されるほとんどの環境で通用しますが、コン
ピュータや端末によって、少し違う動作をする場合があります。このドキュメントから
外れる内容については、システムごとに個別の説明があります。|sys-file-list| を参
照。

                                                        *pronounce*
Vim は vi-ai-em ではなく、Jim のように一語として発音します。Vim はまた Jim の
ように名称なので、(最初の文字を)大文字で書きます。

このマニュアルは全ての Vim コマンドとオプションのリファレンスです。Vi や Vim
の入門書ではありません (それを入れるとあちこちで説明が込み入ってしまうので)。
初心者には、実習 |tutor| があります。Vim の使い方を身につけるにはユーザーマ
ニュアル |usr_toc.txt| を読んでください。

                                                        *book*
初心者向けの内容を含んだ Vi の本はたくさん出ています。私が推薦できる本は2冊あ
ります:

        "Vim - Vi Improved" by Steve Oualline

{訳注: 日本語版は
            ViIMproved‐Vim完全バイブル , 高橋 則利 (翻訳)
            技術評論社 ; ISBN: 4774120189}

これは Vim のみを取り扱った最初の本です。初心者にとてもよい本です。最もよく使
われるコマンドが、図と例を使って説明されています。それほど使われないコマンドも
説明され、さらに高度な機能は要約されています。総括的な索引とクイックリファレン
スがついています。この本の一部はユーザーマニュアルに含まれてます。|frombook|
New Riders Publishing から出版されています。ISBN: 0735710015
より詳しい情報については、ここを見てみてください。
        http://iccf-holland.org/click5.html
        http://www.vim.org/iccf/click5.html

        "Learning the Vi editor" by Linda Lamb and Arnold Robbins

{訳注: 日本語版は
            入門vi 第6版 , 福崎 俊博 (翻訳)
            オライリー・ジャパン ; ISBN: 4873110831}

これは Vi についての本で、(第6版では) Vim に関する章もあります。Vi の第一歩が
とてもよく説明されています。Vim 独自のコマンドは簡単に言及されているだけです。
ドイツ語の翻訳もあります。
O'Reilly から出版されています。ISBN: 1-56592-426-6.

==============================================================================
2. インターネットの Vim 情報                            *internet*

                        *www* *WWW*  *faq* *FAQ* *distribution* *download*
Vim のページには Vim についての最新情報が載っています。最新バージョンの Vim へ
のリンクもあります。FAQ はよく尋ねられる質問に対する回答集です。問題があったら
まずこれを読むとよいでしょう。

        VIMホームページ:        http://www.vim.org/
        VIM FAQ:                http://vimdoc.sf.net/
        ダウンロード:           ftp://ftp.vim.org/pub/vim/MIRRORS


Vim について討論している Usenet News グループ           *news* *usenet*
        comp.editors
このグループでは他のエディタについても話し合われています。Vim について書く場合
は、そのことを必ず明記してください。

                                                *mail-list* *maillist*
Vim のメーリングリストがいくつかあります:
<vim@vim.org>                                   *vim-use* *vim_use*
        現行バージョンの Vim の使い方に関する議論: 使いやすいマップ、質問、回
        答、特定のバージョンはどこで手に入るかなど。このメーリングリストにはた
        くさんの人が参加していて、(初心者の) 質問にも答えてくれます。遠慮せず
        どんどん質問してください。
<vim-dev@vim.org>                               *vim-dev* *vim_dev* *vimdev*
        Vim の開発に関する議論: 新しい機能、移植、パッチ、ベータ版など。
<vim-announce@vim.org>                          *vim-announce* *vim_announce*
        Vim の新バージョンに関するアナウンス: ベータ版や他システムへの移植につ
        いてもアナウンスがあります。このメーリングリストは購読専用です。
<vim-mac@vim.org>                               *vim-mac* *vim_mac*
        Vim のマッキントッシュバージョンの使用、改良に関する議論。

最新の情報は http://www.vim.org/maillist.php を参照。

NOTE:
- メーリングリストに投稿するにはそのリストに登録する必要があります!
- 登録したアドレスと同じアドレスで投稿する必要があります(スパムメールを避ける
  ため)。
- 最大メッセージサイズは 40000 文字です。

                                                *subscribe-maillist*
メーリングリストに参加したい場合は、次の場所へメールを送って下さい。
        <vim-subscribe@vim.org>
"From:" のアドレスが正しいことを確認してください。メーリングリストのサーバーか
ら登録方法についてのヘルプが送られてきます。

                                                *maillist-archive*
より詳しい情報とアーカイブについては、Vim メーリングリストページを見てください。
http://www.vim.org/maillist.php


バグレポート:                           *bugs* *bug-reports* *bugreport.vim*

バグを報告するには2つの方法があり、どちらも使えます:
1. バグレポートは Vim 開発陣 <vim-dev@vim.org> に送ってください。
   これはメーリングリストです。最初にメンバーになる必要があります。たくさんの
   人がそのメッセージを見ます。それが不都合な場合は (例えばセキュリティ関係)、
   <bugs@vim.org> に送ってください。そのメッセージは Vim のメンテナー (Bram)
   だけに送信されます。
2. GitHub に issue を立ててください: https://github.com/vim/vim/issues
   文章は vim-dev メーリングリストにも転送されます。

メッセージは簡潔にお願いします。メールに回答する時間は、Vim を改良する時間から
消費されています! 常に再現可能な例をつけてください。できれば、どこの設定が (あ
るいは機能が) バグの発生に影響しているかを探してください。可能なら、違うマシン
でも試してみて下さい。そして、もし修正できた場合はパッチを私に送って下さい。
(本家へのレポートは英語でお願いします)

Vim のバージョンや設定情報を含めてくれると助かります。次のコマンドで情報を得る
ことができます:
   :so $VIMRUNTIME/bugreport.vim
このコマンドはカレントディレクトリにあなたの環境に関する多くの情報を持った
"bugreport.txt" というファイルを作ります。このファイルを送る前に、そこにいかな
る秘密の情報も含まれていないことを確認してください!

Vim がクラッシュした場合は、クラッシュした場所を探してみてください。詳しくは
|debug.txt| を参照してください。

よく分からなかったり、その問題がすでに解決済みかどうか知りたい場合には、
vim-dev メーリングリストで質問してください。|maillist|

                                                        *year-2000* *Y2K*
Vim の内部では、テキストの編集に日付を使っていないので、2000 年問題はありませ
ん。Vim は 1970 年 1 月 1 日 (正午) からの秒形式で時間を使います。これは、開い
ているファイルとスワップファイルのタイムスタンプをチェックするために使われます
が、致命的な問題は起きません。ただ警告メッセージが表示されるだけでしょう。

しかし、32bit 整数で秒があふれてしまう 2038 年問題はあるかもしれません。この問
題は、コンパイラ、ライブラリ、オペレーティングシステムに依存しています。
time_t、ctime() 関数が使われているときは特にそうです。time_t はスワップファイ
ル内に 4 バイトで格納されますが、これはファイルの回復時にファイルの日付、時間
を求めるために使われるだけなので、通常の編集作業には決して影響しません。

Vim の strftime() 関数は strftime() システムコールを直接使います。localtime()
は time() システムコールを、getftime() は stat() システムコールで返される時間
をそれぞれ使用します。システムライブラリが 2000 年対応なら、Vim もそうです。

ユーザーは外部コマンドを使用する Vim スクリプトを作るかもしれません。このこと
が Y2K 問題を招くかもしれませんが、Vim 自身の問題ではありません。

==============================================================================
3. クレジット                           *credits* *author* *Bram* *Moolenaar*

Vim の大部分は Bram Moolenaar<Bram@vim.org> によって書かれました。

ドキュメントの一部は以下の方々によって書かれた Vi のマニュアルによります:
        W.N. Joy
        Alan P.W. Hewett
        Mark Horton

Vim エディタは Stevie をベースにしており、下記の方々のソフトウェア (のアイデア)
も参考にしています。他の人々は私に意見やパッチを送ってくれたり、Vim の良い
点、悪い点に関するフィードバックをしてくれました。

これらの人々の協力なくして、Vim は現在の姿にはならなかったことでしょう!

        Ron Aaron               Win32 GUIに関する変更
        Mohsin Ahmed            暗号化
        Zoltan Arpadffy         VMS移植の作業
        Tony Andrews            Stevie
        Gert van Antwerpen      MS-DOS上のDJGPPに関する変更
        Berkeley DB(3)          スワップファイルの実装に関するアイデア
        Keith Bostic            Nvi
        Walter Briscoe          Makefileの更新、様々なパッチ
        Ralf Brown              MS-DOS用のSPAWNOライブラリ
        Robert Colon            多くの役立つアドバイス
        Marcin Dalecki          GTK+ GUIへの移植、ツールバーのアイコン
                                gettext()
        Kayhan Demirel          ウガンダのニュースを送ってくれた
        Chris & John Downey     xvi (マルチウィンドウバージョンのアイデア)
        Henk Elbers             最初のVMSへの移植
        Daniel Elstner          GTK+ 2 への移植
        Eric Fischer            Macへの移植、'cindent'、その他の改良
        Benji Fisher            たくさんのユーザーの質問に答えてくれた
        Bill Foster             Athena GUIへの移植
        Google                  週に一日 Vim の仕事をさせてくれる
        Loic Grenie             xvim (マルチウィンドウバージョンのアイデア)
        Sven Guckes             Vimのプロモーター、以前のWWWページ管理者
        Darren Hiebert          Exuberant ctags
        Jason Hildebrand        GTK+ 2 への移植
        Bruce Hunsaker          VMSへの移植版の改良
        Andy Kahn               Cscopeサポート、GTK+ GUIへの移植
        Oezguer Kesim           Vimメーリングリストの管理者
        Axel Kielhorn           Macintosh移植の仕事
        Steve Kirkendall        Elvis
        Roger Knobbe            オリジナルのWindows NTへの移植
        Sergey Laskavy          モスクワからのVimのヘルプ
        Felix von Leitner       Vimメーリングリストの以前の管理者
        David Leonard           UnixへのPython拡張の移植
        Avner Lottem            ウィンドウでの右から左への編集
        Flemming Madsen         X11 client-server, 様々な機能とパッチ
        Tony Mechelynck         ユーザーから寄せられたたくさんの質問に回答
        Paul Moore              Pythonインターフェイス拡張、たくさんのパッチ
        Katsuhito Nagano        マルチバイトバージョンに関する作業
        Sung-Hyun Nam           マルチバイトバージョンに関する作業
        Vince Negri             Win32 GUIと一般的なコンソールの拡張
        Steve Oualline          最初のVimの本の著者|frombook|
        Dominique Pelle         valgrind のレポートと多くの修正
        A.Politz                たくさんのバグ報告と修正
        George V. Reilly        Win32移植、Win32 GUIへの移植を始める
        Stephen Riehm           バグ収集家
        Stefan Roemer           さまざまなパッチとユーザーへのヘルプ
        Ralf Schandl            IBM OS/390への移植
        Olaf Seibert            DICEとBeBoxバージョン、regexpの改良
        Mortaza Shiran          Farsiのパッチ
        Peter da Silva          termlib
        Paul Slootman           OS/2への移植
        Henry Spencer           正規表現に関して
        Dany St-Amant           Macintoshへの移植
        Tim Thompson            Stevie
        G. R. (Fred) Walter     Stevie
        Sven Verdoolaege        Perlインターフェイス
        Robert Webb             コマンドライン補完、GUIバージョン、そして
                                多くのパッチ
        Ingo Wilken             Tclインターフェイス
        Mike Williams           PostScriptの印刷
        Juergen Weigert         Latticeバージョン、AUXの改良、UNIXとMS-DOSへ
                                の移植、autoconf
        Stefan 'Sec' Zehl       vim.orgの管理

バグレポートや提案を送ってくれた人々に感謝します。あまりにたくさんいるので、こ
こで彼らの名前について触れることはできませんが。これらの人々のアイデアがなけれ
ば、Vim は今の Vim にはならなかったことでしょう: 彼らが Vim を生かしつづけたの
です!
*love* *peace* *friendship* *gross-national-happiness* 


この文書には他のバージョンの Vi に対するいくつかの参照があります:
                                                        *Vi* *vi*
Vi      "オリジナル"。特に指定がなければSun OS 4.xのバージョンのViを指す。
        ":version" は "Version 3.7, 6/7/85" を返す。別のバージョンに言及するこ
        ともある。Unix 上でのみ動く。ソースコードは許可を得れば利用可能。Vi に
        ついての更なる情報は、以下の場所から得られる:
                http://vi-editor.org    [現在機能していないようですが...]
                                                        *Posix*
Posix   IEEE standard 1003.2, Part 2: Shell and utilitiesより。
        一般に "Posix" として知られる。Vi の動作仕様の原典です。
        |posix-compliance| を参照。
                                                        *Nvi*
Nvi     "New" Vi。BSD 4.4、FreeBSD に付属の Vi。オリジナルの Vi と高い互換性を
        持ち、少々の拡張がされている。使われているのはバージョン1.79。
        ":version" は "Version 1.79 (10/23/96)" を返す。バージョン 1.81 が開発
        中だが、ここ数年リリースされていない。
        ソースコードは自由に利用できる。
                                                        *Elvis*
Elvis   別の Vi クローン、Steve Kirkendallの手による。とてもコンパクトだが、
        Vim ほど高機能ではない。使われているのはバージョン 2.1。まだ開発が続い
        ている。ソースコードは自由に利用できる。

==============================================================================
4. ヘルプの表記法                                       *notation*

この文章を構文強調を使って表示すると、見たままの意味ではないテキストは特別に強
調表示されます。[]、{}、<>、で囲まれた項目や CTRL-X などです。

Note: Vim は入力可能な文字はすべてコマンドで使います。実際に、[]、{}、<> を入
力する場合もあります。それは文脈によって判断できるでしょう。


[]              角カッコで囲まれた文字は省略可能。

                                                    *count* *[count]*
[count]         コマンドに前置して、そのコマンドを繰り返したり、反復したりする
                ための省略可能な数字。省略した場合、特に注意が無ければ 1 を指
                定したのと同じになります。Note: このマニュアルでは、[count] は
                コマンドの説明では言及されません。解説する場合だけ説明します。
                これはコマンドを調べ易くするためです。'showcmd' オプションが有
                効だと、(部分的に) 入力されたカウントがウィンドウの下の方に表
                示されます。<Del> を使って末尾の数字を削除できます(|N<Del>|)。

                                                        *[quotex]*
["x]            テキストの保管場所として、任意のレジスタを指定できることを示す。
                |registers| を参照。x は 'a' から 'z'、'A' から 'Z'、'"'、のど
                れか一文字です。場合によっては (put コマンドで使うときなど)、
                '0' から '9'、'%'、'#'、その他の文字も使えます。大文字でも小文
                字でも同じレジスタを指しますが、小文字を使ったときはレジスタの
                内容が上書きされ、大文字を使ったときはレジスタの内容に追加され
                ます。"x を指定しなかった場合や、"" を指定した場合は、無名レジ
                スタが使われます。

                                                        *{}*
{}              中括弧の表記は、コマンドの一部として入力する必要があって、そ
                こには、いろいろな値を入力することができるときに使われます。
                Vim と Vi の違いを示す場合も中括弧で表記されます (これは文脈か
                ら区別できます)。

                                                        *{char1-char2}*
{char1-char2}   char1 から char2 の範囲のどれか一文字。例えば、{a-z} は小文字
                一文字。複数の範囲が指定される場合もあります。例えば、
                {a-zA-Z0-9} は英数字のどれか一文字です。

                                                *{motion}* *movement*
{motion}        カーソル移動コマンド。これらは、|motion.txt| で説明されていま
                す。例:
                        w               次の単語の最初に移動
                        b               現在の単語の最初へ
                        4j              4行下に移動
                        /The<CR>        つぎの "The" が、ある場所に移動
                オペレータコマンド (|operator|) を入力した後で、対象のテキスト
                を選択するため使われます。
                - 移動コマンドがカウントを含み、オペレータコマンドもカウントを
                  含むときは、二つのカウントが掛け合わされる。例えば、"2d3w"
                  は 6 単語を削除する。
                - 移動はバックもできる。例えば、"db" は単語の最初までを削除す
                  る。
                - 移動はマウスのクリックでもできる。ただし、マウスをサポートし
                  ていない端末もあります。
                - ":omap" コマンドを使って、オペレータコマンドに対して移動コマ
                  ンドを入力しているときに働くマップを定義できます。
                - Ex コマンドを使ってカーソルを移動できます。関数を使って複雑
                  な移動をすることもできます。どの ":" コマンドが使われても、
                  移動は常に文字単位で排他的です。そのため、改行を含めずに行末
                  の文字を選択することはできません ('virtualedit' を設定すれば
                  可能)。
                  Ex コマンドで、オペレータコマンドを使った場所より前にあるテ
                  キストを変更したり、他のバッファに移動した場合、結果は予測で
                  きません。オペレータコマンドを使った場所以降のテキストなら変
                  更できます。カレントバッファがアンロードされないなら、他のバッ
                  ファにジャンプすることも可能です。

                                                        *{Visual}*
{Visual}        選択されたテキストの範囲。"v"、"V"、CTRL-V コマンドで選択を開
                始し、カーソル移動コマンドで選択範囲を変更できます。
                オペレータコマンド (|operator|) を実行する前に使って、対象のテ
                キストを選択することができます。|Visual-mode| を参照。

                                                        *<character>*
<character>     下記の表に示した特殊文字。修飾キーが付くこともあります。修飾
                キーと ASCII 文字の組合せもこのように表記されます。

                                                        *'character'*
'c'             ASCII 文字 1 文字。

                                                        *CTRL-{char}*
CTRL-{char}     制御文字として入力された文字 {char}。CTRL キーを押しながら
                {char} を押す場合です。{char} は大文字でも小文字でも区別されま
                せん。CTRL-A と CTRL-a は同じです。SHIFT キーを使うと別のコー
                ドを生成する端末もあるため、シフトキーは使わないでください。

                                                        *'option'*
'option'        オプション (設定) はシングルクォートで囲んで表記されます。オプ
                ションは設定値を変更できます。|options| を参照。

                                                        *quotecommandquote*
"command"       説明の中にでてくる入力可能なコマンドは、ダブルクォートで囲んで
                表記されます。
`command`       コマンドの新しい表記法です。他のクォート表記のテキストや文字列
                と区別するために使われます。

                                        *key-notation* *key-codes* *keycodes*
このドキュメントでは、キーの名前として以下のものが使われます。これらは ":map"
コマンドでも使うことができます (キーの名前を挿入するには、CTRL-K を押してか
ら、名前を挿入したいキーを押します)。

表記            意味                  等価表現  10進数値
-----------------------------------------------------------------------
<Nul>           ゼロ                    CTRL-@    0 (10として保存) *<Nul>*
<BS>            バックスペース          CTRL-H    8     *backspace*
<Tab>           タブ                    CTRL-I    9     *tab* *Tab*
                                                        *linefeed*
<NL>            ラインフィード          CTRL-J   10 (<Nul>に使用)
<FF>            フォームフィード        CTRL-L   12     *formfeed*
<CR>            キャリッジリターン      CTRL-M   13     *carriage-return*
<Return>        <CR>と同じ                              *<Return>*
<Enter>         <CR>と同じ                              *<Enter>*
<Esc>           エスケープ              CTRL-[   27     *escape* *<Esc>*
<Space>         スペース                         32     *space*
<lt>            小なり(less-than)       <        60     *<lt>*
<Bslash>        バックスラッシュ        \        92     *backslash* *<Bslash>*
<Bar>           垂直バー                |       124     *<Bar>*
<Del>           デリート                        127
<CSI>           コマンドの開始バイト    ALT-Esc 155     *<CSI>*
<xCSI>          GUIにおけるCSI                          *<xCSI>*

<EOL>           行の終端 (<CR><LF><CR><LF> のどれか。
                システムや 'fileformat' に依存) *<EOL>*

<Up>            上カーソル                      *cursor-up* *cursor_up*
<Down>          下カーソル                      *cursor-down* *cursor_down*
<Left>          左カーソル                      *cursor-left* *cursor_left*
<Right>         右カーソル                      *cursor-right* *cursor_right*
<S-Up>          シフト + 上カーソル
<S-Down>        シフト + 下カーソル
<S-Left>        シフト + 左カーソル
<S-Right>       シフト + 右カーソル
<C-Left>        コントロール + 上カーソル
<C-Right>       コントロール + 上カーソル
<F1> - <F12>    ファンクションキー1から12       *function_key* *function-key*
<S-F1> - <S-F12> シフト + ファンクションキー1から12     
                                                *<S-F1>*
<Help>          ヘルプキー
<Undo>          アンドゥキー
<Insert>        挿入キー
<Home>          ホーム                          *home*
<End>           エンド                          *end*
<PageUp>        ページアップ                    *page_up* *page-up*
<PageDown>      ページダウン                    *page_down* *page-down*
<kHome>         テンキーのホーム(左上)          *keypad-home*
<kEnd>          テンキーのエンド(左下)          *keypad-end*
<kPageUp>       テンキーのページアップ(右上)    *keypad-page-up*
<kPageDown>     テンキーのページダウン(右下)    *keypad-page-down*
<kPlus>         テンキーの+                     *keypad-plus*
<kMinus>        テンキーの-                     *keypad-minus*
<kMultiply>     テンキーの *                    *keypad-multiply*
<kDivide>       テンキーの /                    *keypad-divide*
<kEnter>        テンキーのEnter                 *keypad-enter*
<kPoint>        テンキーのピリオド              *keypad-point*
<k0> - <k9>     テンキーの0から9                *keypad-0* *keypad-9*
<S-...>         シフトキー                      *shift* *<S-*
<C-...>         コントロールキー                *control* *ctrl* *<C-*
<M-...>         altまたはmetaキー               *meta* *alt* *<M-*      
<A-...>         <M-...>と同じ                   *<A-*
<D-...>         コマンドキー (Macintosh のみ)   *<D-*
<t_xx>          termcapで "xx" エントリを持つキー
-----------------------------------------------------------------------

Note: シフトされたカーソルキー、ヘルプキー、アンドゥキーを使える端末はあまりあ
りません。Amiga上では、シフトされたファンクションキー 10 は、キーシーケンスに
使われるコード (CSI) を生成します。このコードを入力すると、他のキーを入力する
まで待機状態になります。

Note: 削除キーのコードは二つあります。127 は削除キーの 10 進 ASCII 値で、これ
は常に認識されます。削除キーが別の値を生成することもあり、その場合は、termcap
エントリの "kD" からその値を得ます。どちらも同じ効果をもちます。|:fixdel|も参
照してください。

Note: テンキーのキーは、"普通" のキーと同じ用途に使われます。例えば、<kHome>
<Home>と同じ効果を持ちます。テンキーのキーから、普通のキーと同じキーコードが送
信される場合、それは普通のキーとして認識されます。例えば、<kHome> から<Home>
と同じコードが送信される場合、<kHome> が押されたとしても、<Home> が押されたと
認識されます。その場合、<kHome> へのマッピングは機能しません。

                                                                *<>*
例ではよく <> 表記が使われます。これは、何を入力すべきかを明確に表記するために
使われますが、文字どおりに入力する必要がある場合もあります。例えば、":map" コ
マンドで使う場合など。規則は以下のとおりです:
 1.  バックスラッシュと '<' 以外の印字可能文字はそのまま表記される。
 2.  バックスラッシュは "\\" (ダブルバックスラッシュ)、または "<Bslash>" と表
     記される。
 3.  実際の '<' は "\<"、または "<lt>" と表記される。混乱を招く恐れがなけれ
     ば、'<' はそのまま使われる。
 4.  "<key>" は特殊キーを打つことを示す。これは上記の表で説明している表記で
     す。いくつか例を挙げます:
           <Esc>                エスケープキー
           <C-G>                CTRL-G
           <Up>                 上カーソルキー
           <C-LeftMouse>        コントロール + 左マウスクリック
           <S-F11>              シフト + ファンクションキー11
           <M-a>                Meta + a  ('a' with bit 8 set)
           <M-A>                Meta + A  ('A' with bit 8 set)
           <t_kd>               "kd" termcapエントリ(下カーソルキー)

<> 表記を使うには、'cpoptions' から '<' フラグを除く必要があります
('compatible' がオフのときは、初期設定でそうなっています)。
        :set cpo-=<
 <> 表記の特別な意味をなくすには <lt> を使います。バックスラッシュを使う方法
も機能しますが、それは 'cpoptions' が 'B' フラグを含んでいないときだけです。

CTRL-H を "<Home>" の 6 文字にマップする例:
        :imap <C-H> \<Home>
        :imap <C-H> <lt>Home>
最初の例は 'cpoptions' に 'B' フラグが含まれていない場合のみ機能します。2 番目
の例は常に機能します。
マップで "<lt>" を文字どおりに使うには 次のようにします:
        :map <C-L> <lt>lt>

マップ、短縮入力、メニューコマンドについては、例をコピー&ペーストして、そ
のまま使うことができます。あるいは、'<' と '>' も含めて、そのまま入力してくだ
さい。これは ":set" や ":autocmd" などの他のコマンドでは機能しません!

==============================================================================
5. モードの紹介                                 *vim-modes-intro* *vim-modes*

Vim には 6 つの基本モードがあります。

                                        *Normal* *Normal-mode* *command-mode*
ノーマルモード          ノーマルモードでは普通の編集コマンドを全て入力でき
                        ます。エディタをスタートするとこのモードに入ります
                        (オプション 'insertmode' を設定しているときは違います。
                        以下を参照)。これはコマンドモードとも呼ばれます。

ビジュアルモード        ノーマルモードに似ていますが、移動コマンドで選択領域が
                        拡大されます。移動コマンド以外のコマンドを使うと、選択
                        領域に対してそのコマンドが実行されます。|Visual-mode|
                        を参照。
                        オプション 'showmode' がオンなら、"-- VISUAL --" が
                        ウィンドウの最下部に表示されます。

選択モード              これは、MS-Windows でテキストを選択するときの動作に似
                        ています。印字可能文字が入力されると、選択範囲を削除
                        し、挿入モードに入ります。|Select-mode|を参照。
                        オプション 'showmode' がオンなら、"-- SELECT --" が
                        ウィンドウの最下部に表示されます。

挿入モード              挿入モードでは、タイプされたテキストはバッファに挿入
                        されます。|Insert-mode|を参照。
                        オプション 'showmode' がオンなら、"-- INSERT --" が
                        ウィンドウの最下部に表示されます。

コマンドラインモード    コマンドラインモードでは、ウィンドウの下部に 1 行のテ
                        キストを入力できます。これは Ex コマンド、":"、パター
                        ン検索コマンド、"?"、"/"、そしてフィルタコマンド、"!"
                        で使用します。|Cmdline-mode|を参照。

Ex モード               コマンドラインモードに似てますが、コマンド入力後も Ex
                        モードに留まります。コマンドライン編集は、かなり制限さ
                        れます。|Ex-mode|を参照。

加えて、6 つのモードがあります。これらは基本モードの変種です。

                                *Operator-pending* *Operator-pending-mode*
オペレータ待機モード    ノーマルモードに似てますが、オペレータコマンドが実行さ
                        れた後で、その適用範囲を決定するための移動コマンド
                        ({motion}) を得るために、Vim が待機している状態です。

置換モード              置換モードは挿入モードの特別版です。挿入モード
                        と同様のことができますが、一文字入力するごとに、その
                        場所にある文字が一つ削除されます。|Replace-mode|を参
                        照。
                        オプション 'showmode' がオンなら、"-- REPLACE --" が
                        ウィンドウの最下部に表示されます。

仮想置換モード          仮想置換モードは置換モードに似ていますが、ファイルの文
                        字の上ではなく、画面上の任意の位置を置換できます。
                        |Virtual-Replace-mode| を参照。'showmode' がオンなら、
                        "-- VREPLACE --" がウィンドウの最下部に表示されます。

挿入ノーマルモード      挿入モードで CTRL-O を入力すると、このモードに入りま
                        す。ノーマルモードに似てますが、コマンドが実行された
                        後、挿入モードに戻ります。
                        オプション 'showmode' がオンなら、"-- (insert) --" が
                        ウィンドウの最下部に表示されます。

挿入ビジュアルモード    挿入モードでビジュアル選択を開始すると、このモードに入
                        ります。例えば、CTRL-O を使い, その後 "v"、"V"、CTRL-V
                        を使ったときです。
                        ビジュアル選択が終了すると、挿入モードに戻ります。
                        オプション 'showmode' がオンなら、
                        "-- (insert) VISUAL --" がウィンドウの最下部に表示され
                        ます。

挿入選択モード          挿入モードで選択モードを開始すると、このモードに入りま
                        す。例えば、マウスをドラッグしたり、<S-Right> を押した
                        ときです。
                        選択モードが終了すると、挿入モードに戻ります。オプショ
                        ン 'showmode' がオンなら、"-- (insert) SELECT --" が
                        ウィンドウの最下部に表示されます。

==============================================================================
6. モードの切り替え                                     *mode-switching*

何らかの理由で、現在のモードがわからなくなったときは、<Esc> を 2 度押すことで
常にノーマルモードに戻ることができます。Ex モードでは機能しないので、その場合
は ":visual" を使ってください。
<Esc> を押したとき、スクリーンフラッシュや、ベルの音で、ノーマルモードに戻った
ことを知ることができます。挿入モードで CTRL-O の後に <Esc> を押した場合、ビー
プ音は鳴りますが、まだ挿入モードの中なので、もう一度 <Esc> を押してください。

                                                        *i_esc*
                移動先のモード                                     
                Normal  Visual  Select  Insert    Replace   Cmd-line  Ex
現在のモード                                                            
ノーマル                v V ^V    *4     *1        R gR     : / ? !   Q
ビジュアル       *2               ^G     c C        --        :       --
選択             *5     ^O ^G            *6         --        --      --
挿入             <Esc>    --      --              <Insert>    --      --
置換             <Esc>    --      --    <Insert>              --      --
コマンドライン   *3       --      --     :start     --                --
Ex               :vi      --      --     --         --        --

-- 不可

*1 ノーマルモードから挿入モードへは、コマンド "i"、"I"、"a"、"A"、"o"、"O"、
   "c"、"C"、"s"、"S" で入ります。
*2 ビジュアルモードからノーマルモードへは非移動コマンドで入れますが、そのコマ
   ンドは実行されてしまいます。<Esc>、"v"、"V"、"CTRL-V" (|v_v|を参照) を入力
   すれば、副作用なしにビジュアルモードから出られます。
*3 コマンドラインモードからノーマルモードへ移行するには次のようにします:
   - <CR> か <NL> を入力する。入力途中のコマンドは実行されます。
   - 行の全てを削除し (例、CTRL-Uを使う)、そして、<BS> を入力する。
   - CTRL-C または <Esc> を入力する、入力途中のコマンドを実行せずに終了できま
     す。
   最後の方法ですが、<Esc> が 'wildchar' に設定されている場合があります。その
   場合、コマンドライン補完が実行されますが、それを無視して、再び <Esc> を入力
   してください。{Vi では、<Esc> を入力すると、そのコマンドラインが実行されま
   す。これは多くの人が期待するような動作ではないので、Vim では変更されまし
   た。しかし、その <Esc> がマップの一部であるような場合には、コマンドラインは
   実行されます。<Esc> を入力したときに、Vi と同じように動作して欲しいときは、
   ":cmap ^V<Esc> ^V^M" を使ってください}
*4 ノーマルモードから選択モードに移行するには次のようにします:
   - 'selectmode' が "mouse" を含んでいるときは、マウスでテキストを選択する。
   - 'selectmode' が "key" を含んでいるときは、シフトキーを押しながら、特殊
     キーでカーソルを動かします。(:set keymodel+=startsel が必要)
   - 'selectmode' が "cmd" を含んでいるときは、"v"、"V"、"CTRL-V" を使う。
   - "gh"、"gH"、"g CTRL-H" を使う。|g_CTRL-H|
*5 選択モードからノーマルモードに移行するには、シフトキーを押さずに特殊キーで
   カーソルを動かします。(:set keymodel+=stopsel が必要)
*6 選択モードから挿入モードへ移行するには、印字可能文字 (普通の文字) を入力し
   ます。選択範囲は削除され、入力した文字が挿入されます。

'insertmode' がオンのときは、編集作業は挿入モードで始まります。

        *CTRL-\_CTRL-N* *i_CTRL-\_CTRL-N* *c_CTRL-\_CTRL-N* *v_CTRL-\_CTRL-N*
CTRL-\ CTRL-N と <C-\><C-N> を使って、どのモードからでもノーマルモードに移行で
きます。このコマンドを使えば、確実にノーマルモードになることができます。<Esc>
のときのようにビープ音はなりません。ただし、Ex モードでは機能しません。|f|
|m|のように引数をとるコマンドの後で使われたときは、'ttimeoutlen' で設定された
タイムアウトが適用されます。

        *CTRL-\_CTRL-G* *i_CTRL-\_CTRL-G* *c_CTRL-\_CTRL-G* *v_CTRL-\_CTRL-G*
'insertmode' がオンのときは、CTRL-\ CTRL-G や <C-\><C-G> で挿入モードに移行で
きます。オフのときはノーマルモードに移行します。このコマンドを使えば、現在どの
モードにいるのかに関わらず、'insertmode' に設定されたモードに移行することがで
きます。

                                    *Q* *mode-Ex* *Ex-mode* *Ex* *EX* *E501*
Q                       "Ex" モードに切り替えます。このモードは ":" コマンドを
                        続けて入力するようなものですが、次の点が違います:
                        - 毎回 ":" を押す必要がない。
                        - コマンドを実行するごとに画面が更新されない。
                        - 通常のコマンドライン編集機能は使えない。
                        - マップと短縮入力は使えない。
                        つまり、"標準の" 行編集コマンドだけを使って入力します
                        (削除に<Del>または<BS>、行削除に CTRL-U を使用する)。
                        Vim が "ex" という名前で実行された場合には、このモード
                        で起動します。
                        "Ex" モードを抜けるには、":vi" コマンド |:visual| を使
                        います。
                        Note: Vim の昔のバージョンでは "Q" がテキストを整形す
                        るコマンドでしたが、いまは |gq| になっています。ただし
                        |vimrc_example.vim| を使っている場合は、"Q" と "gq" は
                        同じ動作をします。

                                        *gQ*
gQ                      "Ex" モードに切り替えます。"Q" と同じですが、実際に
                        ":" コマンドでコマンドを入力するのと同じように動作しま
                        す。コマンドライン編集や補完などがすべて利用可能です。
                        "Ex" モードを抜けるには、":vi" コマンド |:visual| を使
                        います。{Vi にはない}

==============================================================================
7. ウィンドウに表示される内容                           *window-contents*

ノーマルモードと挿入/置換モードでは、スクリーンに現在のバッファの内容が表示さ
れます。つまり、見ているものが得られるもの (WYSIWYG) です。しかし、例外が二つ
があります:
- オプション 'cpoptions' が '$' を含んでいて、一行に収まる範囲を変更 (|c|) す
  るときは、テキストはすぐに削除されず、削除される文字の最後の位置に '$' が表
  示されます。
- あるウィンドウでテキストを挿入していて、別のウィンドウでも同じテキストを表示
  しているとき、挿入を完了するまでそのウィンドウの表示は更新されません。
  {訳注: 確認できず}
{Vi: 遅い端末では画面が常に更新されるとは限りません}

ウィンドウの幅より長い行は、折り返して表示されます。'wrap' がオフのときは折り
返されません (下記参照)。'linebreak' を設定すると空白文字で折り返すことができ
ます。

ウィンドウ内でバッファの最終行より下に表示領域がある場合、以下のように、それら
の行の始めに '~' が表示されます:

        +-----------------------+
        |some line              |
        |last line              |
        |~                      |
        |~                      |
        +-----------------------+

このように、'~' はバッファの最後に到達したことを示します。

ウィンドウに表示されている最後の行が表示しきれない場合、以下のように、最終行の
場所に '@' が表示されます:

        +-----------------------+
        |first line             |
        |second line            |
        |@                      |
        |@                      |
        +-----------------------+

このように、'@' はウィンドウに収まりきらない行があることを示します。

'display' に "lastline" フラグが含まれている場合、'@' はウィンドウの左側に表示
されません。最終行がウィンドウに完全に収まらない場合は、収まる部分のみが表示さ
れ、最後の 3 文字が次のように "@@@" で置き換えられます:

        +-----------------------+
        |first line             |
        |second line            |
        |a very long line that d|
        |oesn't fit in the wi@@@|
        +-----------------------+

長すぎてウィンドウに収まりきらない単一の行があるときは、特別な場合として扱われ
ます。Vim はカーソルのある場所付近のみを表示します。特殊記号は表示されません。
その行のどの部分でも編集できます。
{Vi はウィンドウに収まらない行に対しては "内部エラー" を起こします}

'@' と '~' の強調表示を設定するには、オプション 'highlight' の '@' を設定しま
す。それらの文字と、バッファの中の本物の文字を区別することができます。

折り返された行の先頭には 'showbreak' に設定した文字が表示されます。

                                                        *wrap-off*
'wrap' がオフの場合、長い行は折り返されません。スクリーンに収まる分だけ表示さ
れます。カーソルが表示されていない部分に移動すると、スクリーンは水平方向にスク
ロールします。この方法の利点は、縦の列がありのままに表示されること、スクリーン
に収まらない行も編集できることです。欠点としては、一行の全ての文字を一度に見る
ことができないことが挙げられます。'sidescroll' にはスクロールする最小の列(カラ
ム)数を設定します。
{Vi には 'wrap' オプションはありません}

全ての普通のASCII文字はスクリーンに直接表示されます。<Tab> は、それが表現する
数のスペースに置き換えられます。他の非表示文字は、"^{char}" に置き換えられま
す、このとき {char} には、その非表示文字に 64 を足した文字が入ります。つまり、
文字 7 (ベル文字) は "^G" と表示されます。127 から 160 までの文字は "~{char}"
で置き換えられます、このとき {char} には、その文字から 64 を引いた文字が入りま
す。これらの文字はスクリーン上では複数幅で表示されます。カーソルはその複数幅の
先頭にのみ移動させることができます

'number' がオンの場合、全ての行の先頭に行番号が表示されます。
Tip: 行を折り返したときに、行番号と行の表示を混ぜたくないときは、'showbreak'
に 8 つのスペースをセットします:
        ":set showbreak=\ \ \ \ \ \ \ \ "

'list' がオンの場合、<Tab> 文字はいくつかのスペースとしてではなく、"^I" として
表示されます。'$' が行末に表示されるので、行の最後についた空白を見つけることが
できます。

コマンドラインモードでは、コマンドラインのみが正しく表示されます。バッファの
内容の表示は、コマンドラインモードから抜けたときに更新されます。

ウィンドウの最下行はステータスやその他のメッセージのために使われます。ステータ
スメッセージが使われるのは、オプションがオンのときのみです:

ステータスメッセージ            オプション     初期設定  Unixの初期設定
現在のモード                    'showmode'      on          on
コマンドの文字                  'showcmd'       on          off
カーソルの位置                  'ruler'         off         off

現在のモードとは、"-- INSERT --" や "-- REPLACE --" のことです、'showmode'
を参照。コマンドの文字とは、入力されて、まだ実行されていないコマンドのことで
す。{Vi は入力した文字やカーソルの位置を表示しません}

遅い端末を使っている場合は、ステータスメッセージをオフにすることで編集のスピー
ドを上げることができます:
        :set nosc noru nosm

エラーが起きたとき、エラーメッセージは少なくとも一秒間は表示されます(反転表示
で)。{Vi ではエラーメッセージが読む間もなく他のメッセージに上書きされる場合が
あります}

いくつかのコマンドでは、そのコマンドが作用する行数が表示されます。何行以上でそ
の表示をするかは、'report' で設定できます (初期設定は 2)。

Amiga 上では、Vim は CLI ウィンドウで実行されます。Vim の名前と現在のファイル
名の絶対パスがタイトルバーに表示されます。ウィンドウがリサイズされると、Vim は
自動的にウィンドウを再描画します。ウィンドウは好きなだけ小さくできますが、小さ
すぎると1行のみで収まりきらなくなります。最下行に表示されるメッセージが読める
ように、最低でも40文字の幅を取ってください。

ほとんどの UNIX システム上で、Vim はウィンドウのリサイズを正しく認識、把握でき
ます。{Vi ではできません}

==============================================================================
8. 用語の定義                                           *definitions*

  スクリーン            Vim が使う領域全体。端末ウィンドウを指す場合もある。
                        "Vimウィンドウ" とも呼ばれる。
  ウィンドウ            バッファが表示される場所。

一つのスクリーンは一つ以上のウィンドウを内包し、それらはステータスラインで区切
られ、最下行にはコマンドラインが表示されます。

        +-------------------------------+
screen  | window 1      | window 2      |
        |               |               |
        |               |               |
        |= status line =|= status line =|
        | window 3                      |
        |                               |
        |                               |
        |==== status line ==============|
        |command line                   |
        +-------------------------------+

コマンドラインはメッセージを表示するためにも使われます。コマンドラインに十分な
表示領域がない場合はスクリーンがスクロールします。

行には 4 種類あり、次の違いがあります:

  バッファ行            バッファ内の行。ファイルに読み書きする行のこと。
                        行の長さは制限なし。
  論理行                折り畳みが適用されたバッファ行。複数のバッファ行が折り
                        畳まれ論理行 1 行となり、次のように表示される:
                        "+-- 99 lines folded"。
                        行の長さは制限なし。
  ウィンドウ行          ウィンドウに表示される行: 折り返し、ラインブレークなど
                        が適用された後の論理行の一部。長さはウィンドウの幅以
                        下。それ以上長い行は折り返されるか切り詰められる。
  スクリーン行          Vim が使うスクリーンの行。全てのウィンドウのウィンドウ
                        行とステータスライン、コマンドラインからなる。長さはス
                        クリーンの幅以下。コマンドラインがそれ以上長くなったと
                        きは折り返して表示され、表示領域を作るために行がスク
                        ロールされる。

バッファ行      論理行          ウィンドウ行    スクリーン行

1. one          1. one          1. +-- folded   1.  +-- folded
2. two          2. +-- folded   2. five         2.  five
3. three        3. five         3. six          3.  six
4. four         4. six          4. seven        4.  seven
5. five         5. seven                        5.  === status line ===
6. six                                          6.  aaa
7. seven                                        7.  bbb
                                                8.  ccc ccc c
1. aaa          1. aaa          1. aaa          9.  cc
2. bbb          2. bbb          2. bbb          10. ddd
3. ccc ccc ccc  3. ccc ccc ccc  3. ccc ccc c    11. ~ 
4. ddd          4. ddd          4. cc           12. === status line ===
                                5. ddd          13. (command line)
                                6. ~ 

==============================================================================
 vim:tw=78:ts=8:ft=help:norl: