*intro.txt* For Vim バージョン 8.1. Last change: 2019 Nov 11 VIMリファレンスマニュアル by Bram Moolenaar
| 1. はじめに | |intro| |
| 2. インターネット上の Vim 情報 | |internet| |
| 3. クレジット | |credits| |
| 4. ヘルプの表記法 | |notation| |
| 5. モードの紹介 | |vim-modes-intro| |
| 6. モードの切り替へ | |mode-switching| |
| 7. ウィンドウに表示される內容 | |window-contents| |
| 8. 用語の定義 | |definitions| |
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_diff.txt| に記載されてゐます。
このマニュアルの內容は Vim が實行されるほとんどの環境で通用しますが、コンピュータや端末によつて、少し違ふ動作をする場合があります。このドキュメントから外れる內容については、システムごとに個別の說明があります。|sys-file-list| を參照。
Vim は vi-ai-em ではなく、Jim のやうに一語として撥音します。Vim はまた Jim のやうに名稱なので、(最初の文字を)大文字で書きます。
このマニュアルは全ての Vim コマンドとオプションのリファレンスです。Vi や Vim の入門書ではありません (それを入れるとあちこちで說明が込み入つてしまふので)。初心者には、實習 |tutor| があります。Vim の使ひ方を身につけるにはユーザーマニュアル |usr_toc.txt| を讀んでください。
Vi と Vim に關するほとんどの本には初心者向けのセクションがあります。その他、特定の機能についてより多くの言葉を費やしてゐます。Vim の本の槪要はここにあります:
http://iccf-holland.org/vim_books.html
Vim のページには Vim についての最新情報が載つてゐます。最新バージョンの Vim へのリンクもあります。FAQ はよく尋ねられる質問に對する囘答集です。問題があつたらまづこれを讀むとよいでせう。
| Vim ホームページ: | https://www.vim.org/ |
| Vim FAQ: | https://vimhelp.org/vim_faq.txt.html |
| ダウンロード: | https://www.vim.org/download.php |
質問をしたり答へを見つける: https://vi.stackexchange.com/
"「Vi and Vim Stack Exchange」は vi と Vim 系のテキストエディタに關する Q&A サイトです。"
Vim について討論してゐる Usenet News グループ
comp.editors
このグループでは他のエディタについても話し合われてゐます。Vim について書く場合は、そのことを必ず明記してください。
ここからアクセスすることができます: https://groups.google.com/forum/#!topic/comp.editors
Vim のメーリングリストがいくつかあります:
現行バージョンの Vim の使ひ方に關する議論: 使ひやすいマップ、質問、囘答、特定のバージョンはどこで手に入るかなど。このメーリングリストにはたくさんの人が參加してゐて、(初心者の) 質問にも答へてくれます。遠慮せずどんどん質問してください。
Vim の開發に關する議論: 新しい機能、移植、パッチ、ベータ版など。
Vim の新バージョンに關するアナウンス: ベータ版や他システムへの移植についてもアナウンスがあります。このメーリングリストは購讀專用です。
Vim のマッキントッシュバージョンの使用、改良に關する議論。
最新の情報は http://www.vim.org/maillist.php を參照。
Note:
- アーカイブは誰でも見ることができます。例へば、Google グループ。質問がある場合はこれを檢索してください。
- メーリングリストに投稿するにはそのリストに登錄する必要があります!
- 最初のメッセージはモデレートされてゐるため、表示されるまでに數時閒かかることがあります。
- 登錄したアドレスと同じアドレスで投稿する必要があります (スパムメールを避けるため)。
メーリングリストに參加したい場合は、次の場所へメールを送つて下さい。
"From:" のアドレスが正しいことを確認してください。メーリングリストのサーバーから登錄方法についてのヘルプが送られてきます。
より詳しい情報とアーカイブについては、Vim メーリングリストページを見てください。 http://www.vim.org/maillist.php
バグを報告するには 2 つの方法があり、どちらも使へます:
メッセージは簡潔にお願ひします。メールに囘答する時閒は、Vim を改良する時閒から消費されてゐます!常に再現可能な例をつけてください。そして、バグを引き起こす設定やその他のものを探してください。
なるべくなら Vim を次のやうに起動してください:
vim --clean -u reproduce.vim
ここで、reproduce.vim は問題を再現するスクリプトです。關聯があるならば (もしかしたら MS-Windows 固有のバグかも?)、違ふマシンでも試してみて下さい。
可能ならばパッチを私に送つて下さい!https://github.com/vim/vim でプルリクエストを作成すると、自動チェックが實行され、明らかな問題があれば報告されます。ただし、パッチを電子メールで送信することもできます (空白文字の變更を避けるために添付ファイルを使用してください)。
{譯注: 本家へのレポートは英語でお願ひします}
Vim のバージョンや設定情報を含めてくれると助かります。次のコマンドで情報を得ることができます:
:so $VIMRUNTIME/bugreport.vim
このコマンドはカレントディレクトリにあなたの環境に關する多くの情報を持つた "bugreport.txt" といふファイルを作ります。このファイルを送る前に、そこにいかなる祕密の情報も含まれてゐないことを確認してください!
Vim がクラッシュした場合は、クラッシュした場所を探してみてください。詳しくは |debug.txt| を參照してください。
よく分からなかつたり、その問題がすでに解決濟みかどうか知りたい場合には、vim-dev メーリングリストで質問してください。|maillist|
Vim の內部では、テキストの編輯に日附を使つてゐないので、2000 年問題はありません。Vim は 1970 年 1 月 1 日 (正午) からの秒形式で時閒を使ひます。これは、開いてゐるファイルとスワップファイルのタイムスタンプをチェックするために使はれますが、致命的な問題は起きません。ただ警告メッセージが表示されるだけでせう。
しかし、32bit 整數で秒があふれてしまふ 2038 年問題はあるかもしれません。この問題は、コンパイラ、ライブラリ、オペレーティングシステムに依存してゐます。time_t、ctime() 函數が使はれてゐるときは特にさうです。time_t はスワップファイル內に 4 バイトで格納されますが、これはファイルの恢復時にファイルの日附、時閒を求めるために使はれるだけなので、通常の編輯作業には決して影響しません。
Vim の strftime() 函數は strftime() システムコールを直接使ひます。localtime() は time() システムコールを、getftime() は stat() システムコールで返される時閒をそれぞれ使用します。システムライブラリが 2000 年對應なら、Vim もさうです。
ユーザーは外部コマンドを使用する Vim script を作るかもしれません。このことが Y2K 問題を招くかもしれませんが、Vim 自身の問題ではありません。
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 への移植 |
| 週に一日 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 | PostScrip tの印刷 |
| Juergen Weigert | Latticeバージョン、AUX の改良、UNIX と MS-DOS への移植、autoconf |
| Stefan ’Sec’ Zehl | vim.org の管理 |
| Yasuhiro Matsumoto | 多くの MS-Windows の改良 |
| Ken Takata | 修正と機能 |
| Kazunobu Kuriyama | GTK 3 |
| Christian Brabandt | 多くの修正、機能、ユーザーサポート等 |
| Yegappan Lakshmanan | 多くのquickfix機能 |
バグレポートや提案を送つてくれた人々に感謝します。あまりにたくさんいるので、ここで彼らの名前について觸れることはできませんが。これらの人々のアイデアがなければ、Vim は今の Vim にはならなかつたことでせう: 彼らが Vim を生かしつづけたのです!
この文書には他のバージョンの Vi に對するいくつかの參照があります:
"オリジナル"。特に指定がなければ Sun OS 4.x のバージョンのViを指します。":version" は "Version 3.7, 6/7/85" を返します。別のバージョンに言及することもあります。Unix 上でのみ動きます。ソースコードは現在 BSD スタイルのライセンス下で利用可能です。Vi についての更なる情報は、以下の場所から得られます:
IEEE standard 1003.2, Part 2: Shell and utilities より。一般に "Posix" として知られる。Vi の動作仕樣の原典です。|posix-compliance| を參照。
"New" Vi。BSD 4.4、FreeBSD に附屬の Vi。オリジナルの Vi と高い互換性を持ち、少々の擴張がされてゐる。使はれてゐるのはバージョン1.79。":version" は "Version 1.79 (10/23/96)" を返す。バージョン 1.81 が開發中だが、ここ數年リリースされてゐない。ソースコードは自由に利用できる。
別の Vi クローン、Steve Kirkendall が作成しました。とてもコンパクトですが、Vim ほど高機能ではありません。開發は失速し、エルヴィスは建物を去つてしまひました! ソースコードは自由に利用できます。
Vim のクローン。2014 年に Vim のソースをフォークして、異なる方向を進みました。非常に GitHub に縳られてゐて、より多くの依存關係があり、開發をより複雜にし、移植性を制限してゐます。コードがリファクタリングされ、パッチが Vim と交換できなくなりました。リモート GUI とスクリプト言語との統合をサポートしてゐます。
この文章を構文强調を使つて表示すると、見たままの意味ではないテキストは特別に强調表示されます。[], {}, <> で圍まれた項目や CTRL-X などです。
Note:
Vim は入力可能な文字はすべてコマンドで使ひます。實際に、[], {}, <> を入力する場合もあります。それは文脈によつて判斷できるでせう。
[] 角カッコで圍まれた文字は省略可能。
コマンドに前置して、そのコマンドを繰り返したり、反復したりするための省略可能な數字。省略した場合、特に注意が無ければ 1 を指定したのと同じになります。
Note:
このマニュアルでは、[count] はコマンドの說明では言及されません。解說する場合だけ說明します。これはコマンドを調べ易くするためです。’showcmd’ オプションが有效だと、(部分的に) 入力されたカウントがウィンドウの下の方に表示されます。<Del>を使つて末尾の數字を削除できます(|N<Del>|)。
テキストの保管場所として、任意のレジスタを指定できることを示す。|registers| を參照。x は ’a’ から ’z’、’A’ から ’Z’、’"’、のどれか一文字です。場合によつては (put コマンドで使ふときなど)、’0’ から ’9’、’%’、’#’、その他の文字も使へます。大文字でも小文字でも同じレジスタを指しますが、小文字を使つたときはレジスタの內容が上書きされ、大文字を使つたときはレジスタの內容に追加されます。"x を指定しなかつた場合や、"" を指定した場合は、無名レジスタが使はれます。
中括弧の表記は、コマンドの一部として入力する必要があつて、そこには、いろいろな値を入力することができるときに使はれます。Vim と Vi の違ひを示す場合も中括弧で表記されます (これは文脈から區別できます)。
char1 から char2 の範圍のどれか一文字。例へば、{a-z} は小文字一文字。複數の範圍が指定される場合もあります。例へば、{a-zA-Z0-9} は英數字のどれか一文字です。
カーソル移動コマンド。これらは、|motion.txt| で說明されてゐます。例:
| w | 次の單語の最初に移動 |
| b | 現在の單語の最初へ |
| 4j | 4 行下に移動 |
| /The<CR> | つぎの "The" が、ある場所に移動 |
オペレータコマンド (|operator|) を入力した後で、對象のテキストを選擇するため使はれます。
:omap" コマンドを使つて、オペレータコマンドに對して移動コマンドを入力してゐるときに働くマップを定義できます。
Ex コマンドで、オペレータコマンドを使つた場所より前にあるテキストを變更したり、他のバッファに移動した場合、結果は豫測できません。オペレータコマンドを使つた場所以降のテキストなら變更できます。カレントバッファがアンロードされないなら、他のバッファにジャンプすることも可能です。
選擇されたテキストの範圍。"v"、"V"、CTRL-V コマンドで選擇を開始し、カーソル移動コマンドで選擇範圍を變更できます。オペレータコマンド (|operator|) を實行する前に使つて、對象のテキストを選擇することができます。|Visual-mode| を參照。
下記の表に示した特殊文字。修飾キーが付くこともあります。修飾キーと ASCII 文字の組合せもこのやうに表記されます。
ASCII 文字 1 文字。
CTRL-{char}制禦文字として入力された文字 {char}。CTRL キーを押しながら {char} を押す場合です。{char} は大文字でも小文字でも區別されません。CTRL-A と CTRL-a は同じです。SHIFT キーを使ふと別のコードを生成する端末もあるため、シフトキーは使はないでください。
オプション (設定) はシングルクォートで圍んで表記されます。オプションは設定値を變更できます。|options| を參照。
說明の中にでてくる入力可能なコマンドは、ダブルクォートで圍んで表記されます。
コマンドの新しい表記法です。他のクォート表記のテキストや文字列と區別するために使はれます。
このドキュメントでは、キーの名前として以下のものが使はれます。これらは ":map" コマンドでも使ふことができます (キーの名前を插入するには、CTRL-K を押してから、名前を插入したいキーを押します)。
| 表記 | 意味 | 等價表現 | 10進數値 |
| <Nul> | ゼロ | CTRL- | 0 (10として保存) |
| <BS> | バックスペース | CTRL-H | 8 |
| <Tab> | タブ | CTRL-I | 9 |
| <NL> | ラインフィード | CTRL-J | 10 (<Nul>に使用) |
| <FF> | フォームフィード | CTRL-L | 12 |
| <CR> | キャリッジリターン | CTRL-M | 13 |
| <Return> | <CR>と同じ | ||
| <Enter> | <CR>と同じ | ||
| <Esc> | エスケープ | CTRL-[ | 27 |
| <Space> | スペース | 32 | |
| <lt> | 小なり (less-than) | < | 60 |
| <Bslash> | バックスラッシュ | \ | 92 |
| <Bar> | 垂直バー | | | 124 |
| <Del> | デリート | 127 | |
| <CSI> | コマンドの開始バイト | ALT-Esc | 155 |
| <xCSI> | GUI における CSI |
| <EOL> | 行の終端 (<CR>, <LF>, <CR><LF> のどれか。システムや ’fileformat’ に依存) |
| <Up> | 上カーソル |
| <Down> | 下カーソル |
| <Left> | 左カーソル |
| <Right> | 右カーソル |
| <S-Up> | シフト + 上カーソル |
| <S-Down> | シフト + 下カーソル |
| <S-Left> | シフト + 左カーソル |
| <S-Right> | シフト + 右カーソル |
| <C-Left> | コントロール + 上カーソル |
| <C-Right> | コントロール + 上カーソル |
| <F1> - <F12> | ファンクションキー 1 から 12 |
| <S-F1> - <S-F12> | シフト + ファンクションキー 1 から 12 |
| <Help> | ヘルプキー |
| <Undo> | アンドゥキー |
| <Insert> | 插入キー |
| <Home> | ホーム |
| <End> | エンド |
| <PageUp> | ページアップ |
| <PageDown> | ページダウン |
| <kHome> | テンキーのホーム (左上) |
| <kEnd> | テンキーのエンド (左下) |
| <kPageUp> | テンキーのページアップ (右上) |
| <kPageDown> | テンキーのページダウン (右下) |
| <kPlus> | テンキーの + |
| <kMinus> | テンキーの - |
| <kMultiply> | テンキーの * |
| <kDivide> | テンキーの / |
| <kEnter> | テンキーの Enter |
| <kPoint> | テンキーのピリオド |
| <k0> - <k9> | テンキーの0から9 |
| <S-...> | シフトキー |
| <C-...> | コントロールキー |
| <M-...> | alt または meta キー
|
| <A-...> | <M-...> と同じ |
| <D-...> | コマンドキー (Macintosh のみ) |
| <t_xx> | termcap で "xx" エントリを持つキー |
Note:
シフトされたカーソルキー、ヘルプキー、アンドゥキーを使へる端末はあまりありません。Amiga 上では、シフトされたファンクションキー 10 は、キーシーケンスに使はれるコード (CSI) を生成します。このコードを入力すると、他のキーを入力するまで待機狀態になります。
Note:
削除キーのコードは 2 つあります。127 は削除キーの 10 進 ASCII 値で、これは常に認識されます。削除キーが別の値を生成することもあり、その場合は、termcap エントリの "kD" からその値を得ます。どちらも同じ效果をもちます。|:fixdel| も參照してください。
Note:
テンキーのキーは、"普通" のキーと同じ用途に使はれます。例へば、<kHome> は<Home>と同じ效果を持ちます。テンキーのキーから、普通のキーと同じキーコードが送信される場合、それは普通のキーとして認識されます。例へば、<kHome> から<Home>と同じコードが送信される場合、<kHome> が押されたとしても、<Home>が押されたと認識されます。その場合、<kHome> へのマッピングは機能しません。
例ではよく <> 表記が使はれます。これは、何を入力すべきかを明確に表記するために使はれますが、文字どほりに入力する必要がある場合もあります。例へば、":map" コマンドで使ふ場合など。規則は以下のとほりです:
| <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 エントリ (下カーソルキー) |
マルチバイト文字である {char} を使用して <M-{char}> を指定できますが、Vim はどのバイトシーケンスであるかを認識できないため、動作しません。
<> 表記を使ふには、’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" などの他のコマンドでは機能しません!
Vim には 7 つの基本モードがあります。
ノーマルモードでは普通の編輯コマンドを全て入力できます。エディタをスタートするとこのモードに入ります (オプション ’insertmode’ を設定してゐるときは違ひます。以下を參照)。これはコマンドモードとも呼ばれます。
ノーマルモードに似てゐますが、移動コマンドで選擇領域が擴大されます。移動コマンド以外のコマンドを使ふと、選擇領域に對してそのコマンドが實行されます。|Visual-mode| を參照。 オプション ’showmode’ がオンなら、"‘-- VISUAL --’" がウィンドウの最下部に表示されます。
これは、MS-Windows でテキストを選擇するときの動作に似てゐます。印字可能文字が入力されると、選擇範圍を削除し、插入モードに入ります。|Select-mode| を參照。 オプション ’showmode’ がオンなら、"‘-- SELECT --’" がウィンドウの最下部に表示されます。
插入モードでは、タイプされたテキストはバッファに插入されます。|Insert-mode| を參照。 オプション ’showmode’ がオンなら、"‘-- INSERT --’" がウィンドウの最下部に表示されます。
コマンドラインモードでは、ウィンドウの下部に 1 行のテキストを入力できます。これは Ex コマンド、":"、パターン檢索コマンド、"?"、"/"、そしてフィルタコマンド、"!" で使用します。|Cmdline-mode| を參照。
コマンドラインモードに似てますが、コマンド入力後も Ex モードに留まります。コマンドライン編輯は、かなり制限されます。|Ex-mode| を參照。
ターミナルウィンドウの中でジョブと相互作用します。入力されたキーはジョブに渡され、ジョブの出力はターミナルウィンドウに表示されます。他のモードへの移行の仕方は |terminal| を參照。
加へて、7 つのモードがあります。これらは基本モードの變種です。
ノーマルモードに似てますが、オペレータコマンドが實行された後で、その適用範圍を決定するための移動コマンド ({motion}) を得るために、Vim が待機してゐる狀態です。
置換モードは插入モードの特別版です。插入モードと同樣のことができますが、一文字入力するごとに、その場所にある文字が 1 つ削除されます。|Replace-mode| を參照。オプション ’showmode’ がオンなら、"‘-- REPLACE --’" がウィンドウの最下部に表示されます。
假想置換モードは置換モードに似てゐますが、ファイルの文字の上ではなく、畫面上の任意の位置を置換できます。|Virtual-Replace-mode| を參照。
’showmode’ がオンなら、"‘-- VREPLACE --’" がウィンドウの最下部に表示されます。
插入モードで CTRL-O を入力すると、このモードに入ります (|i_CTRL-O| を參照)。ノーマルモードに似てますが、コマンドが實行された後、插入モードに戾ります。
オプション ’showmode’ がオンなら、"‘-- (insert) --’" がウィンドウの最下部に表示されます。
ターミナルウィンドウではノーマルモードを使ひます。變更はできないやうになつてゐます。ターミナルジョブモードに戾るには、"a" や "i" のやうな插入コマンドを使ひます。
插入モードでビジュアル選擇を開始すると、このモードに入ります。例へば、CTRL-O を使ひ, その後 "v"、"V"、CTRL-V を使つたときです。ビジュアル選擇が終了すると、插入モードに戾ります。
オプション ’showmode’ がオンなら、"‘-- (insert) VISUAL --’" がウィンドウの最下部に表示されます。
插入モードで選擇モードを開始すると、このモードに入ります。例へば、マウスをドラッグしたり、<S-Right> を押したときです。選擇モードが終了すると、插入モードに戾ります。
オプション ’showmode’ がオンなら、"‘-- (insert) SELECT --’" がウィンドウの最下部に表示されます。
何らかの理由で、現在のモードがわからなくなつたときは、<Esc> を 2 度押すことで常にノーマルモードに戾ることができます。Ex モードでは機能しないので、その場合は ":visual" を使つてください。
<Esc> を押したとき、スクリーンフラッシュや、ベルの音で、ノーマルモードに戾つたことを知ることができます。插入モードで CTRL-O の後に <Esc> を押した場合、ビープ音は鳴りますが、まだ插入モードの中なので、もう一度 <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 -- -- -- -- --
-- 不可
ノーマルモードから插入モードへは、コマンド "i", "I", "a", "A", "o", "O", "c", "C", "s", "S" で入ります。
ビジュアルモードからノーマルモードへは非移動コマンドで入れますが、そのコマンドは實行されてしまひます。<Esc>、"v"、"V"、"CTRL-V" (|v_v| を參照) を入力すれば、副作用なしにビジュアルモードから出られます。
コマンドラインモードからノーマルモードへ移行するには次のやうにします:
<CR> か <NL> を入力する。入力途中のコマンドは實行されます。
<BS> を入力する。
<Esc> を入力する、入力途中のコマンドを實行せずに終了できます。
最後の方法ですが、<Esc> が ’wildchar’ に設定されてゐる場合があります。その場合、コマンドライン補完が實行されますが、それを無視して、再び <Esc> を入力してください。
ノーマルモードから選擇モードに移行するには次のやうにします:
:set keymodel+=startsel が必要)
選擇モードからノーマルモードに移行するには、シフトキーを押さずに特殊キーでカーソルを動かします。(:set keymodel+=stopsel が必要)
選擇モードから插入モードへ移行するには、印字可能文字 (普通の文字) を入力します。選擇範圍は削除され、入力した文字が插入されます。
’insertmode’ がオンのときは、編輯作業は插入モードで始まります。
CTRL-\ CTRL-N と <C-\><C-N> を使つて、どのモードからでもノーマルモードに移行できます。このコマンドを使へば、確實にノーマルモードになることができます。<Esc> のときのやうにビープ音はなりません。ただし、Ex モードでは機能しません。|f| や |m| のやうに引數をとるコマンドの後で使はれたときは、’ttimeoutlen’ で設定されたタイムアウトが適用されます。
フォーカスがターミナルウィンドウにあるとき、CTRL-\ CTRL-N はたつた 1 つのコマンドでノーマルモードに移行します。|t_CTRL-\_CTRL-N| を參照。
’insertmode’ がオンのときは、CTRL-\ CTRL-G や <C-\><C-G> で插入モードに移行できます。オフのときはノーマルモードに移行します。このコマンドを使へば、現在どのモードにゐるのかにかかはらず、’insertmode’ に設定されたモードに移行することができます。
"Ex" モードに切り替へます。このモードは ":" コマンドを續けて入力するやうなものですが、次の點が違ひます:
:" を押す必要がない。
<Del> または <BS>、行削除に CTRL-U を使用する)。Vim が "ex" といふ名前で實行された場合には、このモードで起動します。"Ex" モードを拔けるには、":vi" コマンド |:visual| を使ひます。
Note:
Vim の昔のバージョンでは "Q" がテキストを整形するコマンドでしたが、いまは |gq| になつてゐます。ただし |vimrc_example.vim| を使つてゐる場合は、"Q" と "gq" は同じ動作をします。
"Ex" モードに切り替へます。"Q" と同じですが、實際に ":" コマンドでコマンドを入力するのと同じやうに動作します。コマンドライン編輯や補完などがすべて利用可能です。"Ex" モードを拔けるには、":vi" コマンド |:visual| を使ひます。
ノーマルモードと插入/置換モードでは、スクリーンに現在のバッファの內容が表示されます。つまり、見てゐるものが得られるもの (WYSIWYG) です。しかし、例外が 2 つがあります:
ウィンドウの幅より長い行は、折り返して表示されます。’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 はカーソルのある場所付近のみを表示します。特殊記號は表示されません。その行のどの部分でも編輯できます。
’@’ と ’~’ の强調表示を設定するには、オプション ’highlight’ の ’@’ を設定します。それらの文字と、バッファの中の本物の文字を區別することができます。
折り返された行の先頭には ’showbreak’ に設定した文字が表示されます。
’wrap’ がオフの場合、長い行は折り返されません。スクリーンに收まる分だけ表示されます。カーソルが表示されてゐない部分に移動すると、スクリーンは水平方向にスクロールします。この方法の利點は、縱の列がありのままに表示されること、スクリーンに收まらない行も編輯できることです。缺點としては、一行の全ての文字を一度に見ることができないことが擧げられます。’sidescroll’ にはスクロールする最小の列(カラム)數を設定します。
全ての普通の 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'| を參照。コマンドの文字とは、入力されて、まだ實行されてゐないコマンドのことです。
遲い端末を使つてゐる場合は、ステータスメッセージをオフにすることで編輯のスピードを上げることができます:
:set nosc noru nosm
エラーが起きたとき、エラーメッセージは少なくとも一秒閒は表示されます (反轉表示で)。
いくつかのコマンドでは、そのコマンドが作用する行數が表示されます。何行以上でその表示をするかは、’report’ で設定できます (初期設定は 2)。
Amiga 上では、Vim は CLI ウィンドウで實行されます。Vim の名前と現在のファイル名の絕對パスがタイトルバーに表示されます。ウィンドウがリサイズされると、Vim は自動的にウィンドウを再描畫します。ウィンドウは好きなだけ小さくできますが、小さすぎると 1 行のみで收まりきらなくなります。最下行に表示されるメッセージが讀めるやうに、最低でも 40 文字の幅を取つてください。
ほとんどの UNIX システム上で、Vim はウィンドウのリサイズを正しく認識、把握できます。
テキスト行が入つてゐる。一般にファイルから讀み込む。
Vim が使ふ領域全體。端末ウィンドウを指す場合もある。"Vim ウィンドウ" とも呼ばれる。
バッファが表示される場所。1 つのバッファが複數のウィンドウを持つことが可能。
1 つのスクリーンは 1 つ以上のウィンドウを內包し、それらはステータスラインで區切られ、最下行にはコマンドラインが表示されます。
+-------------------------------+
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. ~ |