diff --git a/vim_faq/vim_faq.jax b/vim_faq/vim_faq.jax index 768cb07fb..61ff7ed46 100644 --- a/vim_faq/vim_faq.jax +++ b/vim_faq/vim_faq.jax @@ -1,152 +1,155 @@ *vim_faq.txt* よく訊かれる質問 -このファイルをインストールする方法については、vim内で > - :help add-local-help -とタイプしてください。 +Last updated on: 12 December 2019 -Last updated on: 17 October 2004 + VIM FAQ by: Christian Brabandt - VIM リファレンスマニュアル by: Yegappan Lakshmanan - -Frequently Asked Questions *faq* *FAQ* +Frequently Asked Questions *vim-faq* *Vim-FAQ* このVim FAQは、vim@vim.orgメーリングリストとcomp.editorsニューズグループに投稿 された質問とその答から作られました。Vimにおいて問題を解決する方法はいくつかあ ります。このFAQを読めば、その数種類の可能性のうちの1つが得られます。このFAQ中 の情報とリンクを使って他の方法を探すこともできます。このFAQの答に対するクレ -ジットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。 +ジットはPeppe, Benji, Charles Campbellと他多数の人々に帰属します。FAQのオンラ +イン版は https://vimhelp.appspot.com/vim_faq.txt.html にあります。 + +{訳注: 日本語版のFAQは以下にある。 + https://vim-jp.org/vimdoc-ja/vim_faq.html } *faq-index* -目次 +目次 ~ *faq-general-information* -SECTION 1 - 一般的な情報 +SECTION 1 - 一般的な情報 ~ |faq-1.1| Vimとは何ですか? |faq-1.2| 誰が Vim を書いたんですか? |faq-1.3| Vim は Vi と互換性がありますか? |faq-1.4| Vim が Vi よりも向上している点は何ですか? |faq-1.5| Vim は無料ですか? *faq-resources* -SECTION 2 - 情報源 +SECTION 2 - 情報源 ~ |faq-2.1| どこに行けば Vim についてもっと学べるでしょうか? |faq-2.2| メーリングリストはありますか? |faq-2.3| メーリングリストのアーカイブはありますか? |faq-2.4| HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? |faq-2.5| ある問題が発生しました。それが私の設定によるものか、Vimそのものの - 問題かはどうすればわかりますか? + 問題かはどうすればわかりますか? |faq-2.6| どこでバグ報告をすればいいですか? |faq-2.7| FAQはどこで見つけられますか? |faq-2.8| このFAQに答えが見つからなかった時、どうすればいいですか? |faq-2.9| Vimに機能を追加するパッチを持っています。これをどこへ送ればいいで - すか? + すか? |faq-2.10| Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグ - インを開発したり、新しいスクリプトやカラースキームを開発しました。 - これをアップロードできる公開のウェブサイトはありますか? + インを開発したり、新しいスクリプトやカラースキームを開発しました。 + これをアップロードできる公開のウェブサイトはありますか? *faq-availability* -SECTION 3 - 入手 +SECTION 3 - 入手 ~ |faq-3.1| Vim の最新のバージョンは何ですか? |faq-3.2| どこで Vim の最新版を見つけられますか? |faq-3.3| どのプラットフォーム上で実行できるんですか? |faq-3.4| どこでVimのランタイムファイルの最新バージョンをダウンロードできま - すか? + すか? *faq-help* -SECTION 4 - ヘルプ +SECTION 4 - ヘルプ ~ |faq-4.1| どうやってヘルプファイルを利用するんですか? |faq-4.2| どうやってVimヘルプファイル中のキーワードを探すんですか? |faq-4.3| エラーメッセージE123が出ました。何がまずいのでしょうか? |faq-4.4| Vimの様々なモードについては何を読めばいいですか? |faq-4.5| 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファ - イルを生成することができますか? + イルを生成することができますか? |faq-4.6| 圧縮したヘルプファイルを使うことはできますか? *faq-editing-a-file* -SECTION 5 - ファイルの編集 +SECTION 5 - ファイルの編集 ~ |faq-5.1| ファイルを編集用に読み込むには? |faq-5.2| 現在のファイルを別な名前で保存(save as)して新しいファイルを編集す - るには? + るには? |faq-5.3| カレントディレクトリを現在のファイルのディレクトリにするには? |faq-5.4| ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? |faq-5.5| ファイルを最後に編集した場所から開くようにするには? |faq-5.6| Vimでファイルを編集中にそのファイルが他のアプリケーションによって - 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ - アログのような)を開きます。この警告を無効にするには? + 変更されたとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイ + アログのような)を開きます。この警告を無効にするには? |faq-5.7| カーソル下のファイル名のファイルを開くには? |faq-5.8| 現在のファイルを再読み込みするには? |faq-5.9| ファイルを定期的に自動保存するには? |faq-5.10| ファイルを読み取り専用モードで開くには? +|faq-5.11| 現在のファイルの変更を保存せずに編集用にファイルを開くには? +|faq-5.12| Vimでとても大きなファイルを開く場合にロード時間を短縮するには? *faq-editing-multiple-files* -SECTION 6 - 複数のファイルを編集する +SECTION 6 - 複数のファイルを編集する ~ |faq-6.1| Vim内で同時に複数のファイルを開くには? |faq-6.2| 複数のファイル・バッファを切り替えるには? -|faq-6.3| それぞれのファイルを別ウィンドウで開くには? +|faq-6.3| それぞれのファイルを別ウィンドウ/タブページで開くには? |faq-6.4| 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを - 同時に読み込ませるようにするには? + 同時に読み込ませるようにするには? |faq-6.5| Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィ - ンドウを開くことはできますか? + ンドウを開くことはできますか? |faq-6.6| Vim内でディレクトリをブラウズするには? |faq-6.7| ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? *faq-backup* -SECTION 7 - バックアップ +SECTION 7 - バックアップ ~ |faq-7.1| ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけた - ファイルが作られます。このファイルを作成するのを止めさせるには? - (または)バックアップ機能を無効にするには? -|faq-7.2| 全てのバックアップファイルを特定のディレクトリに保存するように設定 - するには? -|faq-7.3| ファイルを保存するとファイルパーミッションが変更されます。ファイル - パーミッションを変更せずにファイルを保存するよう設定するには? + ファイルが作られます。このファイルを作成するのを止めさせるには? + (または)バックアップ機能を無効にするには? +|faq-7.2| ファイルを保存したとき元のファイル名の末尾に".un~"という拡張子をつ + けたファイルが作られます。このファイルを作成するのを止めさせるには? + (または)アンドゥファイル機能を無効にするには? +|faq-7.3| 全てのバックアップファイルを特定のディレクトリに保存するように設定 + するには? +|faq-7.4| ファイルを保存するとファイルパーミッションが変更されます。ファイル + パーミッションを変更せずにファイルを保存するよう設定するには? *faq-buffers* -SECTION 8 - バッファ +SECTION 8 - バッファ ~ |faq-8.1| バッファに対して変更を加えました。変更されたバッファを保存せずに、 - かつ変更を失うことなく他のバッファを編集するには? + かつ変更を失うことなく他のバッファを編集するには? |faq-8.2| バッファを切り替えるときに自動的に保存するよう設定するには? |faq-8.3| カレントウィンドウのバッファを空バッファにするには? |faq-8.4| バッファ番号を指定してバッファを読み込むショートカットキーはありま - すか? + すか? |faq-8.5| 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? |faq-8.6| Vimを終了することなくバッファを閉じる(削除する)には? -|faq-8.7| :e filenameでいくつかのファイルを開きました。Vimを終了することなく - そのバッファのうちの1つを閉じるには? -|faq-8.8| ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが - 削除されません。なぜ? -|faq-8.9| カレントバッファ/ファイルのバッファ番号を表示するには? -|faq-8.10| ウィンドウを閉じることなくバッファを削除するには? -|faq-8.11| Tabキーで全バッファを巡回するようにマップするには? +|faq-8.7| `:%bd`コマンドで全バッファを削除しようとしても、全てのバッファが + 削除されません。なぜ? +|faq-8.8| カレントバッファ/ファイルのバッファ番号を表示するには? +|faq-8.9| ウィンドウを閉じることなくバッファを削除するには? +|faq-8.10| キーで全バッファを巡回するようにマップするには? *faq-windows* -SECTION 9 - ウィンドウ +SECTION 9 - ウィンドウ ~ |faq-9.1| ウィンドウとバッファの違いは? |faq-9.2| ウィンドウの幅を広げるには? |faq-9.3| ウィンドウをズームイン・ズームアウトするには? |faq-9.4| 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してex - コマンドを実行するには? + コマンドを実行するには? *faq-motion* -SECTION 10 - モーション +SECTION 10 - モーション ~ |faq-10.1| ファイルの先頭や末尾に移動するには? |faq-10.2| 挿入モードでキーを押してノーマルモードに移行すると、カーソル - が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除い - て)。この動作を変更し、カーソルがその桁の上に残るようにできますか? + が1文字左へ移動します(カーソルが行の最初の文字の上にあるときを除い + て)。この動作を変更し、カーソルがその桁の上に残るようにできますか? |faq-10.3| などのキーを押してスクロールしたときカーソル - 位置の桁を保つように設定することはできますか? + 位置の桁を保つように設定することはできますか? |faq-10.4| ファイル中のある行の長さが画面の幅を越えており、折り返されていま - す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 - (論理行)に移動します。画面上の次行に移動するには? + す。ここでj, kキーを使うと画面上の次行(物理行)でなくファイルの次行 + (論理行)に移動します。画面上の次行に移動するには? |faq-10.5| Vimにおける文、段落、セクションの定義は? |faq-10.6| 文、段落、セクションの先頭と末尾に移動するには? |faq-10.7| 画面の右端を越えて続いている行があります。右側にスクロールして画面 - 外に出ているテキストを表示するには? + 外に出ているテキストを表示するには? |faq-10.8| 2個以上のバッファを同時にスクロールさせるには? |faq-10.9| 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カー - ソルが適切に移動しません。どうなっているのですか? + ソルが適切に移動しません。どうなっているのですか? |faq-10.10| カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するよう - にするには? + にするには? |faq-10.11| 常に挿入モードに留まるようにするには?(モードレスな編集をするに - は?) + は?) |faq-10.12| テキストをスクロールするとき、前後の行を表示するには? |faq-10.13| 以前のカーソル位置に戻るには? *faq-searching-text* -SECTION 11 - テキストを検索する +SECTION 11 - テキストを検索する ~ |faq-11.1| テキストを検索した後、マッチしたテキストが全て強調されます。この強 - 調を一時的/永続的に無効にするには? + 調を一時的/永続的に無効にするには? |faq-11.2| 検索パターンにキャリッジリターン文字を含めるには? -|faq-11.3| 文字^Mを検索するには? -|faq-11.4| '~R', '~S'などと表示される文字を検索・置換するには? +|faq-11.3| 文字"^M"を検索するには? +|faq-11.4| "~R", "~S"などと表示される文字を検索・置換するには? |faq-11.5| ファイル中の印字不能文字を全て強調するには? |faq-11.6| 単語に完全に一致するテキストを検索するには? |faq-11.7| カーソル下の単語を検索するには? @@ -157,9 +160,9 @@ SECTION 11 - テキストを検索する |faq-11.12| 空行を検索するには? |faq-11.13| 1つの文字だけを含む行を検索するには? |faq-11.14| 複数のファイルから文字列を検索し、置換するには? -|faq-11.15| マップ中で置換コマンド":s"を使っています。検索が失敗したときマップ - が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを - 続けてほしいのですが、どうすればできますか? +|faq-11.15| マップ中で置換コマンド`:s`を使っています。検索が失敗したときマップ + が途切れてしまいます。置換が失敗したときにもマップの次のコマンドを + 続けてほしいのですが、どうすればできますか? |faq-11.16| 行からある文字がn回目に現れる箇所を検索するには? |faq-11.17| タブ(やその他の文字)を改行文字で置換するには? |faq-11.18| ASCIIコードで検索する文字を指定するには? @@ -167,13 +170,17 @@ SECTION 11 - テキストを検索する |faq-11.20| カレントバッファ内の指定したパターンを含む行を全て表示するには? |faq-11.21| 複数行にわたる文字列を検索するには? |faq-11.22| バッファの指定した範囲内から検索するには? +|faq-11.23| How do I clear the last searched pattern? +|faq-11.24| Why does this pattern "a.\{-}p\@!" not match? +|faq-11.25| How can I use "/" within a pattern, without escaping it? +|faq-11.26| How can I operate on a search match? *faq-changing-text* -SECTION 12 - テキストを変更する +SECTION 12 - テキストを変更する ~ |faq-12.1| 行末の空白文字(スペースとタブ)を全て削除するには? |faq-12.2| 連続する空白文字を1個のスペースに置換するには? |faq-12.3| 連続する空行を1行だけに圧縮するには? |faq-12.4| ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除 - するには? + するには? |faq-12.5| カーソル下の単語をコピー/ヤンクするには? |faq-12.6| 行全体ではなく、行内のある位置からある位置までをヤンクするには? |faq-12.7| 現在のレジスタの中身に追加ヤンクするには? @@ -190,17 +197,17 @@ SECTION 12 - テキストを変更する |faq-12.18| 行末を越えてカーソルを移動し、テキストを挿入するには? |faq-12.19| カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? |faq-12.20| ディレクトリ中の全てのファイルに対して特定のテキストを置換する - には? + には? |faq-12.21| ファイル中に数字が書かれています。これを増加・減少させるには? -|faq-12.22| ":substitute"で最後に検索したパターンを再利用するには? -|faq-12.23| ":substitute"を使って大文字・小文字を入れかえるには? +|faq-12.22| `:substitute`で最後に検索したパターンを再利用するには? +|faq-12.23| `:substitute`を使って大文字・小文字を入れかえるには? |faq-12.24| キーボード上に無い文字を入力するには? |faq-12.25| ダイグラフのどれか、または全てを削除するコマンドはありますか? |faq-12.26| 挿入モードでバックスペースキーを押すと、今回の挿入モードで入力した - 文字が消されるだけです。バックスペースキーで前回の挿入モードで入力 - した文字を消すには? + 文字が消されるだけです。バックスペースキーで前回の挿入モードで入力 + した文字を消すには? |faq-12.27| 72文字より長くて"+"で終わり、次行に折り返されている行があります。 - このような行をすばやく連結させるには? + このような行をすばやく連結させるには? |faq-12.28| 文字単位でヤンクされたテキストを新しい行にペーストするには? |faq-12.29| 単語・文字・テキストのブロックの大文字小文字を入れかえるには? |faq-12.30| キーボード上にないASCII文字を入力するには? @@ -208,14 +215,15 @@ SECTION 12 - テキストを変更する |faq-12.32| バッファから重複した行を削除するには? |faq-12.33| ファイル中の全ての行の前に行番号をつけるには? |faq-12.34| 2つの文字・単語・行を入れ換えるには? +|faq-12.35| How do I change the characters used as word delimiters? *faq-completion-in-insert-mode* -SECTION 13 - 挿入モードでの補完 +SECTION 13 - 挿入モードでの補完 ~ |faq-13.1| 挿入モードで単語や行を補完するには? |faq-13.2| 挿入モードでファイル名を補完するには? |faq-13.3| 挿入モードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 - 今補完した単語の後に現れる単語を補完するには? + 今補完した単語の後に現れる単語を補完するには? *faq-text-formatting* -SECTION 14 - テキストの整形 +SECTION 14 - テキストの整形 ~ |faq-14.1| 折り返された行の末尾に改行を挿入するには? |faq-14.2| 1行がn文字以下になるように長い行を整形するには? |faq-14.3| 短い行を連結して段落を形成するには? @@ -225,76 +233,78 @@ SECTION 14 - テキストの整形 |faq-14.7| 現在のファイルのインデントを増やす/減らすには? |faq-14.8| ブロックまたは行のグループをインデントするには? |faq-14.9| >または<キーで行をインデントすると、'tabstop'で設定した値でなく、 - 標準的なタブストップ値の8が使われます。なぜですか? + 標準的なタブストップ値の8が使われます。なぜですか? |faq-14.10| オートインデントを無効にするには? |faq-14.11| メールを編集するときは自動的に'textwidth'オプションをある値にする - ようにするには? + ようにするには? |faq-14.12| 自動的に改行を挿入させることはできますか? |faq-14.13| ファイル中に^Mという記号がたくさん表示されます。'fileformat'を - 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま - せん。これらの記号を表示させなくするには? + 'dos'にしたり'unix'にしたり'mac'にしたりしてみましたが、改善できま + せん。これらの記号を表示させなくするには? |faq-14.14| 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、 - 挿入されたテキストの桁(インデント)が狂ってしまいます。 - これを直すには? + 挿入されたテキストの桁(インデント)が狂ってしまいます。 + これを直すには? |faq-14.15| 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきら - ないとき、まったく何も表示されません。折り返された行の代わりに'@' - という記号で始まる空の行が表示されます。行が収まるように画面をスク - ロールすると'@'は消え、行が表示されるようになります。この挙動の設 - 定はどうやるのですか? + ないとき、まったく何も表示されません。折り返された行の代わりに"@" + という記号で始まる空の行が表示されます。行が収まるように画面をスク + ロールすると"@"は消え、行が表示されるようになります。この挙動の設 + 定はどうやるのですか? |faq-14.16| ファイル中の全てのタブ文字をスペースに変換するには? |faq-14.17| 後でワードプロセッサーに送るテキストを編集するためのオプションは? +|faq-14.18| How do I join lines without adding or removing any space + characters? *faq-visual-mode* -SECTION 15 - ビジュアルモード +SECTION 15 - ビジュアルモード ~ |faq-15.1| 矩形範囲をコピーするには? |faq-15.2| ファイルの特定の列を削除・変更するには? |faq-15.3| ビジュアル選択した行に対してexコマンドを適用するには? |faq-15.4| 矩形選択した範囲に対してexコマンドを適用するには? |faq-15.5| ビジュアルモードでファイル全体を選択するには? |faq-15.6| ビジュアル選択してから>キーを押してインデントすると、選択が解除さ - れます。この範囲に対して操作を続けるため選択したままにするには? - (または)最後に選択された範囲を再選択するには? + れます。この範囲に対して操作を続けるため選択したままにするには? + (または)最後に選択された範囲を再選択するには? |faq-15.7| ビジュアル選択した範囲の先頭/末尾へ移動するには? |faq-15.8| マウスでテキストを選択してからexコマンドを実行しようと:キーを押す - と選択された範囲が文字:で置換されてしまいます。マウスで選択したと - きもビジュアル選択したときのようにテキストに対してexコマンドを実行 - するには? + と選択された範囲が文字:で置換されてしまいます。マウスで選択したと + きもビジュアル選択したときのようにテキストに対してexコマンドを実行 + するには? |faq-15.9| マウスでテキストを選択するとビジュアルモードでなく選択モードに入っ - てしまいます。なぜですか? + てしまいます。なぜですか? |faq-15.10| 最後にコピー/ペーストされたテキストをビジュアル選択するには? *faq-command-line-mode* -SECTION 16 - コマンドラインモード +SECTION 16 - コマンドラインモード ~ |faq-16.1| コマンドモードまたはexコマンドモードでカレントファイル名を使うには? |faq-16.2| Vimのコマンドラインで効率的にテキストを編集するには? |faq-16.3| ViモードからExモードに移行するには? |faq-16.4| exコマンドの出力をバッファにコピーするには? -|faq-16.5| コマンドモードでファイル名を補完しようとタブキーを押します。マッチ - するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 - し、マッチしたファイル名全てのリストを表示します。マッチしたファイ - ル名全てを表示するだけで、最初の候補を補完しないようにするには? +|faq-16.5| コマンドモードでファイル名を補完しようとキーを押します。マッチ + するファイル名が複数ある時、Vimは最初にマッチするファイル名を補完 + し、マッチしたファイル名全てのリストを表示します。マッチしたファイ + ル名全てを表示するだけで、最初の候補を補完しないようにするには? |faq-16.6| バッファからコマンドラインにテキストをコピーしたり、コマンドライン - からバッファにテキストをコピーするには? + からバッファにテキストをコピーするには? |faq-16.7| あるコマンドを実行することなくコマンド履歴に入れるには? |faq-16.8| コマンドラインの高さを上げるには? *faq-viminfo* -SECTION 17 - VIMINFO +SECTION 17 - VIMINFO ~ |faq-17.1| Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセー - ジが出ます。このメッセージを出なくさせるには? + ジが出ます。このメッセージを出なくさせるには? |faq-17.2| viminfo機能を無効にするには? -|faq-17.3| Vimのセッションをまたいでマークを保存し、使用するには? +|faq-17.3| Vimのセッションをまたいでマーク/コマンドを保存し、使用するには? *faq-remote-editing* -SECTION 18 - リモート編集 +SECTION 18 - リモート編集 ~ |faq-18.1| 既に起動しているgvimでファイルを開くには? Vim 5.xの - OpenWithVim.exeとSendToVim.exeはどうなりました? + OpenWithVim.exeとSendToVim.exeはどうなりました? |faq-18.2| vimサーバーに全てのバッファをディスクに保存するようなコマンドを送 - るには? + るには? |faq-18.3| Vimのリモートサーバー機能についてのドキュメントはどこで手に入りま - すか? + すか? *faq-options* -SECTION 19 - オプション +SECTION 19 - オプション ~ |faq-19.1| Vimを設定する簡単な方法は? |faq-19.2| オプションの値をトグルするには? |faq-19.3| 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプション - を設定するには? + を設定するには? |faq-19.4| オプションの値にスペースを含めるには? |faq-19.5| オプション設定をファイルに埋め込むには? |faq-19.6| ファイル中の全ての行の行番号を表示するには? @@ -307,74 +317,80 @@ SECTION 19 - オプション |faq-19.13| 常にステータスラインを表示するようにするには? |faq-19.14| Vimを再起動しても設定が永続するようにするには? |faq-19.15| なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュす - る)のですか? -|faq-19.16| 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示する - ようにするには? -|faq-19.17| 1回の":set"コマンドでオプションから複数のフラグを除去するには? + る)のですか? +|faq-19.16| "c"と"s"を使ったときに変更する文字を削除するのでなく"$"を表示する + ようにするには? +|faq-19.17| 1回の`:set`コマンドでオプションから複数のフラグを除去するには? *faq-mapping-keys* -SECTION 20 - キーマップ +SECTION 20 - キーマップ ~ |faq-20.1| キーがどうマップされているかを知るには? |faq-20.2| ユーザー定義のキーマッピングをリストするには? |faq-20.3| キーマップを解除するには? |faq-20.4| キーへマッピングができません。何がまずいのですか? -|faq-20.5| テンキーにマップするには? -|faq-20.6| ビジュアルモードでのみ機能するマッピングを作成するには? -|faq-20.7| Vim script中で、すでに使われているキーと衝突しないようにどのキーを - 使うべきかを知るには? -|faq-20.8| エスケープキーにマップするには? -|faq-20.9| あるキーを何もしないようにマップするには? -|faq-20.10| Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブ - ロックをアンインデントするようにしたいです。このようなマップを作る - には?この挙動はtextpadやVisual Studioなどに似ています。 -|faq-20.11| 私のマッピングにおいてのような特殊文字が認識されません。 - 特殊文字を認識するように設定するには? -|faq-20.12| マップ中で'|'を使って複数のコマンドを区切るには? -|faq-20.13| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短 - 縮入力があります。最初のものを入力したとき、2番目のが展開しないよ - うにするには? -|faq-20.14| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? -|faq-20.15| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング - を作るには? -|faq-20.16| キーの機能を保ったままCtrl-Iにマッピングするには? +|faq-20.5| Why does mapping the key not work? +|faq-20.6| テンキーにマップするには? +|faq-20.7| ビジュアルモードでのみ機能するマッピングを作成するには? +|faq-20.8| How do I create a mapping that works only in normal and operator + pending mode (but not in visual mode)? +|faq-20.9| Vim script中で、すでに使われているキーと衝突しないようにどのキーを + 使うべきかを知るには? +|faq-20.10| エスケープキーにマップするには? +|faq-20.11| あるキーを何もしないようにマップするには? +|faq-20.12| キーでテキストのブロックをインデントし、でテキスト + のブロックをアンインデントするようにしたいです。このようなマップを + 作るには?この挙動はtextpadやVisual Studioなどに似ています。 +|faq-20.13| 私のマッピングにおいてのような特殊文字が認識されません。 + 特殊文字を認識するように設定するには? +|faq-20.14| マップ中で"|"を使って複数のコマンドを区切るには? +|faq-20.15| その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短 + 縮入力があります。最初のものを入力したとき、2番目のが展開しないよ + うにするには? +|faq-20.16| ときどきキーが処理されるのに1秒程度かかるのはなぜですか? +|faq-20.17| ビジュアル選択したテキストに対して外部コマンドを実行するマッピング + を作るには? +|faq-20.18| キーの機能を保ったままCTRL-Iにマッピングするには? +|faq-20.19| How do I define a map to accept a count? +|faq-20.20| How can I make my normal mode mapping work from within Insert + Mode? *faq-abbreviations* -SECTION 21 - 短縮入力 +SECTION 21 - 短縮入力 ~ |faq-21.1| スペリングを間違えた単語を自動的に修正するには? |faq-21.2| 複数行の短縮入力を作るには? |faq-21.3| 短縮入力が展開されたとき、展開されたテキストの末尾に余計なスペース - が入ってしまいます。これを防ぐには? + が入ってしまいます。これを防ぐには? |faq-21.4| 現在の日付・時刻を挿入するには? |faq-21.5| 挿入モードで短縮入力が展開されるのを防ぐには? *faq-record-and-playback* -SECTION 22 - レコーディングと繰り返し +SECTION 22 - レコーディングと繰り返し ~ |faq-22.1| 編集操作(挿入、削除、ペースト等)を繰り返すには? |faq-22.2| キーシーケンスを記録し、繰り返すには? |faq-22.3| 記録したキーシーケンスを編集するには? |faq-22.4| 記録したキーシーケンスをファイルに保存するには? |faq-22.5| レジスタ0にキーシーケンスを保存しています(つまり q0 .... q)。 - 記録したキーシーケンスの中でテキストをヤンクしています。一度その - キーシーケンスを再生すると、もうそれを再現することができません。 + 記録したキーシーケンスの中でテキストをヤンクしています。一度その + キーシーケンスを再生すると、もうそれを再現することができません。 *faq-autocommands* -SECTION 23 - 自動コマンド +SECTION 23 - 自動コマンド ~ |faq-23.1| 読み込み専用ファイルを修正しようとしたときにコマンドを実行するには? |faq-23.2| あるバッファに入るときに毎回コマンドを実行するには? |faq-23.3| あるウィンドウに入るときに毎回コマンドを実行するには? |faq-23.4| autocmd中でその自動コマンドが実行されているファイルの名前やバッ - ファ番号を知るには? + ファ番号を知るには? |faq-23.5| Vimがフォーカスを失ったとき、変更されたバッファ全てを自動的に保存 - するには? + するには? |faq-23.6| Vimを終了するときにクリーンアップ用の関数を実行するには? *faq-syntax-highlight* -SECTION 24 - 構文強調 +SECTION 24 - 構文強調 ~ |faq-24.1| 構文強調をオン・オフにするには? |faq-24.2| 背景色と文字色を変えるには? |faq-24.3| 暗い/明るい背景色に合うように色を変えるには? -|faq-24.4| ":set number"をしたときに表示される行番号の色を変えるには? +|faq-24.4| `:set number`をしたときに表示される行番号の色を変えるには? |faq-24.5| ビジュアルモードで選択された範囲の背景色を変えるには? |faq-24.6| オプション'list'で表示した特殊文字(タブ、行末の空白、行末など)に色 - をつけるには? + をつけるには? |faq-24.7| 毎回同じカラースキームを使うように.vimrc/.gvimrcで設定するには? |faq-24.8| 正しく構文強調されません。ファイルの一部が強調されなかったり、間 - 違って強調されてしまいます。 + 違って強調されてしまいます。 |faq-24.9| 対応する括弧を強調する組み込みの関数はありますか? |faq-24.10| Cのコメントの構文強調をオフにするには? |faq-24.11| Vimに付属する標準の構文ファイルに私自身の構文拡張を加えるには? @@ -383,204 +399,212 @@ SECTION 24 - 構文強調 |faq-24.14| ソースファイル(.c, .hなど)を構文強調つきでHTMLファイルに変換するに は? |faq-24.15| 現在のハイライトグループ定義を全て表示するには? +|faq-24.16| How can I embed one syntax highlighting language into another one? *faq-vim-script-writing* -SECTION 25 - Vim script を書く +SECTION 25 - Vim script を書く ~ |faq-25.1| 読み込まれているスクリプトを全て表示するには? |faq-25.2| Vim scriptをデバッグするには? |faq-25.3| あるオプションを設定したスクリプト/プラグインを探すには? |faq-25.4| (おそらくスクリプトを実行中に)エラーやメッセージが出るのですが、す - ぐに消えてしまいます。このメッセージをもう一度表示するには? + ぐに消えてしまいます。このメッセージをもう一度表示するには? |faq-25.5| プラグイン固有の情報を保存し、Vimを再起動したときそれを復元するに - は? + は? |faq-25.6| 関数の中から挿入モードを開始するには? |faq-25.7| 関数の中でカーソル位置を動かすには? |faq-25.8| .vimrcファイルの中で環境変数の値をチェックするには? |faq-25.9| 環境変数が定義されているかどうかをチェックするには? |faq-25.10| Vimの組み込み関数を呼ぶには? |faq-25.11| Vim script中でノーマルコマンドを使っています。そのコマンドに対して - ユーザー定義のマッピングが働くのを防ぎ、そのノーマルモードコマンド - がVimの標準の機能を果たすようにするには? + ユーザー定義のマッピングが働くのを防ぎ、そのノーマルモードコマンド + がVimの標準の機能を果たすようにするには? |faq-25.12| ビジュアルモードで現在選択されているテキストを変数やレジスタに入れ - るには? -|faq-25.13| 変数'myvar'にテキストが入っています。この変数を":s"中で使って - 'mytext'というテキストを置換したいのですが、どうすればいいですか? + るには? +|faq-25.13| 変数"myvar"にテキストが入っています。この変数を`:s`中で使って + "mytext"というテキストを置換したいのですが、どうすればいいですか? |faq-25.14| 変数"bno"がバッファ番号を保持しています。この変数を使って対応する - バッファを開くには? + バッファを開くには? |faq-25.15| オプションの値を変数に保存するには? |faq-25.16| 関数の中でテキストをコピーし、バッファに挿入しました。関数の中で - そのテキストをインデントするには? + そのテキストをインデントするには? |faq-25.17| Vim script中でカーソル下の文字を取得するには? |faq-25.18| 拡張子を除いたカレントファイル名を取得するには? |faq-25.19| カレントファイルのベース名(basename)を取得するには? |faq-25.20| 関数の結果をカレントバッファに挿入するには? |faq-25.21| 関数の中で外部プログラムを呼ぶには? -|faq-25.22| ":!"で実行したプログラムが返すステータス値を取得するには? +|faq-25.22| `:!`で実行したプログラムが返すステータス値を取得するには? |faq-25.23| カレントバッファが変更されているかどうかを知るには? |faq-25.24| スクリプト中でノーマルコマンドの中に改行文字を使いたいです。改行文 - 字を指定するには? + 字を指定するには? |faq-25.25| スクリプト中で長い行を次行に継続するには? -|faq-25.26| "execute 'echo Myfunc()'"として自作の関数を呼ぼうとすると、カーソ - ルがカレントバッファの先頭に移動してしまいます。なぜ? +|faq-25.26| `:execute Myfunc()`として自作の関数を呼ぼうとすると、カーソルがカレン + トバッファの先頭に移動してしまいます。なぜ? |faq-25.27| レジスタの中身を実行するには? -|faq-25.28| 関数やマップを呼んだ後に'u'キーを押してアンドゥするとその関数/ - マップによってなされた変更全てをアンドゥします。なぜ? +|faq-25.28| 関数やマップを呼んだ後に"u"キーを押してアンドゥするとその関数/ + マップによってなされた変更全てをアンドゥします。なぜ? |faq-25.29| s:つきで定義された関数(スクリプトローカル関数)を別のスクリプト/ - プラグインから呼ぶには? + プラグインから呼ぶには? |faq-25.30| 読み込んだスクリプトをun-sourceするには?言い替えると、スクリプト - を読み込んだことによって実行されたコマンドを全て戻すには? + を読み込んだことによって実行されたコマンドを全て戻すには? *faq-plugins* -SECTION 26 - プラグイン +SECTION 26 - プラグイン ~ |faq-26.1| ファイル形式ごとに異なるオプションを設定するには? |faq-26.2| プラグイン/構文ファイル/インデントファイル/カラースキーム/ファイル - タイププラグインをダウンロードしました。Vimがこれらのファイルを読 - み込むようにするには、どこにコピーすればいいですか? + タイププラグインをダウンロードしました。Vimがこれらのファイルを読 + み込むようにするには、どこにコピーすればいいですか? |faq-26.3| 既存のファイル形式別プラグインを拡張するには? |faq-26.4| プラグインの読み込みをオフにするには? |faq-26.5| ファイル形式別プラグインの読み込みをオフにするには? |faq-26.6| 全てのファイル形式に対し、グローバルのファイル形式別プラグインで - なされる設定を上書きするには? + なされる設定を上書きするには? |faq-26.7| Vimのディレクトリブラウザープラグインを無効にするには? |faq-26.8| 特定のパターンにマッチする名前のファイルや拡張子に応じてファイル - タイプオプションを設定するには? + タイプオプションを設定するには? *faq-editing-program-files* -SECTION 27 - プログラムファイルを編集する +SECTION 27 - プログラムファイルを編集する ~ |faq-27.1| C/C++のファイルに対してオートインデントを有効化するには? |faq-27.2| C/C++のファイルに対するインデントをカスタマイズするには? |faq-27.3| オートインデント機能を無効化するには? |faq-27.4| オートインデントの際に挿入されるスペースの数を変えるには? |faq-27.5| Cプログラムを編集しています。マクロ定義や変数を表示するには? |faq-27.6| Cプログラムを編集しています。ブロックの内側から、そのブロックの開 - 始位置や終了位置にジャンプするには? -|faq-27.7| C++ファイルで"//"コメントが自動的に挿入されるのを止めさせるには? -|faq-27.8| 一連の行の行頭にコメント文字'#'をつけ加えるには? + 始位置や終了位置にジャンプするには? +|faq-27.7| C++ファイルでコメント(//)行の前後に行を挿入した場合に、Vimが自動的 + にC++コメント(//)を行頭に挿入します。この動作を無効にするには? +|faq-27.8| 一連の行の行頭にコメント文字"#"をつけ加えるには? |faq-27.9| Cのソースファイルに対応する名前のヘッダーファイルを開くには? |faq-27.10| コメントを入力しているとき、自動的にコメント文字を挿入するには? *faq-quickfix* -SECTION 28 - QuickFix +SECTION 28 - QuickFix ~ |faq-28.1| Vimの中からプログラムをビルドするには? |faq-28.2| Vim中からmakeコマンドを起動すると、コンパイラがプログラムをコンパ - イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 - 示が消えてしまい、エラーメッセージをもう一度見るには :clist としな - ければなりません。このエラーメッセージを見るのに他の方法はありませ - んか? + イルしてエラーメッセージを出力します。しかしコンパイルが終わると表 + 示が消えてしまい、エラーメッセージをもう一度見るには `:clist` としな + ければなりません。このエラーメッセージを見るのに他の方法はありませ + んか? +|faq-28.3| How can I perform a command for each item in the + quickfix/location list? *faq-folding* -SECTION 29 - 折り畳み +SECTION 29 - 折り畳み ~ |faq-29.1| 折り畳みの機能を拡張するには? |faq-29.2| 'foldmethod'をセットして折り畳みを有効化すると、全ての折り畳みが閉 - じてしまいます。これを防ぐには? + じてしまいます。これを防ぐには? |faq-29.3| ファイルの編集を開始したときにいくつの折り畳みが開かれた状態にする - かをコントロールするには? + かをコントロールするには? |faq-29.4| マウスを使って折り畳みを開閉するには? |faq-29.5| 閉じた折り畳みの表示に使われるテキストを変更するには? |faq-29.6| Vimを終了・再起動するとき、手動で作った折り畳みを保存・復元するに - は? + は? +|faq-29.7| I have enabled syntax based folding. Why is Vim so slow? *faq-vim-with-external-applications* -SECTION 30 - 外部プログラムとの連携 +SECTION 30 - 外部プログラムとの連携 ~ |faq-30.1| Vimのウィンドウの中でシェルを起動することはできますか? |faq-30.2| カーソル下の単語を外部プログラムに渡すには? |faq-30.3| シェルコマンドの出力をVimのバッファに取り込むには? |faq-30.4| カレントバッファの中身を外部プログラムにパイプで渡して、そのプログ - ラムの出力でバッファを置き換えるには? + ラムの出力でバッファを置き換えるには? |faq-30.5| ファイル中のあるセクションをソートするには? -|faq-30.6| Vimとslrnといっしょに使うステップ・バイ・ステップガイドはあります - か? -|faq-30.7| Vimをページャとして使うには? -|faq-30.8| Vimの中でUnixのmanページを見るには? -|faq-30.9| Vimのdiff機能で使われるdiffコマンドを変更するには? -|faq-30.10| 折り畳みなしで差分モードを使うには? +|faq-30.6| Vimをページャとして使うには? +|faq-30.7| Vimの中でUnixのmanページを見るには? +|faq-30.8| Vimのdiff機能で使われるdiffコマンドを変更するには? +|faq-30.9| 折り畳みなしで差分モードを使うには? *faq-gui-vim* -SECTION 31 - GUIのVIM +SECTION 31 - GUIのVIM ~ |faq-31.1| バッファ固有のメニューを作るには? |faq-31.2| GUIのVimで使われるフォントを変更するには? |faq-31.3| GUIのVimが起動したときのウィンドウの位置を指定するには? |faq-31.4| GVimに水平スクロールバーをつけるには? |faq-31.5| スクロールバーをデフォルトで左側に表示するようにするには? |faq-31.6| メニューバーを消すには? -|faq-31.7| GVimを使っています。ALTキーと文字キーを押すとその文字で始まるメ - ニューが選択されます。ALT-の組合せを使いたいので、この挙動は - やめてほしいです。どうすればいいですか? +|faq-31.7| GVimを使っています。キーと文字キーを押すとその文字で始まるメ + ニューが選択されます。-の組合せを使いたいので、この挙動は + やめてほしいです。どうすればいいですか? |faq-31.8| スクロールバーをドラッグしたとき、カーソル位置を動かさずにテキスト - をスクロールさせることは可能ですか? -|faq-31.9| ":browse"を使ったときに特定のディレクトリから始めるようにするには? + をスクロールさせることは可能ですか? +|faq-31.9| `:browse`を使ったときに特定のディレクトリから始めるようにするには? |faq-31.10| ファイルがVimの外部で変更されたときなど、問い合わせがあるとき、GUI - のダイアログボックスが表示されます。コンソールのダイアログボック - スが出るようにするには? + のダイアログボックスが表示されます。コンソールのダイアログボック + スが出るようにするには? |faq-31.11| GVimをアプリケーションxxx用のエディタとして使っています。アプリ - ケーションxxxがGVimを起動すると、コントロールがすぐにアプリケー - ションxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーショ - ンxxxにコントロールが戻るようにGVimを起動するには? + ケーションxxxがGVimを起動すると、コントロールがすぐにアプリケー + ションxxxに戻ってしまいます。Vimを終了したとき初めてアプリケーショ + ンxxxにコントロールが戻るようにGVimを起動するには? |faq-31.12| なぜ、システムにインストールされているフォント全てが「フォントを - 選ぶ」ダイアログに現れないのですか? + 選ぶ」ダイアログに現れないのですか? |faq-31.13| コマンドラインモードでマウスを使うには? |faq-31.14| テキストをスクロールしようとマウスの中央ボタンを押すと、最後にコ - ピーしたテキストがペーストされてしまいます。この挙動を無効にするに - は? + ピーしたテキストがペーストされてしまいます。この挙動を無効にするに + は? |faq-31.15| GVimウィンドウの位置とサイズを変更するには? +|faq-31.16| When splitting the Vim window vertically, Vim changes + the position. *faq-vim-on-unix* -SECTION 32 - UNIX上のVim +SECTION 32 - UNIX上のVim ~ |faq-32.1| xtermでVimを実行しています。CTRL-Sを押すとVimがフリーズします。 - どうすればいいですか? + どうすればいいですか? |faq-32.2| 画面の更新について奇妙な問題があります。これを解決するには? |faq-32.3| Vimのターミナル/コンソール版を使っています。挿入モードでバックス - ペースキーを押してもカーソルの前の文字が消えません。どう設定すれば - 良いですか? + ペースキーを押してもカーソルの前の文字が消えません。どう設定すれば + 良いですか? |faq-32.4| xtermでVimを使っています。Vimを終了すると画面が元の状態に復元され - ます。これを無効化するには? + ます。これを無効化するには? |faq-32.5| Vimの起動にかなり時間がかかります。起動時間を最小化するには? |faq-32.6| Unixのgvimでカーソルの点滅を止めるには? |faq-32.7| GTK Vimのメニューのフォントを変えるには? -|faq-32.8| Vimがでサスペンドするのを防ぐには? +|faq-32.8| VimがCTRL-Zでサスペンドするのを防ぐには? |faq-32.9| Vimを実行しているxtermをkillすると、Vimのプロセスが生き残り、多大 - なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? + なCPU時間(99%)を食ってしまいます。なぜこうなるのですか? |faq-32.10| Unixターミナルで構文強調を使うには? *faq-vim-on-ms-windows* -SECTION 33 - MS-Windows上のVim +SECTION 33 - MS-Windows上のVim ~ |faq-33.1| MS-Windows上でCTRL-Vを押しても矩形ビジュアルモードが始まりません。 - どうなっているのですか? + どうなっているのですか? |faq-33.2| CTRL-Yキーを押すとCTRL-Rのような動作をします。CTRL-YをCTRL-Yとして - 扱うように設定するには? + 扱うように設定するには? |faq-33.3| 常にGVimのウィンドウを最大化して起動するには? |faq-33.4| なんらかの編集操作をするとVimがフリーズします。カーソルは空の四角 - 形になります。全然文字が入力できません。どうなっているのですか? + 形になります。全然文字が入力できません。どうなっているのですか? |faq-33.5| Windows XPを使っています。最大化したGVimの表示速度がとても遅いで - す。表示の更新を早くするには? + す。表示の更新を早くするには? |faq-33.6| VimをCygwin上で使うにあたって推奨される設定は? |faq-33.7| 差分モードでGNU diffを使おうとしています。コマンドラインからdiffを - 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす - れば? + 使うとうまく動くのですが、Vim内で使おうとすると動きません。どうす + れば? |faq-33.8| Outlookで外部エディタにVimを使うことはできますか? |faq-33.9| HTMLファイルを編集するのにVimを使っています。現在開いているHTML - ファイルをインターネットエクスプローラーでプレビューするには? + ファイルをインターネットエクスプローラーでプレビューするには? |faq-33.10| VimをMicrosoft Visual Studioといっしょに使いたいです。どうすれば? |faq-33.11| どこに_vimrcと_gvimrcを置けばいいですか? |faq-33.12| ファイルを保存する度に、そのファイルがVimの外部で変更されていると - 警告が出ます。なぜですか? + 警告が出ます。なぜですか? *faq-printing* -SECTION 34 - 印刷 +SECTION 34 - 印刷 ~ |faq-34.1| 全ての行に行番号をつけて印刷するには? |faq-34.2| 構文強調の色をつけてファイルを印刷するには? *faq-building-vim-from-source* -SECTION 35 - Vimをソースからビルドする +SECTION 35 - Vimをソースからビルドする ~ |faq-35.1| Unixシステム上でVimをソースからビルドするには? |faq-35.2| Unixでホームディレクトリなど、デフォルトのディレクトリ以外にVimを - インストールするには? + インストールするには? |faq-35.3| MS-Windowsシステム上でVimをソースからビルドするには? |faq-35.4| 私がインストールしたVimにはヘルプ、構文ファイル、インデントファイ - ルが欠けています。それらのファイルをインストールするには? + ルが欠けています。それらのファイルをインストールするには? |faq-35.5| Vimをソースからビルドして"make install"でインストールしました。Vim - のソースディレクトリを残しておく必要はありますか? + のソースディレクトリを残しておく必要はありますか? |faq-35.6| ある機能がコンパイル時に有効化されているかどうかを知るには? |faq-35.7| GUI機能なしでVimをビルドすることはできますか? |faq-35.8| Unixシステム上でVimをビルドするとき、"undefined reference to - term_set_winsize"というエラーが出ます。これを解決するには? + term_set_winsize"というエラーが出ます。これを解決するには? |faq-35.9| GTK 2.03を使おうとしているのですが、Vimのconfigureがgtk-configがな - いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ - うになったので、これは正しいのです。gtk用のインクルードファイルと - ライブラリのリストを出力するpkg-configならありますが、なぜか - configureスクリプトはこれを使ってくれません。 + いとのメッセージを出します。しかしGTK2は一般的なpkg-configを使うよ + うになったので、これは正しいのです。gtk用のインクルードファイルと + ライブラリのリストを出力するpkg-configならありますが、なぜか + configureスクリプトはこれを使ってくれません。 +|faq-35.10| I did successfully download the sources and compiled Vim on + Unix. But feature ... still does not work. What is wrong and + how can I fix it? *faq-various* -SECTION 36 - 様々な事柄 +SECTION 36 - 様々な事柄 ~ |faq-36.1| Vimでバイナリフィルを編集するには? |faq-36.2| ビジュアルエラーフラッシュとエラービープを無効にするには? |faq-36.3| バッファに表示されている文字のASCIIコードを表示するには? @@ -588,10 +612,14 @@ SECTION 36 - 様々な事柄 |faq-36.5| Vimの起動時の画面を表示させなくするには? |faq-36.6| "hit enter to continue"プロンプトを避けるには? |faq-36.7| コマンドラインからVimを起動して一連のファイルに対して一連のコマン - ドを実行するには? + ドを実行するには? |faq-36.8| 挿入モードから抜けることなくノーマルモードコマンドを実行するには? +|faq-36.9| How do I start Vim in insert mode? +|faq-36.10| How do I use Copy and Paste with Vim? +|faq-36.11| Why shouldn't I modify the files in the system runtime + directory? *faq-unicode* -SECTION 37 - Unicode +SECTION 37 - Unicode ~ |faq-37.1| VimでUnicodeのファイルを作ることはできますか? |faq-37.2| Unicodeのファイルを編集するにあたって特に重要な設定は? |faq-37.3| オプション'encoding'とは何ですか? @@ -607,7 +635,7 @@ SECTION 37 - Unicode ============================================================================= *faq-1* -SECTION 1 - 一般的な情報 +SECTION 1 - 一般的な情報 ~ *faq-1.1* 1.1. Vimとは何ですか? @@ -623,30 +651,28 @@ Vim はエディタであって、ワードプロセッサーではありませ 主にテキストのレイアウトを行うのに使われます。つまり、位置決めや、表示時の見え 方を変えたり、ということです。たいてい最終的なドキュメントは他の人に満足いくよ うに見せるため、印刷したり活字に組んだりなどするよう意図されます。ワードプロ -セッサーの例は、Microsoft Word、WordPerfect、FrameMaker、AmiPro です。 +セッサーの例は、Microsoft Word、FrameMaker、OpenOffice Writer です。 エディタは単純にテキストを入力するためのものです。ドキュメントの植字やレイアウ トは二次的なものです。エディタにおいて、主な関心事はテキスト入力であり、テキス トを良く見せることではありません。Vim や Vi 以外のエディタの例は、Emacs、 -Crisp、Brief、xedit です。そして Notepad も。 +TextMate、Ultraedit、gedit です。そして Notepad も。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |intro| - :help intro -< *faq-1.2* 1.2. 誰が Vim を書いたんですか? -Vim のほとんどは Bram Moolenaar によって書かれましたが、他に貢献した人々の名前 -はここでは多すぎて触れられません。完全なリストは ":h credits" を見てください。 +Vim のほとんどは Stevie に基づいて Bram Moolenaar によって書かれましたが、他に +貢献した人々の名前はここでは多すぎて触れられません。 -Vim は、Tim Thompson、Tony Andrews、G.R. (Fred) Walter らによって開発された -Stevie に基づいています。 +さらなる情報については以下を参照してください。 -さらなる情報については以下を参照してください。 > + |author| + |credits| - :help author -< *faq-1.3* 1.3. Vim は Vi と互換性がありますか? @@ -655,20 +681,26 @@ Stevie に基づいています。 $ vim -C < -また、 > +また、以下のようにもできます: > $ vim -u NONE < -ともできます。'compatible'オプションをセットすればViとの互換を有効化できます: > +'compatible'オプションをセットすればViとの互換を有効化できます: > :set compatible < -さらなる情報については以下を参照してください。 > +Vim を非互換 ('nocompatible') モードで起動するには、-N をコマンドライン引数に +指定します。 > - :help -C - :help 'compatible' - :help compatible-default + $ vim -N < +さらなる情報については以下を参照してください。 + + |-C| + |-N| + |'compatible'| + |compatible-default| + *faq-1.4* 1.4. Vim が Vi よりも向上している点は何ですか? @@ -677,124 +709,229 @@ Stevie に基づいています。 実装されており、一般的なパワーユーザーやプログラマ向けの機能にも重点が置かれて います。 -Vi を現代化する機能: +Vi を現代化する機能: ~ + + 多段階アンドゥ ~ - 多段階アンドゥ ファイルバッファにおける変更を元に戻す回数を設定することができます。アン - ドゥされた変更をリドゥすることもできます。 - 複数ウィンドウとバッファ + ドゥされた変更をリドゥすることもできます。また、Vim7.3以降ではアンドゥ情 + 報が永続化できるようになったため、以前の編集セッションで行った変更をアン + ドゥすることができます。 + + タブ、複数ウィンドウ、バッファ ~ + それぞれのファイルはそれ自身のウィンドウに表示することができます。一つの ウィンドウから別のウィンドウへ簡単に移動することができます。それぞれの開 かれたファイルは Vim のセッション中関連付けられたバッファを保有し、バッ - ファ間を簡単に移動することができます。 - 柔軟な挿入モード + ファ間を簡単に移動することができます。他のモダンなGUIと同様に、Vimは複数 + のファイルをタブで開くことができます。タブ、バッファ、ウィンドウ、引数リ + ストに対してバッチ処理を行うことができます。 + + 柔軟な挿入モード ~ + Vim では挿入モードにある間矢印キーでファイル内を移動することができます。 を押し、移動して、`i' や `a' を押す、といったことはしなくて済みま す。 - マクロ + + マクロ ~ + Vim には、連続してタイプされた文字を記録し、後で何度でも繰り返すことので きる機能があります。 - ビジュアルモード + + ビジュアルモード ~ + テキストの一部分をハイライトさせ、その部分にだけ操作を実行することができ ます。 - ブロック・オペレータ + + ブロック・オペレータ ~ + テキストを長方形のブロック状に選択、ハイライトさせ、その部分に対し特定の 操作を行うことができます。 - オンラインヘルプシステム + + オンラインヘルプシステム ~ + どんな Vim 使用の局面であれ、容易に答えを探すことができます。ヘルプはそれ 自身のウィンドウに表示されます。 - コマンドライン編集と履歴 + + コマンドライン編集と履歴 ~ + 履歴を利用すると、矢印キーで既にタイプされたコマンドを繰り返したり探した りできます。コマンドの先頭を、履歴バッファにある別の似たコマンドの先頭に マッチさせることができます。コマンドを編集してタイプミスを訂正したり、い くつか値を変更することもできます。 - コマンドライン補完 + + コマンドライン補完 ~ + キーを使うと、コマンドやオプション、ファイル名などを必要に応じて補 うことができます。 - 水平スクロール + + 水平スクロール ~ + 長い行は水平にスクロールできます(GUI の有る、無しにかかわらず)。 -先進的なユーザー機能: + Unicodeと国際化の改善 ~ + +     VimはUnicodeでファイルを編集でき、utf-8エンコーディングを内部的に使用しま + す。さらに、Vimは右から左へのテキスト表示に対応します。 + +先進的なユーザー機能: ~ + + テキスト整形 ~ - テキスト整形 2 キーストロークで、外部プログラムを使わずに長いテキストを整形できます。 - 挿入モードでの単語補完 - Vim は、現在の単語とファイル内の似た単語とをマッチすることにより、タイピ - ング中に単語補完を行うことができます。 - タグ・ジャンプ + + 挿入モードでの補完機能 ~ + + Vimはテキスト補完のためにいくつかの異なる機能を提供します。例えば、現在の + 単語とファイル内の似た単語とをマッチすることにより、タイピング中に単語補 + 完を行うことができます。 + + タグ・ジャンプ ~ + ウェブ・ブラウザーと同じように、以前編集していた箇所に戻ったり、また元に 復帰することができます。なので、あなたの頭脳は自由にナビゲート、ではなく 編集をすることができます。 - 自動コマンド + + 自動コマンド ~ + ファイルを読み書きする時や、他のバッファに移動する時などに自動的に実行さ れるコマンドです。 - Viminfo + + Viminfo ~ + 起動時に読み込まれるコマンドライン履歴やファイル内のマーク、レジスタを記 憶しておくことができます。したがって、以前の検索パターンや、マクロなどを、 新しい Vim セッションで呼び出すことができます。 - マウスサポート + + マウスサポート ~ + マウスは xterm や MS-DOS でサポートされています。カーソル位置を設定した り、ビジュアル領域を選択したり、レジスタを貼り付けたり、等のことができま す。 - グラフィカルユーザーインターフェイス(GUI) - 他の昨今のエディタと同様です。その上、独自のメニューを追加することも非常 - に簡単です。もちろん、コンソール版の Vim も今なおサポートされており、幅広 - く利用されています。 - スクリプト言語 + + グラフィカルユーザーインターフェイス(GUI) ~ + + いくつかの異なるグラフィカルユーザーインターフェイスが利用できます。その + 上、独自のメニューを追加することも非常に簡単です。もちろん、コンソール版 + のVimも今なおサポートされており、幅広く利用されています。 + + スクリプト言語 ~ + Vim は強力なスクリプト言語を備えており、新しいコマンドを作ることができま - す。また、同じことをするのに Perl、Python、TCL、それに Ruby を使うことも - できます。 - プラグイン + す。また、同じことをするのに Perl、Python、TCL、Lua、それに Ruby を使うこ + ともできます。 + + プラグイン ~ + Vim コマンドによって実装された拡張機能で、起動時に自動的にロードされます。 - 例: ファイルエクスプローラー、ネットワーク編集。更に多くのものが - VimOnline にて常に開発、共有されています。 - 多数のプログラミング言語に対応した構文強調 - 数百ものプログラミング言語に対応した構文強調があります。他の言語への対応 - を追加することができます。 - 拡張正規表現 + 例: ファイルエクスプローラー、ネットワーク編集、拡張された自動補完、構文 + チェック。 + 更に多くのものが VimOnline にて常に開発、共有されています。 + + 多数のプログラミング言語に対応した構文強調 ~ + + 数百ものプログラミング言語に対応した構文強調(要素を隠すConceal機能を含む) + があります。他の言語への対応を追加することができます。 + + 拡張正規表現 ~ + 機能性がPerlの正規表現に似ている拡張正規表現をサポートしています。 -プログラミング効率に関する機能: + 統合されたスペルチェック ~ + + スペルチェックはVimに統合されました。 + + Diff モード ~ + + Vimは異なる2つ、3つまたは4つのファイルの間で差分のハイライト表示ができま + す。共通する行は折りたたまれて非表示になります。 + + Blowfishアルゴリズムによる暗号化 ~ + + Vimは、対称ブロック暗号blowfishを使用してあなたのファイルとスワップファイ + ルを暗号化することができます。 + + 拡張性の高いカスタマイズ ~ + + オプションを設定することで、Vimを最適にカスタマイズすることができます。 + 独自のコマンド、マクロ、さらにはプラグインを定義して機能を拡張することが + できます + + パッケージ機能 ~ + + 増えていく多くのプラグインを管理しやすくするため、パッケージ機能が追加さ + れました。これは、1つまたは複数のプラグインを取得してディレクトリに格納し、 + 更新を管理する便利な方法です。Vimはそれらを自動的に、または必要な時にのみ + ロードします。 + +プログラミング効率に関する機能: ~ + + 編集―コンパイル―編集のスピードアップ ~ - 編集―コンパイル―編集のスピードアップ Vim 内部からコンパイルを行い、自動的にソースコードのエラーの箇所にジャン プすることができます。 - 多数のプログラミング言語の字下げ + + 多数のプログラミング言語の字下げ ~ + C、C++、Java、Perl、XML その他多くの言語で、タイプ中に自動的に字下げが行 われます。他の言語へのサポートも追加可能です。 - インクルードファイル内の単語を検索 + + インクルードファイル内の単語を検索 ~ + カーソルの下の単語とのマッチを、現在のファイルとインクルードされるファイ ル内で検索することができます。 - 先進的なテキストオブジェクト + + 先進的なテキストオブジェクト ~ + ( と ) や、{ と } や、< と > 、また [ と ] の間の全てのテキストに対して、 また単語、文、段落に対して、一瞬で選択したり、削除やコピーをしたり、字下 げ、整形、大文字小文字の変換、等々を行うことができます。非常に強力です。 - フォールディング + + フォールディング ~ + テキストのある部分を「フォールド」(折り畳み)してしまうことができます。 最も良い例は関数の中身の部分です。コードの概観を見渡して、それから詳細を 見たい関数のフォールドを開くことができます。 - ctags と cscope との統合 + + ctags と cscope との統合 ~ + これらの強力なプログラムを使うと、関数の呼び出し部分からその定義部分へジ ャンプしたり、他の技術を使ってソースコードを行き来することができます。 -さらなる情報については以下を参照してください。 > - :help vi-differences -< + 統合された複数のプログラミング言語 ~ + +     内部スクリプト言語が十分強力でないと思った場合は、Lua、Ruby、Tcl、Perl、 + Python 2、3を使ってVimを拡張することができます。 + + 非同期I/Oのサポート ~ + + Vimはジョブとチャネルを使用して他のプログラムと非同期で通信します。これに + より、例えばコンパイラをバックグラウンドで実行し、終了したらすぐにクイッ + クフィックスリストを開いて警告やエラーを修正できます。 + + タイマー ~ + + タイマーは非同期で何かを実行する関数を1回または繰り返し呼び出すことができ + ます。 + +さらなる情報については以下を参照してください。 + + |vi-differences| + *faq-1.5* 1.5. Vim は無料ですか? Vim はチャリティウェアです。Vim の使用や複製に関しては何ら制限はありませんが、 著者は慈善事業に寄付をするよう奨励しています。その方法を説明するドキュメントが ディストリビューションの中に含まれています。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help copyright -< + |copyright| ============================================================================= *faq-2* -SECTION 2 - 情報源 +SECTION 2 - 情報源 ~ *faq-2.1* 2.1. どこに行けば Vim についてもっと学べるでしょうか? @@ -805,47 +942,64 @@ Vimの質問は vim@vim.org メーリングリストに投稿できます。Vim "VimOnline" は vim のデファクト・ホームページの役割を果たしているウェブ・ペー ジですが、その主な目的は tip やスクリプトをいたる所から集積することにあります。 -ぜひ参加してください。URL は vim.sourceforge.net または vim.sf.net です。 +ぜひ参加してください。URL は https://www.vim.org です。 -最後に、Vi FAQ を読んでください: > +最後に、Vi FAQ を読んでください: - http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< -この FAQ の第 5 節に、こちらの FAQ についてのより詳しい情報があります。 > + http://www.faqs.org/faqs/editor-faq/vi/part1/index.html + +最後に、機能に関する議論や質問のできるいくつかのコミュニティを紹介します。 + + https://vi.stackexchange.com + https://vim.reddit.com + +{訳注: 日本語の情報は以下のサイトで見ることができる。 + + https://vim-jp.org/ + https://github.com/vim-jp/issues + https://qiita.com/tags/vim +} + +さらなる情報については以下を参照してください。 + + |mail-list| + |internet| - :help mail-list - :help internet -< *faq-2.2* 2.2. メーリングリストはありますか? -いくつか存在します: > +いくつか存在します: - 名前 説明 -< - vim-announce 新しいリリースの発表 - vim 一般的な議論 - vim-dev パッチ、バグ報告、開発議論 - vim-mac マッキントッシュに関する議論 - vim-fr フランス語による一般的な議論 - vim-multibyte マルチバイト関連の開発の問題 - vim-vms VMS上での開発について + 名前 説明 ~ + ---------------- --------------------------------------------- ~ + vim-announce 新しいリリースの発表 + vim 一般的な議論 + vim-dev パッチ、バグ報告、開発議論 + vim-mac マッキントッシュに関する議論 + vim-fr フランス語による一般的な議論 これらのうち、vim と vim-dev だけが一般的な興味を引くものです。vim-announce は ほとんどの人にとってはリードオンリーですし、そのメッセージは他のリストにも送信 されます。他の 4 つは非常に通信量が少ないです。 -購読するには: <名前>-subscribe@vim.org にメールを送ってください。 -購読を中止するには: <名前>-unsubscribe@vim.org にメールを送ってください。 -ヘルプを得るには: <名前>-help@vim.org にメールを送ってください。 + 機能 メールの送信先 ~ + ------------------ -------------------------- ~ + 購読するには: <名前>-subscribe@vim.org + 購読を中止するには: <名前>-unsubscribe@vim.org + ヘルプを得るには: <名前>-help@vim.org + +利用可能なメーリングリストが以下にも記載されています。 + + https://www.vim.org/maillist.php + +{訳注: 日本語のメーリングリストが以下にある。 + https://groups.google.com/group/vim_jp } *faq-2.3* 2.3. メーリングリストのアーカイブはありますか? -あります。http://www.yahoogroups.com/list/<名前> を訪ねてみてください。<名前> -の所には次の - vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms -のどれかが入ります。 +あります。https://groups.yahoo.com/ を訪ねてください。名前は次のいずれかです。 +vimannounce, vim, vimdev, vim-fr, vim-mac, vim-vms. もしくは、www.gmane.org に行って GMANE について調べてみてください。これはメー リングリストに、あたかもニュースグループのような感覚でアクセスすることができる @@ -854,42 +1008,93 @@ Vimの質問は vim@vim.org メーリングリストに投稿できます。Vim *faq-2.4* 2.4. HTML/PDF/PS形式のVimユーザーマニュアルはどこで手に入りますか? -HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロードできます。 > +HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロードできます。 + + https://vimdoc.sourceforge.net/ + +注記: このページのユーザーマニュアルは現在ではかなり古い。Vim に付属のドキュメ +ントを使用するかオンライン版 (https://vimhelp.appspot.com) を参照するのが最善 +です。 + +{訳注: 日本語版のオンラインヘルプは以下にある。 + https://vim-jp.org/vimdoc-ja/ } + +このFAQを含む英語の完全なヘルプのPDF版(レター、A4、iPad)が以下にあります。 + + https://nathangrigg.com/vimhelp/ + +{訳注: このPDF版も2018年9月現在ではかなり古い。} + +このドキュメントは相互参照されているため、ハイパーリンクを使用できます。 - http://vimdoc.sourceforge.net/ -< *faq-2.5* 2.5. ある問題が発生しました。それが私の設定によるものか、Vimそのものの - 問題かはどうすればわかりますか? + 問題かはどうすればわかりますか? / 私はVimのバグを発見したのですか? + +まず、エラーが実際にランタイムファイルやVimで配布されているプラグインで発生し +たのか、.vimrcや.gvimrcの設定オプションの単純な副作用であるのかを調べる必要が +あります。そのため、vimを次のように起動します。 > -まず、その問題があなたの.vimrcや.gvimrc、システムのvimrc、あなたのプラグイン -ファイル、その他あなたの設定ファイルによるものかを調べなければなりません。その -ために > + vim -u NONE -U NONE -N -i NONE +< +これはVimを'nocompatible'モード(-N)で起動し、あなたのviminfoファイルを読み込ま +ず(-i NONE)、あらゆる設定ファイルも読み込まず(-u NONEで.vimrcを使用しない、-U +NONEで.gvimrcを使用しない)、同様にプラグインも読み込まれません。 + +この状態で問題を再現してみてください。エラーが続く場合は、Vimのバグを見つけた +可能性があります。(|faq-2.6|も参照してください) + +この方法でVimを起動したときにエラーが発生しない場合、何かのプラグインに関連す +る問題か、ローカルの設定ファイルのいずれかの設定が関係しています。エラーを引き +起こす原因を調べる必要があるため、次のようにVimを起動してみてください。 > - $ vim -N -u NONE -U NONE + vim -u NONE -U NONE -N < -としてください。これはVimを'nocompatible'モードで起動し、あなたの個人的な -.vimrcや.gvimrcファイルを読み込みません。あなたの個人的なプラグインも読み込み -ません。これでVimを起動し、問題の再現を試みてください。もしこれで問題が再現で -きなければ、その問題はあなたの設定ファイルやプラグイン中の設定に関係していま -す。設定ファイル中の問題の場所をつきとめるには、試行錯誤と設定ファイル中の1行 -1行をコメントアウトしてみなければなりません。Vimにコマンドライン引数-Vをつけ -て起動するとデバッグ情報が得られ、問題を分析することができます: > +もしエラーが発生した場合、問題は.viminfoファイルにあります。単純に.viminfoファ +イルを削除してください。エラーが発生しない場合は次を試してください。 > - $ vim -V2 + vim -u ~/.vimrc --noplugin -N -i NONE < --V引数に渡す値を増やせば、さらに詳しいデバッグ情報が得られます。 +これは単に設定ファイルとして.vimrcを使用しますが、プラグインはロードしません。 +今回エラーが発生した場合は、.vimrcファイル内の設定オプションによってエラーが発 +生する可能性があります。あなたの.vimrcファイルの長さによっては、ファイル内の原 +因をトレースするのがかなり難しいかもしれません。 + +最善の方法は.vimrcの途中に|:finish|コマンドを追加することです。先ほどと同じコマン +ドラインでVimを再起動してください。依然としてエラーが発生する場合は.vimrc内の +前半の設定のためにバグが発生しています。エラーが起こらない場合は、問題のある設 +定が.vimrcの後半にあります。そして、|:finish|コマンドをエラーが発生していると思 +われる領域の半分の位置に移動し、問題のあるオプションが見つかるまでこれを繰り返 +します。あなたの.vimrcが350行ある場合、エラー行を見つけるには最大9回の試行が必 +要です。(行同士が依存するため、実際には多くの場合でこれより少ない可能性があり +ます。) + +.vimrcファイルを読み込むだけでは問題が発生しない場合、エラーはプラグインまたは +別のランタイムファイル(インデント、オートロード、構文スクリプト)で発生していま +す。|:scriptnames|コマンドの出力で、どのファイルが読み込まれているかを確認し、そ +れぞれのファイルを1つずつ無効にしていき、どのファイルがバグを発生させているか +を確認します。多くの場合、ファイルがvimに読み込まれる時にそれを無効にする単純 +な設定変数があるので、それぞれのファイルの中身を確認する必要があります。 -さらなる情報については以下を参照してください。 > +コマンドライン引数-Vをつけて起動するとデバッグ情報が得られ、問題を分析すること +ができます: > - :help -u - :help -U - :help -N - :help -V - :help 'verbose' - :help :verbose - :help set-verbose + $ vim -V2logfile < +-V引数に渡す値を増やせば、さらに詳しいデバッグ情報が得られます。また、ログファ +イル名を指定することで、デバッグメッセージが画面に表示されなくなるため、問題を +再現する邪魔になりません。 + +さらなる情報については以下を参照してください。 + + |-u| + |-U| + |-N| + |-V| + |'verbose'| + |:verbose| + |:set-verbose| + *faq-2.6* 2.6. どこでバグ報告をすればいいですか? @@ -898,208 +1103,293 @@ HTML/PDF/PS形式のVimユーザーマニュアルは以下からダウンロー :source $VIMRUNTIME/bugreport.vim < そして上のコマンドで得られたテキストをbugs@vim.orgメールアドレスに送ってくださ -い。 +い。 https://github.com/vim/vim/issues にあるパブリックなバグトラッカーが利用 +可能です。各メッセージのコピーはVim開発メーリングリストに転送されます。 -Vim 開発のメーリングリスト(上を見てください)は通常のバグについて議論するのにふ -さわしい場所です。あなたの見つけたバグがシンタックスハイライティングやその他の -「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関するもので -あれば、その機能のメンテナーに報告してみてください。 +Vim開発メーリングリスト(Question 2.2 を参照 |faq-2.2|)は通常のバグについて議論 +するのにふさわしい場所です。あなたの見つけたバグがシンタックスハイライティング +やその他の「付加的な機能」(つまり、直接 vim にプログラムされていないもの)に関 +するものであれば、その機能のメンテナーに報告してみてください。メンテナーの連絡 +先は、対応するランタイムファイルの先頭に記載されているでしょう。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |bug-reports| - :help bug-reports -< *faq-2.7* 2.7. FAQ はどこで見つけられますか? -VimOnline (vim.sf.net) で手に入ります。将来的には他の場所も加えられるでしょう。 +FAQ は https://vimhelp.appspot.com/vim_faq.txt.html で見ることができます。 +これは以下のGitHubリポジトリで管理されたソースから自動生成されています。 +https://www.github.com/chrisbra/vim_faq (パッチ歓迎) + +{訳注: 日本語版のFAQは以下にある。 + https://vim-jp.org/vimdoc-ja/vim_faq.html + 管理は以下で行われている。 + https://github.com/vim-jp/vimdoc-ja-working/ } + +リポジトリには様々なフォーマットの FAQ が含まれています。例えばmanpage、PDFファ +イル、HTMLファイル、プレーンテキスト、そしてVimヘルプ形式です。 + +若干古いバージョン(もう更新されていないようです)はまだ VimOnline +(https://www.vim.org/) で見ることができます。 *faq-2.8* 2.8. この FAQ に答えが見つからなかった時、どうすればいいですか? この FAQ は主に Vim に特有の質問を扱います。ほとんどの Vi クローン向きの情報に ついては Vi FAQ を読めば見つかるでしょう。これは comp.editors で定期的に投稿さ -れています。下記の場所にもそのコピーがあります。 > +れています。下記の場所にもそのコピーがあります。 http://www.faqs.org/faqs/editor-faq/vi/part1/index.html -< + また、Vim は過去数年間で非常に多くの機能を集積してきたため、よくある質問をここ で申し分なく記述することは不可能に近い作業です。これを可能にするために、もし良 い質問をお持ちならメンテナーにメールで知らせてください。良い質問とは、自分で答 -えを出そうとして(Vim は素晴らしいドキュメントを備えていることを思い出してくださ -い)非常に苦労した質問のことです。 +えを出そうとして(Vim は素晴らしいドキュメントを備えていることを思い出してくだ +さい)非常に苦労した質問のことです。 *faq-2.9* 2.9. Vimに機能を追加するパッチを持っています。これをどこへ送ればいいですか? Vim開発者メーリングリストvim-dev@vim.orgにパッチを送ってください。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |vim-dev| - :help vim-dev -< *faq-2.10* 2.10. Vimのtipを持っていたり新しいsyntax/indent/filetype/compilerプラグインを 開発したり、新しいスクリプトやカラースキームを開発しました。これをアップ ロードできる公開のウェブサイトはありますか? -あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキーム、 -tipsなどをアップロードすることができます。そのサイトは -http://vim.sourceforge.netにあります。 +あります。Vim Onlineウェブサイトにプラグイン・スクリプト、カラースキームなどを +アップロードすることができます。サイトは https://www.vim.org にあります。 +また現在は多くの人がプラグイン・ランタイムファイルをGitHubで公開しています。 + +Tipsは以下のWikiで共有することもできます。 + + http://vim.wikia.com ============================================================================= *faq-3* -SECTION 3 - 入手 +SECTION 3 - 入手 ~ *faq-3.1* 3.1. Vim の最新のバージョンは何ですか? -Vim の最新バージョンは2004年6月8日にリリースされた 6.3 です。 +Vim の最新バージョンは2019年12月12日にリリースされた 8.2 です。 Vimのリリース履歴は以下の通りです: -Version 6.3 8th June 2004 -Version 6.2 1st June 2003 -Version 6.1 24th March 2002 -Version 6.0 27th September, 2001 -Version 5.8 31st May, 2001 -Version 5.7 24th June, 2000 -Version 5.6 16th January, 2000 -Version 5.5 21st September, 1999 -Version 5.4 26th July, 1999 -Version 5.3 31st August, 1998 -Version 5.2 24th August, 1998 -Version 5.1 7th April, 1998 -Version 5.0 19th February, 1998 -Version 4.6 13th March,1997 -Version 4.5 17th October, 1996 -Version 4.2 5th July,1996 -Version 4.0 21st May, 1996 -Version 3.0 16th August, 1994 -Version 2.0 21st December, 1993 -Version 1.27 23rd April, 1993 -Version 1.17 21st April, 1992 + バージョン リリース日 ~ + -------------- -------------- ~ + Version 8.2 2019年12月12日 + Version 8.1 2018年05月17日 + Version 8.0 2016年09月12日 + Version 7.4 2013年08月10日 + Version 7.3 2010年08月15日 + Version 7.2 2008年08月09日 + Version 7.1 2007年05月12日 + Version 7.0 2006年05月08日 + Version 6.4 2005年10月15日 + Version 6.3 2004年06月08日 + Version 6.2 2003年06月01日 + Version 6.1 2002年03月24日 + Version 6.0 2001年09月27日 + Version 5.8 2001年05月31日 + Version 5.7 2000年06月24日 + Version 5.6 2000年01月16日 + Version 5.5 1999年09月21日 + Version 5.4 1999年07月26日 + Version 5.3 1998年08月31日 + Version 5.2 1998年08月24日 + Version 5.1 1998年04月07日 + Version 5.0 1998年02月19日 + Version 4.6 1997年03月13日 + Version 4.5 1996年10月17日 + Version 4.2 1996年07月05日 + Version 4.0 1996年05月29日 + Version 3.0 1994年08月12日 + Version 2.0 1993年12月21日 + Version 1.27 1993年04月23日 + Version 1.17 1992年04月21日 + Version 1.14 1991年11月02日 + +古いリリース履歴に興味があるならvim-history gitリポジトリを参照してください: +https://github.com/vim/vim-history +特にリリース履歴を参照する場合: +https://github.com/vim/vim-history#release-history + +さらなる情報については以下を参照してください。 + + |new-8| + |new-7| + |new-6| + |new-5| + |changed-8.2| + |changed-8.1| + |changed-7.4| + |changed-7.3| + |changed-7.2| + |changed-7.1| *faq-3.2* 3.2. どこで Vim の最新版を見つけられますか? -VimOnlineからVimの最新バージョンのソースがダウンロードできます。URLは -http://vim.sourceforge.net/download.php -です。 +GitHubの以下のURLからVimの最新バージョンのソースがダウンロードできます。 + + https://github.com/vim/vim + +mercurialのミラーもあります: + + https://bitbucket.org/vim-mirror/vim + http://hg.256bit.org/vim/ + https://hg.osdn.net/view/vim/vim + +Vimの最新のバイナリを配布するためにリポジトリを更新しているユーザーがいます。 +それらのリポジトリは以下のURLで探すことができます。 + + http://vim.wikia.com/wiki/Where_to_download_Vim + +{訳注: 日本語版のWindows、macOSのバイナリを以下からダウンロードできる。 + https://vim-jp.org/ } *faq-3.3* 3.3. どのプラットフォーム上で実行できるんですか? 全ての Unix プラットフォーム。 -全ての Windows プラットフォーム。 -Amiga、Atari、BeOS、DOS、Macintosh、MachTen、OS/2、RiscOS、VMS です。 +全ての Windows プラットフォーム。(XPかそれ以降) +Amiga、Atari、BeOS、Macintosh、MachTen、OS/2、RiscOS、VMS、IBM z/OS です。 + +MS-DOSのサポートはVimの最新リリースでは削除されました。 +16-bit DOS: 最新のサポートバージョン 7.1 +32-bit DOS: 最新のサポートバージョン 7.3 *faq-3.4* 3.4. どこでVimのランタイムファイルの最新バージョンをダウンロードできますか? Vimランタイムファイル(構文ファイル、ファイル形式別プラグイン、コンパイラプラ グイン、カラースキーム、ドキュメント、インデントファイル、キーマップ)はVim -ftpサイトのftp://ftp.vim.org/pub/vim/runtimeディレクトリでダウンロードできま -す。 +のGitHubリポジトリ + + https://github.com/vim/vim/tree/master/runtime + +ランタイムファイルをダウンロードする別の手段として以下があります: > + + wget https://github.com/vim/vim/archive/master.tar.gz -O- | + tar zfx - vim-master/runtime/ --strip-components=1 +< +以下も参照: + + https://www.vim.org/runtime.php ============================================================================= *faq-4* -SECTION 4 - ヘルプ +SECTION 4 - ヘルプ ~ *faq-4.1* 4.1. どうやってヘルプファイルを利用するんですか? -Vim の全ての機能にヘルプがあります。それを利用するには、":h" を使ってください。 +Vim の全ての機能にヘルプがあります。それを利用するには、`:h` を使ってください。 そうするとメインのヘルプページを見ることができます。この最初のページで、どう やって動き回るかの説明があると思います。基本的にはリードオンリーのドキュメント 内を動き回るのと同じ仕方でヘルプ内を移動します。特定のテーマへジャンプするには タグを使うことができます。これは二通りの方法で行えます: - * コマンドやオプションの上で "" コマンドを使う。これはタグがキー - ワードである場合にのみ有効です。"" や "g" も - "" と同じように機能します。 - * ":ta subject" コマンドを使う。これはどんな文字であっても利用できます。 + * コマンドやオプションの上で CTRL-] コマンドを使う。これはタグがキー + ワードである場合にのみ有効です。 や g も + CTRL-] と同じように機能します。 + + * `:tag subject` コマンドを使う。これはどんな文字であっても利用できます。 -以前のヘルプファイルの場所へ戻るには "" を使ってください。ヘルプを閉じ -るには ":q" を使ってください。 +以前のヘルプファイルの場所へ戻るには CTRL-T を使ってください。ヘルプを閉じ +るには `:q` を使ってください。 -ヘルプページのある特定のテーマへジャンプしたければ ":h {subject}" を使ってくだ -さい。何を探せば良いか分からなければ、 ":h index" で全ての利用可能なテーマの一 +ヘルプページのある特定のテーマへジャンプしたければ `:help {subject}` を使ってくだ +さい。何を探せば良いか分からなければ、 `:help index` で全ての利用可能なテーマの一 覧を得ることができます。標準の検索語を使って欲しい情報を見つけてください。 -":help"コマンドは":h"と短縮することができます。 +`:help`コマンドは`:h`と短縮することができます。 -さらなる情報については以下を参照してください。 > +ヘルプを探すには次のQuestion 4.2を参照してください。 |faq-4.2| + +さらなる情報については以下を参照してください。 + + |online-help| - :help online-help -< *faq-4.2* 4.2. どうやってVimヘルプファイル中のキーワードを探すんですか? -ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘルプ -キーワードのリストが得られます。*, \+などのメタ文字を使ってヘルプの検索パター -ンを指定することもできます: > +a) ヘルプキーワードをタイプした後にCTRL-Dを押すとそのパターンを含む全てのヘル + プキーワードのリストが得られます。*、\+などのメタ文字を使ってヘルプの検索 + パターンを指定することもできます: > :help init :help str*() :help '*indent -< -ヘルプキーワードの一部をタイプした後にTabキーを押すと、マッチするキーワードに -展開することができます。Tabキーを押しつづけると他のマッチするキーワードに変わっ -ていきます。 -ヘルプウィンドウでは":tag"コマンドを使ってキーワードを検索することができます。 -例えば、 > +b) ヘルプキーワードの一部をタイプした後にキーを押すと、マッチするキーワー + ドに展開することができます。キーを押しつづけると他のマッチするキーワー + ドに変わっていきます。 + +c) ヘルプウィンドウでは`:tag`コマンドを使ってキーワードを検索することができま + す。例えば、 > :tselect /window < -このコマンドはテキスト"window"を含むヘルプキーワード全てをリスト表示します。そ -のリストの中から1つを選んでそこへジャンプすることができます。 + このコマンドはテキスト"window"を含むヘルプキーワード全てをリスト表示します。 + そのリストの中から1つを選んでそこへジャンプすることができます。 -":helpgrep"コマンドを使って全てのヘルプファイル中から与えられたテキストを検索 -することができます。QuickFixウィンドウが開き、全てのマッチする行が表示されま -す。 +d) `:helpgrep`コマンドを使って全てのヘルプファイル中から与えられたテキストを + 検索することができます。QuickFixウィンドウが開き、全てのマッチする行が表示 + されます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |help-summary| + |c_CTRL-D| + |c_| + |:tselect| + |:help| + |:helpgrep| - :help c_CTRL-D - :help c_ - :help :tselect - :help :help - :help :helpgrep -< *faq-4.3* 4.3. エラーメッセージE123が出ました。何がまずいのでしょうか? -以下を行うと、エラーとエラーメッセージについてより詳しい情報が得られます: > +以下を行うと、エラーとエラーメッセージについてより詳しい情報が得られます: - :help E123 -< -さらなる情報については以下を参照してください。 > + |E123| + +さらなる情報については以下を参照してください。 + + |error-messages| - :help error-messages -< *faq-4.4* 4.4. Vimの様々なモードについては何を読めばいいですか? -Vimにおけるモードの違いについては、以下を読めば情報を得られます。 > +Vimにおけるモードの違いについては、以下を読めば情報を得られます。 + + |vim-modes| - :help vim-modes -< *faq-4.5* 4.5. 新しいVimヘルプファイルを追加した後、どうすればVimのヘルプタグファイルを 生成することができますか? -":helptags"コマンドを使えばVimのヘルプタグファイルを再生成することができます。 +`:helptags`コマンドを使えばVimのヘルプタグファイルを再生成することができます。 例えば: > :cd $VIMRUNTIME/doc :helptags . < -さらなる情報については以下を参照してください。 > +'runtimepath'内のすべての"doc"ディレクトリを更新するには以下を実行します。 > + + :helptags ALL + +さらなる情報については以下を参照してください。 + + |:helptags| + |add-local-help| - :help :helptags - :help add-local-help -< *faq-4.6* 4.6. 圧縮したヘルプファイルを使うことはできますか? @@ -1122,46 +1412,47 @@ Vimにおけるモードの違いについては、以下を読めば情報を 縮された"doc"ディレクトリと別な場所にある場合は、$VIMRUNTIMEが他のVimファイル のある場所に設定されていなければなりません。 -さらなる情報については以下を参照してください。 > +注記: |:helpgrep|コマンドは圧縮されたヘルプページでは機能しません。 - :help gzip-helpfile - :help 'helpfile' - :help gzip - :help $VIMRUNTIME -< +さらなる情報については以下を参照してください。 + + |gzip-helpfile| + |'helpfile'| + |gzip| + |$VIMRUNTIME| ============================================================================= *faq-5* -SECTION 5 - ファイルの編集 +SECTION 5 - ファイルの編集 ~ *faq-5.1* 5.1. ファイルを編集用に読み込むには? ファイルを編集用に読み込むにはいくつかの方法があります。もっとも単純な方法は -":e" (:edit)コマンドを使うことです: > +`:e` (:edit)コマンドを使うことです: > :e < -":n" (:next)コマンドを使ってファイルをVimに読み込ませることもできます: > +`:n` (:next)コマンドを使ってファイルをVimに読み込ませることもできます: > :n < -":args"コマンドを使ってファイルをVimに読み込ませることもできます: > +`:args`コマンドを使ってファイルをVimに読み込ませることもできます: > :args < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |usr_07.txt| + |edit-files| + |:edit| + |:next_f| + |:args_f| - :help usr_07 - :help edit-files - :help :edit - :help :next_f - :help :args_f -< *faq-5.2* 5.2. 現在のファイルを別な名前で保存(save as)して新しいファイルを編集するには? -":saveas"コマンドを使えば現在のファイルを別な名前で保存することができます: > +`:saveas`コマンドを使えば現在のファイルを別な名前で保存することができます: > :saveas < @@ -1170,18 +1461,18 @@ SECTION 5 - ファイルの編集 :w :edit # < -":file"コマンドと":w"コマンドを使うこともできます: > +`:file`コマンドと`:w`コマンドを使うこともできます: > :file :w < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |07.7| + |:saveas| + |:file_f| + |:w| - :help 07.7 - :help :saveas - :help :file_f - :help :w -< *faq-5.3* 5.3. カレントディレクトリを現在のファイルのディレクトリにするには? @@ -1189,18 +1480,20 @@ SECTION 5 - ファイルの編集 :cd %:p:h < -自動的にカレントディレクトリを現在のファイルのディレクトリにするには、次の -autocmdを使います: > +自動的にカレントディレクトリを現在のファイルのディレクトリにするには、単純に +'autochdir'オプションをセットします。 > - :autocmd BufEnter * cd %:p:h + :set autochdir < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:cd| + |:lcd| + |filename-modifiers| + |autocommand| + |'acd'| + |getcwd()| - :help :cd - :help :lcd - :help filename-modifiers - :help autocommand -< *faq-5.4* 5.4. ファイルの末尾に改行文字(EOL)をつけずにファイルを書き込むには? @@ -1211,12 +1504,28 @@ EOLをつけずにファイルを書き込むことができます: > :set noeol :w < -さらなる情報については以下を参照してください。 > +もしくは、以下を実行します: > - :help 'endofline' - :help 'binary' - :help 23.4 + :set noeol + :w ++bin < +EOLが存在しない場合にのみVimが書き込まないようにしたければ、'fixeol'オプション +をオフにします。これにはVim 7.4.785以上が必要なため、以下のようにif条件で囲む +必要があります: > + + if exists('+fixeol') + set nofixeol + endif +< +これには、'binary'オプションが持つ多くの副作用を避ける利点があります。 + +さらなる情報については以下を参照してください。 + + |'endofline'| + |'fixeol'| + |'binary'| + |23.4| + *faq-5.5* 5.5. ファイルを最後に編集した場所から開くようにするには? @@ -1225,13 +1534,17 @@ Vimは各バッファに対して最後に編集した場所のカーソル位 開くようにできます: > au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | - \ exe "normal g'\"" | endif + \ exe "normal! g`\"" | endif < -さらなる情報については以下を参照してください。 > +もしくは、単にvimrc_example.vimファイルを読み込むようにすることもできます。 +これはVimと一緒に配布されています。 + +さらなる情報については以下を参照してください。 + + |'quote| + |last-position-jump| + |vimrc_example.vim| - :help '" - :help last-position-jump -< *faq-5.6* 5.6. Vimでファイルを編集中にそのファイルが他のアプリケーションによって変更され たとき、Vimは変更が検出されるたびに警告ウィンドウ(確認ダイアログのような) @@ -1249,56 +1562,60 @@ Vimは各バッファに対して最後に編集した場所のカーソル位 \ echo "File has been changed outside of vim." | \ echohl None < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'autoread'| + |FileChangedShell| + |timestamp| + |:checktime| - :help 'autoread' - :help FileChangedShell - :help timestamp - :help :checktime -< *faq-5.7* 5.7. カーソル下のファイル名のファイルを開くには? gfコマンドでカーソル下のファイル名のファイルを開くことができます。CTRL-W fコマ -ンドでそのファイルを新しいウィンドウで開くことができます。 +ンドでそのファイルを新しいウィンドウで開くことができます。最後にCTRL-W gwを使っ +てカーソル下のファイル名を含んだ新しいタブページを開くことができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |gf| + |CTRL-W_f| + |CTRL-W_gf| + |'isfname'| + |'path'| + |'suffixesadd'| + |'includeexpr'| - :help gf - :help CTRL-W_f - :help 'isfname' - :help 'path' - :help 'suffixesadd' - :help 'includeexpr' -< *faq-5.8* 5.8. 現在のファイルを再読み込みするには? -ファイル名を指定せずに":edit"コマンドを行えば、現在のファイルを再読み込みする -ことができます。ファイルに変更をしてある場合は、":edit!"とすれば強制的に現在の -ファイルを再読み込みすることができます(変更は失われます)。 +ファイル名を指定せずに`:edit`コマンドを行えば、現在のファイルを再読み込みする +ことができます。ファイルに変更をしてある場合は、`:edit!`とすれば強制的に現在の +ファイルを再読み込みすることができます。(変更は失われますが、'undoreload'の設定 +に依存します。その変更はアンドゥ履歴に保存される場合もあります。) -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:edit| + |:edit!| + |'confirm'| + |'undoreload'| - :help :edit - :help :edit! - :help 'confirm' -< *faq-5.9* 5.9. ファイルを定期的に自動保存するには? Vimにはファイルを定期的に自動保存する機能はありません。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'updatetime'| + |CursorHold| + |swap-file| - :help 'updatetime' - :help CursorHold - :help swap-file -< *faq-5.10* 5.10 ファイルを読み取り専用モードで開くには? -ファイルを読み取り専用モードで開くには":view"コマンドを使います: > +ファイルを読み取り専用モードで開くには`:view`コマンドを使います: > :view < @@ -1313,26 +1630,82 @@ Vimにはファイルを定期的に自動保存する機能はありません $ view < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |07.6| + |'readonly'| + |'modifiable'| + |:view| + |:sview| + |view| + |-R| + |-M| + + *faq-5.11* +5.11. 現在のファイルの変更を保存せずに編集用にファイルを開くには? + +現在のファイルの変更を保存せず新たに編集用にファイルを開き、また変更を失わない +ようにするには以下のいずれかを実行します。 > + + :split + :new +< +'hidden' オプションをセットして新しいファイルを編集することができます。 > + + :set hidden + :e +< +現在のファイルに対する変更を破棄して別のファイルを編集用に開くには、以下のコマ +ンドを実行します。 > + + :e! +< +さらなる情報については以下を参照してください。 + + |:edit!_f| + |'hidden'| + |:split| + |:new| + + *faq-5.12* +5.12. Vimでとても大きなファイルを開く場合にロード時間を短縮するには? - :help 07.6 - :help 'readonly' - :help 'modifiable' - :help :view - :help :sview - :help view - :help -R - :help -M +以下の設定をすることで、Vimでとても大きなファイルを開く時間を短縮できます。 > + + :set lazyredraw + :set noswapfile + :set undolevels=-1 + :set eventignore=all + :set nohidden + :set syntax=off < +注記: 上記の設定は、以下に述べるVimの多くの機能を無効にします。クラッシュリカ +バリのためのスワップファイル機能、アンドゥ機能、構文強調、ファイルタイプの特定、 +その他のオートコマンドによる機能。 + +以下に LargeFile プラグインがあります。 + + https://www.vim.org/scripts/script.php?script_id=1506 + +このプラグインは大きなファイルを扱う場合にこれらのオプションを自動で設定します。 +(設定で、大きなファイルとみなされるファイルサイズを指定できます。デフォルトは +100MBです。) ============================================================================= *faq-6* -SECTION 6 - 複数のファイルを編集する +SECTION 6 - 複数のファイルを編集する ~ *faq-6.1* 6.1. Vim内で同時に複数のファイルを開くには? -Vim内で同時に複数のファイルを開くにはいくつかの方法があります。":next"コマンド +引数リスト、バッファ、タブ、ウィンドウの違いを確認してください。これらはすべて +Vimの中では異なるものです。 + +バッファはテキストを編集する場所で、ほとんどの場合はファイルに関連付けられてい +ますが必須ではありません。ウィンドウはバッファ用の場所であり、タブはウィンドウ +のセットであり、より適切な呼び方をするなら「レイアウト」になります。 + +Vim内で同時に複数のファイルを開くにはいくつかの方法があります。`:next`コマンド を使うとファイルのグループを指定することができます: > :next f1.txt f2.txt @@ -1343,44 +1716,61 @@ Vim内で同時に複数のファイルを開くにはいくつかの方法が :args f1.txt f2.txt :args *.c < -ファイルを読み込んだら、":next"と":prev"コマンドでファイルを切り替えることがで +ファイルを読み込んだら、`:next`と`:prev`コマンドでファイルを切り替えることがで きます。 -さらなる情報については以下を参照してください。 > +引数リストに含まれる全てのファイルでコマンドを実行するには`:argdo`を使います。 + +さらなる情報については以下を参照してください。 + + |07.2| + |:next| + |:args_f| + |argument-list| - :help 07.2 - :help :next - :help :args_f - :help argument-list -< *faq-6.2* 6.2. 複数のファイル・バッファを切り替えるには? -複数のファイルを切り替えるにはいくつかの方法があります。":buffer"コマンドを使 -うと複数のファイルを切り替えることができます。例えば、 > +全てのバッファを一覧するには`:ls`を使用します。ファイルが関連付けられていない +バッファ(リストされていないバッファ、例えばスクラッチバッファとヘルプウィンドウ) +も含めて一覧するには`:ls!`を使用します。 + +複数のファイルを切り替えるにはいくつかの方法があります。`:buffer`コマンドを使う +と複数のファイルを切り替えることができます。コマンドは`:b`のように短くすること +ができ、ファイル名の一部だけを指定できます。例えば、 > :buffer file1 :buffer file2 + :b e2 < +自動補完のため`:b`に続けてを使うこともできます。また、`:b`の後にCTRL-D +を試してみればすべての存在するバッファを見ることができます。これは`:e`にも同様 +に働きます。 + CTRL-^を使ってバッファを切り替えることもできます。キーの前にカウントを指定する とその番号のバッファを編集することができます。カウントを指定しないでCTRL-^を押 すと代替バッファを編集します。 -":e #"コマンドでも特定のバッファを編集することができます: > +`:e #`コマンドでも特定のバッファを編集することができます: > :e #5 < -さらなる情報については以下を参照してください。 > +バッファを閉じるには`:bd`コマンドを使用します。 + +バッファリストに含まれる全てのファイルでコマンドを実行するには`:bufdo`を使いま +す。 + +さらなる情報については以下を参照してください。 + + |edit-files| + |:buffer| + |CTRL-^| + |alternate-file| + |22.4| + |07.3| - :help edit-files - :help :buffer - :help CTRL-^ - :help alternate-file - :help 22.4 - :help 07.3 -< *faq-6.3* -6.3. それぞれのファイルを別ウィンドウで開くには? +6.3. それぞれのファイルを別ウィンドウ/タブページで開くには? コマンドライン引数-oと-Oを指定すると複数のファイルを水平または垂直に分割した ウィンドウで開くことができます。例えば: > @@ -1395,42 +1785,50 @@ CTRL-^を使ってバッファを切り替えることもできます。キー 上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つに垂直に分割したウィンドウで 開きます。 > -さらなる情報については以下を参照してください。 > - - :help -o - :help -O - :help startup-options + $ vim -p f1.txt f2.txt f3.txt < +上のコマンドはファイルf1.txt、f2.txt、f3.txtを3つの別のタブページで開きます。 +オプション'tabpagemax'は同時に開けるタブページの最大値を定義します。デフォルト +の最大値は10です。 + +さらなる情報については以下を参照してください。 + + |-o| + |-O| + |-p| + |startup-options| + |'tabpagemax'| + *faq-6.4* 6.4. 「ワークセット」や「プロジェクト」のように自動的に複数のファイルを同時に 読み込ませるようにするには? -自動的に複数のファイルを読み込ませるようにするには":mksesion"と":mkview"を使い +自動的に複数のファイルを読み込ませるようにするには`:mksesion`と`:mkview`を使い ます。 -":mksession"コマンドは現在編集中のセッションを復元するVim scriptを生成します。 -このmksessionコマンドで作られたファイルは":source"コマンドで読み込むことができ +`:mksession`コマンドは現在編集中のセッションを復元するVim scriptを生成します。 +このmksessionコマンドで作られたファイルは`:source`コマンドで読み込むことができ ます。 -":mkview"コマンドは現在のウィンドウの中身を復元するVim scriptを生成します。 -現在のファイルのviewを読み込むには":loadview"コマンドを使います。 +`:mkview`コマンドは現在のウィンドウの中身を復元するVim scriptを生成します。 +現在のファイルのviewを読み込むには`:loadview`コマンドを使います。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |21.4| + |21.5| + |views-sessions| + |'sessionoptions'| + |:mksession| + |:source| + |v:this_session| + |:mkview| + |:loadview| + |'viewdir'| + |buffers| - :help 21.4 - :help 21.5 - :help views-sessions - :help 'sessionoptions' - :help :mksession - :help :source - :help v:this_session - :help :mkview - :help :loadview - :help 'viewdir' - :help buffers -< *faq-6.5* -6.5. Neditやemacsのように単一のVimインスタンスで複数のトップレベルウィンドウを +6.5. NeditやEmacsのように単一のVimインスタンスで複数のトップレベルウィンドウを 開くことはできますか? できません。単一のVimインスタンスで複数のトップレベルウィンドウを開くことは現 @@ -1439,22 +1837,24 @@ CTRL-^を使ってバッファを切り替えることもできます。キー *faq-6.6* 6.6. Vim内でディレクトリをブラウズするには? -標準Vimディストリビューションに同梱のexplorer.vimプラグインを使えばVim内でディ +標準Vimディストリビューションに同梱のnetrw.vimプラグインを使えばVim内でディ レクトリをブラウズすることができます。以下のコマンドのうちどれかでファイルエク スプローラーを起動することができます: > :e :Explore - :SExplore + :Sexplore + :Vexplore + :Texplore < ファイルエクスプローラーではディレクトリをブラウズし、ファイルをリネーム、 削除、編集することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |netrw.vim| + |22.1| - :help file-explorer - :help 22.1 -< *faq-6.7* 6.7. ftp/scp/rcp/httpでネットワークごしにファイルを編集するには? @@ -1465,14 +1865,13 @@ ftp/scp/rcp/httpごしのファイルを透過的に読み込み、保存しま $ vim ftp://machine/path < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help netrw.vim -< + |netrw.vim| ============================================================================= *faq-7* -SECTION 7 - バックアップ +SECTION 7 - バックアップ ~ *faq-7.1* 7.1. ファイルを保存したとき元のファイル名の末尾に"~"という文字をつけたファイル @@ -1485,26 +1884,49 @@ SECTION 7 - バックアップ :set nobackup < -Note デフォルトではこのオプションはオフにされています。初期設定ファイルのどこ +注記: デフォルトではこのオプションはオフにされています。初期設定ファイルのどこ かで明示的に'backup'オプションが有効化されています。'writebackup'オプションも オフにするとよいかもしれません: > :set nowritebackup < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |07.4| + |backup-table| + |'backup'| + |'writebackup'| + |'backupskip'| + |'backupdir'| + |'backupext'| + |'backupcopy'| + |backup| - :help 07.4 - :help backup-table - :help 'backup' - :help 'writebackup' - :help 'backupskip' - :help 'backupdir' - :help 'backupext' - :help 'backupcopy' - :help backup -< *faq-7.2* -7.2. 全てのバックアップファイルを特定のディレクトリに保存するように設定するに +7.2. ファイルを保存したとき元のファイル名の末尾に".un~"という拡張子をつけたファ + イルが作られます。このファイルを作成するのを止めさせるには?(または)アン + ドゥファイル機能を無効にするには? + +Vim 7.3にはアンドゥを永続化する新機能があります。Vimの終了時にアンドゥ情報を失 +わないために、元のファイル名の末尾に".un~"という拡張子をつけたファイルに保存さ +れます。'undofile'オプションをオンにすると、元のファイルを保存したときにアンド +ゥファイルが作られます。このファイルの作成を止めさせるには以下のオプションを設 +定します。 > + + :set noundofile +< +注記: デフォルトではこのオプションはオフにされています。初期設定ファイルのどこ +かで明示的に'undofile'オプションが有効化されています。'undodir'オプションを使 +えば全てのアンドゥファイルを特定のディレクトリに保存するように設定できます。 + +さらなる情報については以下を参照してください。 + + |'undodir'| + |'undofile'| + |undo-persistence| + + *faq-7.3* +7.3. 全てのバックアップファイルを特定のディレクトリに保存するように設定するに は? 'backupdir'オプションを使えば全てのバックアップファイルを特定のディレクトリに 保存するように設定できます。例えば、全てのバックアップファイルを~/backupディレ @@ -1512,19 +1934,19 @@ Note デフォルトではこのオプションはオフにされています。 :set backupdir=~/backup < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help 07.4 - :help 'backupdir' - :help backup -< - *faq-7.3* -7.3. ファイルを保存するとファイルパーミッションが変更されます。ファイルパー + |07.4| + |'backupdir'| + |backup| + + *faq-7.4* +7.4. ファイルを保存するとファイルパーミッションが変更されます。ファイルパー ミッションを変更せずにファイルを保存するよう設定するには? -これは'backupcopy'が'no'または'auto'に設定されていると起こりえます。Note この +これは'backupcopy'が"no"または"auto"に設定されていると起こりえます。注記: この オプションのデフォルト値はほとんどの場合に正しく動作するように設定されていま -す。もしそのデフォルト値が正しく機能しないなら、'backupcopy'オプションを'yes' +す。もしそのデフォルト値が正しく機能しないなら、'backupcopy'オプションを"yes" にすればファイル保存時にパーミッションをそのままにすることができます: > :set backupcopy=yes @@ -1532,17 +1954,16 @@ Note デフォルトではこのオプションはオフにされています。 これはファイルを上書きするときは必ずバックアップを作るように設定したときだけ適 用されます。デフォルトではVimはバックアップファイルを作りません。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help 'backupcopy' - :help backup - :help 'backup' - :help 'writebackup' -< + |'backupcopy'| + |backup| + |'backup'| + |'writebackup'| ============================================================================= *faq-8* -SECTION 8 - バッファ +SECTION 8 - バッファ ~ *faq-8.1* 8.1. バッファに対して変更を加えました。変更されたバッファを保存せずに、かつ変 @@ -1555,14 +1976,14 @@ SECTION 8 - バッファ < 'hidden'オプションをセットすると、バッファに対する変更履歴(アンドゥ履歴)も保 存されます。そうでないと、ファイルを切り替えたときにアンドゥ履歴が失われてしま -うでしょう。 +うでしょう。(永続的なアンドゥファイルを使用しない場合。). -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'hidden'| + |hidden-quit| + |:hide| - :help 'hidden' - :help hidden-quit - :help :hide -< *faq-8.2* 8.2. バッファを切り替えるときに自動的に保存するよう設定するには? @@ -1571,84 +1992,78 @@ SECTION 8 - バッファ :set autowrite < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'autowrite'| + |'autowriteall'| + |'hidden'| - :help 'autowrite' - :help 'autowriteall' - :help 'hidden' -< *faq-8.3* 8.3. カレントウィンドウのバッファを空バッファにするには? -":enew"コマンドを使うとカレントウィンドウのバッファに換わって空バッファを読み +`:enew`コマンドを使うとカレントウィンドウのバッファに換わって空バッファを読み 込みます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:enew| - :help :enew -< *faq-8.4* 8.4. バッファ番号を指定してバッファを読み込むショートカットキーはありますか? CTRL-^コマンドを使うとバッファ番号を指定してバッファを読み込むことができます。 例えばバッファ番号5を読み込むには5 CTRL-^とします。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |CTRL-^| - :help CTRL-^ -< *faq-8.5* 8.5. 読み込んでいるバッファをそれぞれ別のウィンドウで開くには? -":ball"または":sball"コマンドでバッファリスト中の全てのバッファを開くことがで +`:ball`または`:sball`コマンドでバッファリスト中の全てのバッファを開くことがで きます: > :ball < -さらなる情報については以下を参照してください。 > +全てのバッファを新しいタブでで開きたい場合、単純に:tabコマンドを前置します: > - :help :ball + :tab :sball < +さらなる情報については以下を参照してください。 + + |:ball| + *faq-8.6* 8.6. Vimを終了することなくバッファを閉じる(削除する)には? -":bdelete"コマンドでVimを終了することなくバッファを削除できます。 -例: > +`:bdelete`, `:bwipeout` または `:bunload` コマンドでVimを終了することなくバッ +ファを削除できます。例: > :bdelete file1 < -さらなる情報については以下を参照してください。 > - - :help :bdelete - :help :bwipeout -< - *faq-8.7* +さらなる情報については以下を参照してください。 -8.7. :e filenameでいくつかのファイルを開きました。Vimを終了することなくそのバッ - ファのうちの1つを閉じるには? + |:bdelete| + |:bwipeout| + |:bunload| -":bdelete "コマンドでバッファを閉じることができます。 + *faq-8.7* +8.7. `:%bd`コマンドで全バッファを削除しようとしても、全てのバッファが削除され + ません。なぜ? -さらなる情報については以下を参照してください。 > +`:%bd`コマンドにおいて範囲"%"はカレントバッファの開始行と終端行で置き換えられ +ます。範囲として"%"を使わず、番号を指定しなければなりません。例えば、 +`:1,9999bd`とすれば全バッファを削除できます。 - :help :bdelelete - :help :bunload - :help :bwipeout -< - *faq-8.8* -8.8. ":%bd"コマンドで全バッファを削除しようとしても、全てのバッファが削除され - ません。なぜ? +さらなる情報については以下を参照してください。 -":%bd"コマンドにおいて範囲'%'はカレントバッファの開始行と終端行で置き換えられ -ます。範囲として'%'を使わず、番号を指定しなければなりません。例えば、 -":1,9999bd"とすれば全バッファを削除できます。 + |:bd| -さらなる情報については以下を参照してください。 > +(この動作はパッチ7.4.530で修正されました。) - :help :bd -< - *faq-8.9* -8.9. カレントバッファ/ファイルのバッファ番号を表示するには? + *faq-8.8* +8.8. カレントバッファ/ファイルのバッファ番号を表示するには? 2コマンドでカレントバッファ/ファイルのバッファ番号を表示できます。 CTRL-Gの前にカウントを指定することに注意してください。カウントが1より大きい場 @@ -1661,44 +2076,45 @@ CTRL-Gの前にカウントを指定することに注意してください。 また、'statusline'オプションにフィールド"%n"を含めるとステータスラインにバッ ファ番号が表示されます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help CTRL-G - :help bufnr() - :help :echo - :help 'statusline' -< - *faq-8.10* -8.10. ウィンドウを閉じることなくバッファを削除するには? + |CTRL-G| + |bufnr()| + |:echo| + |'statusline'| + + *faq-8.9* +8.9. ウィンドウを閉じることなくバッファを削除するには? 次のコマンドで現在のバッファを削除し、次のバッファを開くことができます: > :bnext | bdelete # < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help :bnext - :help :bdelete - :help :buffers -< - *faq-8.11* -8.11. Tabキーで全バッファを巡回するようにマップするには? + |:bnext| + |:bdelete| + |:buffers| -次の2つのマップコマンドを使うと、CTRL-Tabで次のバッファを開き、CTRL-SHIFT-Tab + *faq-8.10* +8.10. キーで全バッファを巡回するようにマップするには? + +次の2つのマップコマンドを使うと、で次のバッファを開き、 で前のバッファを開くようにマップできます: > :nnoremap :bnext :nnoremap :bprevious < -さらなる情報については以下を参照してください。 > +注記: これはターミナル版のVimでは動作しないかもしれない。 - :help :bnext - :help :previous -< +さらなる情報については以下を参照してください。 + + |:bnext| + |:bprevious| ============================================================================= *faq-9* -SECTION 9 - ウィンドウ +SECTION 9 - ウィンドウ ~ *faq-9.1* 9.1. ウィンドウとバッファの違いは? @@ -1708,13 +2124,13 @@ SECTION 9 - ウィンドウ を表示する領域です。1つのバッファを複数のウィンドウで表示することもできます し、異なるバッファを複数のウィンドウで表示することもできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |usr_08.txt| + |22.4| + |windows-intro| + |Q_wi| - :help usr_08.txt - :help 22.4 - :help windows-intro - :help Q_wi -< *faq-9.2* 9.2. ウィンドウの幅を広げるには? @@ -1726,26 +2142,26 @@ SECTION 9 - ウィンドウ < CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:vertical-resize| + |CTRL-W_>| + |CTRL-W_<| + |window-resize| - :help vertical-resize - :help CTRL-W_> - :help CTRL-W_< - :help window-resize -< *faq-9.3* 9.3. ウィンドウをズームイン・ズームアウトするには? ウィンドウをズームするには(カレントウィンドウ以外の全ウィンドウを閉じるには) -"CTRL-W o" またはexコマンド ":only" を使います。 +"o" またはexコマンド `:only` を使います。 -"CTRL-W _" またはexコマンド ":resize" を使うと、他のウィンドウを閉じずに可能な +"_" またはexコマンド `:resize` を使うと、他のウィンドウを閉じずに可能な 限りウィンドウの高さを広げることができます。 -"CTRL-W |" またはexコマンド ":vertical resize" を使うと、他のウィンドウを閉じ +"|" またはexコマンド `:vertical resize` を使うと、他のウィンドウを閉じ ずに可能な限りウィンドウの幅を広げることができます。 -"CTRL-W =" コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 +"=" コマンドを使うと全ウィンドウの高さと幅を等しくすることができます。 以下のオプションをセットすると、上記のコマンドを行うのと同じ結果が得られます。 @@ -1773,48 +2189,49 @@ CTRL-W <、CTRL-W >、CTRL-W | コマンドを使うこともできます。 配置を復元することはできません。ウィンドウ配置を復元したいならばZoomWinプラグ インを使うことができます。このプラグインはVim onlineからダウンロードできます。 -http://vim.sourceforge.net/scripts/script.php?script_id=508 + https://www.vim.org/scripts/script.php?script_id=508 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |CTRL-W_o| + |window-resize| + |'winminheight'| + |'equalalways'| + |'winheight'| + |08.3| - :help CTRL-W_o - :help window-resize - :help 'winminheight' - :help 'equalalways' - :help 'winheight' - :help 08.3 -< *faq-9.4* 9.4. 全バッファまたは全ウィンドウ、引数リスト中の全ファイルに対してexコマンド を実行するには? -":bufdo"コマンドを使うと全バッファに対してexコマンドを実行することができます。 -":windo"コマンドを使うと全ウィンドウに対してexコマンドを実行することができま -す。":argdo"コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行す -ることができます。 +`:bufdo`コマンドを使うと全バッファに対してexコマンドを実行することができます。 +`:windo`コマンドを使うと全ウィンドウに対してexコマンドを実行することができま +す。`:argdo`コマンドを使うと引数リスト中の全ファイルに対してexコマンドを実行す +ることができます。そして最後に、`:tabdo`コマンドを使うと全タブに対してexコマン +ドを実行することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help :windo - :help :bufdo - :help :argdo - :help 26.3 -< + |:windo| + |:bufdo| + |:argdo| + |:tabdo| + |26.3| ============================================================================= *faq-10* -SECTION 10 - モーション +SECTION 10 - モーション ~ *faq-10.1* 10.1. ファイルの先頭や末尾に移動するには? -'G'でファイルの最終行へ移動でき、'gg'で先頭行へ移動できます。 +"G"でファイルの最終行へ移動でき、"gg"で先頭行へ移動できます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |G| + |gg| - :help G - :help gg -< *faq-10.2* 10.2. 挿入モードでキーを押してノーマルモードに移行すると、カーソルが1文字 左へ移動します(カーソルが行の最初の文字の上にあるときを除いて)。この動作 @@ -1826,14 +2243,15 @@ SECTION 10 - モーション らねばなりません。一貫性のためにカーソルはどこにあっても1文字戻るようになって います。たとえ行の真ん中であっても。 -挿入モードでCTRL-Oを使うと、カーソル位置を動かすことなくexコマンドを1つ実行し -て挿入モードに戻ることができます。 +挿入モードでCTRL-OまたはCTRL-\ CTRL-Oを使うと、カーソル位置を動かすことなくex +コマンドを1つ実行して挿入モードに戻ることができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'virtualedit'| + |i_CTRL-O| + |i_CTRL-\_CTRL-O| - :help 'virtual' - :help i_CTRL-O -< *faq-10.3* 10.3. などのキーを押してスクロールしたときカーソル位置の 桁を保つように設定することはできますか? @@ -1843,10 +2261,10 @@ SECTION 10 - モーション :set nostartofline < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'startofline'| - :help 'startofline' -< *faq-10.4* 10.4. ファイル中のある行の長さが画面の幅を越えており、折り返されています。ここ でj, kキーを使うと画面上の次行(物理行)でなくファイルの次行(論理行)に @@ -1858,41 +2276,43 @@ gjとgkコマンドを使うと画面上の次行・前行に移動できます :set nowrap < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |gj| + |gk| + |'wrap'| - :help gj - :help gk - :help 'wrap' -< 以下のマッピングを使ってもよいでしょう: > :map gk :imap gk :map gj :imap gj + :noremap j gj + :noremap k gk < *faq-10.5* 10.5. Vimにおける文、段落、セクションの定義は? -文(sentence)は後ろに行末・(1個または2個の)スペース・タブが続く'.'、'!'、'?' +文(sentence)は後ろに行末・(1個または2個の)スペース・タブが続く"."、"!"、"?" で終わると定義されます。文の終端を構成する文字とスペースの個数は'joinspaces'と 'cpoptions'オプションによって決まります。 -段落(paragraph)は空行の後から始まります。また、'paragraph'オプション中の文字の +段落(paragraph)は空行の後から始まります。また、'paragraphs'オプション中の文字の ペアによって指定される段落マクロも段落の始まりとみなされます。 セクションは1桁目のフォームフィード()から始まります。また、'sections'オプ ション中の文字のペアによって指定される段落マクロも段落の始まりとみなされます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |sentence| + |'joinspaces'| + |'cpoptions'| + |paragraph| + |section| + |word| - :help sentence - :help 'joinspaces' - :help 'cpoptions' | /^\s*j\> - :help paragraph - :help section - :help word -< *faq-10.6* 10.6. 文、段落、セクションの先頭と末尾に移動するには? @@ -1912,10 +2332,10 @@ gjとgkコマンドを使うと画面上の次行・前行に移動できます これらの移動コマンドの前に番号を指定すると、移動を前方(または後方)に拡大する ことができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |object-motions| - :help object-motions -< *faq-10.7* 10.7. 画面の右端を越えて続いている行があります。右側にスクロールして画面外に出 ているテキストを表示するには? @@ -1932,22 +2352,23 @@ gjとgkコマンドを使うと画面上の次行・前行に移動できます g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで画面上最後の文字へ、画面 をスクロールせずに移動することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |scroll-horizontal| - :help scroll-horizontal -< *faq-10.8* 10.8. 2個以上のバッファを同時にスクロールさせるには? -それぞれのバッファに対して"scrollbind"オプションをセットすると、それらを同時に +それぞれのバッファに対して'scrollbind'オプションをセットすると、それらを同時に スクロールできるようになります。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'scrollbind'| + |scroll-binding| + |'scrollopt'| + |'cursorbind'| - :help 'scrollbind' - :help scroll-binding - :help 'scrollopt' -< *faq-10.9* 10.9. 矢印キーを使うとモードが変わり、バッファに変な文字が挿入され、カーソルが 適切に移動しません。どうなっているのですか? @@ -1962,39 +2383,39 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで もしあなたのターミナルが送るキーコードをVimが理解しなければ、そのコマンドは正 しく動きません。この場合、最良の選択肢はそのキーシーケンスをカーソル移動コマ ンドにマップして、そのマッピングをファイルに保存しておくことです。そしてその -ターミナル上で使うときは常にそのファイルを":source"します。 +ターミナル上で使うときは常にそのファイルを`:source`します。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'timeout'| + |'ttimeout'| + |'timeoutlen'| + |'ttimeoutlen'| + |:map| + |vt100-cursor-keys| - :help 'timeout' - :help 'ttimeout' - :help 'timeoutlen' - :help 'ttimeoutlen' - :help :map - :help vt100-cursor-keys -< *faq-10.10* 10.10. カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにす るには? カーソルが行頭にあるとき左矢印キーを押すと前行の行末に移動するようにするには -'whichwrap'オプションに'<'フラグを加えます: > +'whichwrap'オプションに"<"フラグを加えます: > :set whichwrap+=< < 同様に、カーソルが行末にあるとき右矢印キーを押すと次行の行頭に移動するようにす -るには'whichwrap'オプションに'>'フラグを加えます: > +るには'whichwrap'オプションに">"フラグを加えます: > :set whichwrap+=> < これらはノーマルモードとビジュアルモードでのみ機能します。挿入モードと置換モー -ドでも使えるようにするには、それぞれ '[' と ']' フラグを加えます。 +ドでも使えるようにするには、それぞれ "[" と "]" フラグを加えます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'whichwrap'| + |05.7| - :help 'whichwrap' - :help 05.7 -< *faq-10.11* 10.11. 常に挿入モードに留まるようにするには?(モードレスな編集をするには?) @@ -2015,14 +2436,18 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで "evim"コマンドまたは"vim -y"を使ってもVimをモードレスエディタとして使用できま す。 -さらなる情報については以下を参照してください。 > +`:startinsert` exコマンドを使ってVimを挿入モードで起動することもできます。 + +さらなる情報については以下を参照してください。 + + |'insertmode'| + |:startinsert| + |:stopinsert| + |i_CTRL-O| + |i_CTRL-L| + |evim| + |evim-keys| - :help 'insertmode' - :help i_CTRL-O - :help i_CTRL-L - :help evim - :help evim-keys -< *faq-10.12* 10.12. テキストをスクロールするとき、前後の行を表示するには? @@ -2031,11 +2456,11 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで :set scrolloff=10 < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'scrolloff'| + |'sidescrolloff'| - :help 'scrolloff' - :help 'sidescrolloff' -< *faq-10.13* 10.13. 以前のカーソル位置に戻るには? @@ -2043,16 +2468,15 @@ g0コマンドでカーソルを画面上最初の文字へ、g$コマンドで きます。CTRL-Oでも以前のカーソル位置に戻ることができ、CTRL-Iでジャンプリスト中 のより新しい位置へ移動できます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help 03.10 - :help mark-motions - :help jump-motions -< + |03.10| + |mark-motions| + |jump-motions| ============================================================================= *faq-11* -SECTION 11 - テキストを検索する +SECTION 11 - テキストを検索する ~ *faq-11.1* 11.1. テキストを検索した後、マッチしたテキストが全て強調されます。この強調を一 @@ -2070,23 +2494,28 @@ SECTION 11 - テキストを検索する :nohlsearch < また、カレントファイルに存在しないパターンを検索することによってもこの強調をク -リアすることができます(例えば'asdf'を検索する)。 +リアすることができます(例えば"asdf"を検索する)。 -さらなる情報については以下を参照してください。 > +以下のマッピングを使えば、CTRL-Lを押してウィンドウを再描画する時に検索の強調 +を消すことができます。 > + + :nnoremap :nohls + +さらなる情報については以下を参照してください。 + + |'hlsearch'| + |:nohlsearch| - :help 'hlsearch' - :help :nohlsearch -< *faq-11.2* 11.2. 検索パターンにキャリッジリターン文字を含めるには? -'\r'を使うかを使えばパターンにキャリッジリターンを含めることが -できます。Vim script中では'\r'を使う方がよいでしょう。 +"\r"を使うかを使えばパターンにキャリッジリターンを含めることが +できます。Vim script中では"\r"を使う方がよいでしょう。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |sub-replace-special| - :help sub-replace-special -< *faq-11.3* 11.3. 文字^Mを検索するには? @@ -2098,28 +2527,28 @@ SECTION 11 - テキストを検索する < "\r"文字を使うこともできます。Vim script中では"\r"を使う方がよいでしょう。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |c_CTRL-V| + |using_CTRL-V| + |/\r| - :help c_CTRL-V - :help using_CTRL-V - :help /\r -< *faq-11.4* -11.4. '~R', '~S'などと表示される文字を検索・置換するには? +11.4. "~R", "~S"などと表示される文字を検索・置換するには? -'ga'で特殊文字のASCIIコードを表示することができます。例えばASCIIコードが142で +"ga"で特殊文字のASCIIコードを表示することができます。例えばASCIIコードが142で あるなら、次のコマンドでその特殊文字を検索することができます: > /^V142 < ここで^VはCTRL-Vを押して挿入します。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |ga| + |using_CTRL_V| + |24.8| - :help ga - :help using_CTRL_V - :help 24.8 -< *faq-11.5* 11.5. ファイル中の印字不能文字を全て強調するには? @@ -2129,15 +2558,15 @@ SECTION 11 - テキストを検索する :set hlsearch /\(\p\|$\)\@!. < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |/\p| + |/bar| + |/$| + |/\(| + |/\@!| + |'hlsearch'| - :help /\p - :help /bar - :help /$ - :help /\( - :help /\@! - :help 'hlsearch' -< *faq-11.6* 11.6. 単語に完全に一致するテキストを検索するには? @@ -2147,11 +2576,11 @@ SECTION 11 - テキストを検索する < アトム\<は単語の先頭にマッチし、アトム\>は単語の末尾にマッチします。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |/\<| + |/\>| - :help /\< - :help /\> -< *faq-11.7* 11.7. カーソル下の単語を検索するには? @@ -2159,15 +2588,15 @@ SECTION 11 - テキストを検索する は#キーを押します。これらのコマンドを使うとキーワードに完全に一致するものだけ が検索されます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |star| + |#| + |gstar| + |g#| + |03.8| + |search-commands| - :help star - :help # - :help g* - :help g# - :help 03.8 - :help search-commands -< *faq-11.8* 11.8. 大文字・小文字を区別せず検索するには? @@ -2180,12 +2609,12 @@ SECTION 11 - テキストを検索する /\c < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'ignorecase'| + |/ignorecase| + |/\c| - :help 'ignorecase' - :help /ignorecase - :help /\c -< *faq-11.9* 11.9. 2回続けて現れる単語を検索するには? @@ -2194,22 +2623,22 @@ SECTION 11 - テキストを検索する /\(\<\w\+\)\_s\+\1\> /\(\<\k\+\)\_s\+\1\> < -主な違いは'\w'と'\k'の使用です。後者は'iskeyword'に基づき、アクセントつきの文 +主な違いは"\w"と"\k"の使用です。後者は'iskeyword'に基づき、アクセントつきの文 字や他の言語固有の文字を含むこともできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |/\1| + |/\(| + |/\)| + |/\<| + |/\>| + |/\w| + |/\k| + |/\+| + |/\_x| + |'iskeyword'| - :help /\1 - :help /\( - :help /\) - :help /\< - :help /\> - :help /\w - :help /\k - :help /\+ - :help /\_x - :help 'iskeyword' -< *faq-11.10* 11.10. ある単語がバッファ中に何回現れるか数えるには? @@ -2223,39 +2652,37 @@ SECTION 11 - テキストを検索する 上のコマンドは単語を含む行の数を数えるだけです。以下のコマンドを使うこともでき ます: > - :%s/\/&/g + :%s/\/&/gn < -{訳注: :%s/\//ng というようにnフラグをつけると、実際には置換を行わず、 - 何箇所置換されるかを知ることができます。} - ファイル中のアルファベットだけからなる単語を数えるにはこうします。 > - :%s/\a\+/&/g + :%s/\a\+/&/gn < 非空白文字だけからなる単語を数えるにはこうします。 > - :%s/\S\+/&/g + :%s/\S\+/&/gn < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |count-items| + |word-count| + |v_g_CTRL-G| + |12.5| + |:s_flags| - :help count-items - :help word-count - :help v_g_CTRL-G - :help 12.5 -< *faq-11.11* 11.11. 検索時にカーソルをマッチした単語の末尾に移動させるには? -検索コマンドにオフセット'e'を指定すると、カーソルをマッチした単語の末尾へ移動 +検索コマンドにオフセット"e"を指定すると、カーソルをマッチした単語の末尾へ移動 させることができます。例 > /mypattern/e < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |search-offset| + |/| - :help search-offset - :help / -< *faq-11.12* 11.12. 空行を検索するには? @@ -2267,14 +2694,15 @@ SECTION 11 - テキストを検索する /^\s*$ < -さらなる情報については以下を参照してください。 > +後者は空白のみで構成される行と一致しますが、前者は真の空行と一致します。さらなる +情報については以下を参照してください。 + + |/^| + |/$| + |/\s| + |/star| + |search-commands| - :help /^ - :help /$ - :help /\s - :help /* - :help search-commands -< *faq-11.13* 11.13. 1つの文字だけを含む行を検索するには? @@ -2282,57 +2710,58 @@ SECTION 11 - テキストを検索する /^\s*\a\s*$ < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |/^| + |/\a| + |/\s| + |/star| + |/$| - :help /^ - :help /\a - :help /\s - :help /* - :help /$ -< *faq-11.14* 11.14. 複数のファイルから文字列を検索し、置換するには? -":argdo", ":bufdo", ":windo"コマンドを使うと複数のファイルに対してexコマンドを -実行することができます。例: > +`:argdo`, `:bufdo`, `:windo`, `:tabdo`コマンドを使うと複数のファイルに対してex +コマンドを実行することができます。例: > - :argdo %s/foo/bar/g + :argdo %s/foo/bar/g|upd < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:argdo| + |:bufdo| + |:windo| + |:tabdo| - :help :argdo - :help :bufdo - :help :windo -< *faq-11.15* -11.15. マップ中で置換コマンド":s"を使っています。検索が失敗したときマップが途 +11.15. マップ中で置換コマンド`:s`を使っています。検索が失敗したときマップが途 切れてしまいます。置換が失敗したときにもマップの次のコマンドを続けてほ しいのですが、どうすればできますか? -置換コマンドに対して'e'フラグを指定すると、パターンが見つからなかったときも +置換コマンドに対して"e"フラグを指定すると、パターンが見つからなかったときも マップの他のコマンドを続行します。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:s_flags| - :help :s_flags -< *faq-11.16* 11.16. 行からある文字がn回目に現れる箇所を検索するには? -行中からある文字がn回目に現れる箇所を検索するには、'f'コマンドにプリフィックス +行中からある文字がn回目に現れる箇所を検索するには、"f"コマンドにプリフィックス をつけます。例えば、文字@が5回目に現れる箇所を検索するには、5f@とします。ただ しカーソルが行頭にあるものとします。また、1桁目の文字が検索する文字ではないも のとします。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |f| + |F| + |t| + |T| + |;| + |,| - :help f - :help F - :help t - :help T - :help ; - :help , -< *faq-11.17* 11.17. タブ(やその他の文字)を改行文字で置換するには? @@ -2342,25 +2771,56 @@ SECTION 11 - テキストを検索する < 上のコマンドで\rでなく\nを使うと改行文字には置換されないので注意してください。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |sub-replace-special| + |NL-used-for-Nul| + |CR-used-for-NL| - :help sub-replace-special - :help NL-used-for-Nul - :help CR-used-for-NL -< *faq-11.18* 11.18. ASCIIコードで検索する文字を指定するには? "/"コマンド中で、CTRL-Vに続いて10進、16進、8進の値を入力すると、ASCIIコードで その値を持つ文字を検索することができます。ある文字のASCIIコードを知るには -":ascii"や"ga"コマンドが使えます。 +`:ascii`や"ga"コマンドが使えます。 + +例として、ASCIIコードで188 (¼)の文字を検索するには、以下の検索コマンドのいずれ +か一つを使うことができます: > -さらなる情報については以下を参照してください。 > + /188 + /o274 + /xBC + /u00bc +< +次のように[]を使用して、10進、8進、16進の数値で文字を検索することもできます: > + + /[\d188] + /[\o274] + /[\xbc] + /[\u00bc] +< +もしくは、特別なアトム\%d \%o \%x \%uを使うことができます: > + + /\%d188 + /\%o274 + /\%xbc + /\%u00bc +< +または、ダイグラフを使用して文字を入力します。たとえば、この入力は: > - :help i_CTRL-V_digit - :help :ascii - :help ga + /CTRL-K14 < +上記の文字を検索します。 + +さらなる情報については以下を参照してください。 + + |i_CTRL-V_digit| + |:ascii| + |ga| + |/\]| + |/\%d| + |digraphs| + *faq-11.19* 11.19. 長い行を見つけるには? @@ -2368,14 +2828,16 @@ SECTION 11 - テキストを検索する することができます。例えば、80文字以上を含む行を検索するには、このようにします : > - /^.\{80}.*$ - /^.*\%80c.*$ + /^.\{80}.\+$ + /^.*\%>80c.*$ + /^.*\%>80v.*$ < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |/\{| + |/\%c| + |/\%v| - :help /\{ - :help /\%c -< *faq-11.20* 11.20. カレントバッファ内の指定したパターンを含む行を全て表示するには? @@ -2388,16 +2850,21 @@ SECTION 11 - テキストを検索する :g/vim/p < +`:p`はexコマンド`:g`に対して実行されるデフォルトのコマンドで、次のようにも使う +ことができます: > + + :g/vim +< 行番号もいっしょに表示したいならば次のコマンドが使えます: > :g//# < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:global| + |:print| + |:number| - :help :global - :help :print - :help :number -< *faq-11.21* 11.21. 複数行にわたる文字列を検索するには? @@ -2412,49 +2879,140 @@ SECTION 11 - テキストを検索する /Hello\_s\+World < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |27.8| + |pattern-atoms| + |/\_| + |pattern-searches| - :help 27.8 - :help pattern-atoms - :help /\_ - :help pattern-searches -< *faq-11.22* 11.22. バッファの指定した範囲内から検索するには? 正規表現のアトム\%>lと\% - /white\%>10l\%<20l + /white\%>9l\%<31l +< +さらなる情報については以下を参照してください。 + + |/\%l| + + *faq-11.23* +11.23. How do I clear the last searched pattern? + +The last searched pattern is stored in the "/" register. You can clear +this register using the following command: > + + :let @/="" < -さらなる情報については以下を参照してください。 > +To clear the last search pattern whenever a buffer is unloaded, you can use +the following command: > - :help /\%l + :autocmd BufUnload * let @/ = "" < +For more information, read: + + |@/| + |:let-@| + |autocmd-searchpat| + |last-pattern| + + *faq-11.24* +11.24. Why does this pattern "a.\{-}p\@!" not match? + +"\{-}" doesn't just mean "as few as possible", it means "as few as +possible to make the whole pattern succeed". If it didn't match the "p", +the whole pattern would fail (because of the "p\@!") so it does match +the "p". It is a longer match, but it is the shortest match that makes +the whole pattern succeed. + +If you wanted "as few as possible regardless" you would use "\@>", which +basically divides a pattern up so that the pieces either side behave +independently. If the pattern were "a.\{-}\@>p\@!" then ".\{-}" would +always match nothing because that's the smallest match that can succeed +when there are not other restrictions. The whole pattern then would +behave the same as "ap\@!", i.e. it would match any "a" not followed by +a "p"). + +This means, it matches as few as possible "a"s without trying to keep +going until Vim finds the longest match. This means, it will still match +"ap". + + *faq-11.25* +11.25. How can I use "/" within a pattern, without escaping it? + +When using / to search for a pattern, you need to escape all "/" within +the pattern, because they would otherwise terminate the pattern. So you +can't directly search for /usr/share/doc/ but need to search for +\/usr\/share\/doc\/ + +The easiest solution around that, would be to use "?" to start a +backward search and afterwards use / to use the last search-pattern +in forward direction. + +If you have a Vim, that has the eval-feature built in (which needs at +least a normal built or higher), you can also directly paste the pattern +into the search register: + +:let @/ = '/usr/share/doc/' + +Then use "n" to jump to the next occurrence. + +See also the help at + + |@/| + |/| + + *faq-11.26* +11.26. How can I operate on a search match? + +The "gn" command makes it easy to operate on regions of text that match +the current search pattern. By default, it will search forward for the +last used search pattern and visually select the match. If the cursor is +already on the match, it will be visually selected. If you used the "gn" +command after an operator (e.g. "c" to change text), it will be applied +on the match. + +If Visual mode is active before using gn, the visual selection will be +extended until the end of the next match. + +The "gN" commands works similar but searches backwards. + +This allows to repeat simple operations on each match. For example, you +might want to change each occurence of apples by peaches. So you search +using "/apple" then you can use "cgnpeach" to replace the current +match by peach. Now you can use the dot "." command to redo the +replacement for the rest of the buffer. + +See also the help at + + |gn| + |gN| ============================================================================= *faq-12* -SECTION 12 - テキストを変更する +SECTION 12 - テキストを変更する ~ *faq-12.1* 12.1. 行末の空白文字(スペースとタブ)を全て削除するには? -":substitute"コマンドを使ってファイル中から行末の空白文字を全て削除することが +`:substitute`コマンドを使ってファイル中から行末の空白文字を全て削除することが できます: > :%s/\s\+$// < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:%| + |:s| + |/\s| + |/\+| + |/$| - :help :% - :help :s - :help /\s - :help /\+ - :help /$ -< *faq-12.2* 12.2. 連続する空白文字を1個のスペースに置換するには? @@ -2462,13 +3020,17 @@ SECTION 12 - テキストを変更する :%s/ \{2,}/ /g < -さらなる情報については以下を参照してください。 > +Alternatively use: > - :help :% - :help :s - :help /\{ - :help :s_flags + :%s/ \+/ /g < +さらなる情報については以下を参照してください。 + + |:%| + |:s| + |/\{| + |:s_flags| + *faq-12.3* 12.3. 連続する空行を1行だけに圧縮するには? @@ -2489,13 +3051,13 @@ SECTION 12 - テキストを変更する には、一時的な行をファイルの末尾に追加し、このコマンドを実行してから一時的な行 を削除します。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:v| + |:join| + |cmdline-ranges| + |collapse| - :help :v - :help :join - :help cmdline-ranges - :help collapse -< *faq-12.4* 12.4. ファイル中の空行を全て削除するには?空白文字だけを含む行を全て削除するに は? @@ -2519,31 +3081,31 @@ SECTION 12 - テキストを変更する "yiw" (yank inner word without whitespace) または "yaw" (yank a word with whitespace)でカーソル下の単語をコピー/ヤンクできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |04.6| + |04.8| + |iw| + |yank| + |text-objects| + |objects| - :help 04.6 - :help 04.8 - :help iw - :help yank - :help text-objects - :help objects -< *faq-12.6* 12.6. 行全体ではなく、行内のある位置からある位置までをヤンクするには? ヤンクオペレータ(y)に移動コマンドを指定すれば、行内のある位置から別の位置まで をヤンクすることができます。例えば、現在のカーソル位置から次のxという文字まで をヤンクするにはyfx, Fx, tx, Txのどれかを使います。n桁目までをヤンクするには -n|を使います。次に'word'が現れる場所までをヤンクするには/wordとします。別の行 -のn桁目までをヤンクするには、まず'ma'で位置をマークし、ヤンク開始位置まで移動 +n|を使います。次に"word"が現れる場所までをヤンクするには/wordとします。別の行 +のn桁目までをヤンクするには、まず"ma"で位置をマークし、ヤンク開始位置まで移動 してt`a(バッククォートであることに注意)でマークまでをヤンクします。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |yank| + |motion.txt| + |04.6| - :help yank - :help motion.txt - :help 4.6 -< *faq-12.7* 12.7. 現在のレジスタの中身に追加ヤンクするには? @@ -2552,12 +3114,12 @@ n|を使います。次に'word'が現れる場所までをヤンクするには するには、レジスタ名"A"を使います。レジスタ名に小文字を使うと、レジスタの中身 は新しいテキストで上書きされてしまいます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |quote| + |quote_alpha| + |10.1| - :help quote - :help quote_alpha - :help 10.1 -< *faq-12.8* 12.8. 複数行にわたる文全体をヤンクするには? @@ -2566,19 +3128,19 @@ n|を使います。次に'word'が現れる場所までをヤンクするには y) < -文の内側にいるときは'yi)'で文をヤンクすることができます。 +文の内側にいるときは"yi)"で文をヤンクすることができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |yank| + |{motion}| + |object-motions| + |04.6| - :help yank - :help {motion} - :help object-motions - :help 4.6 -< *faq-12.9* 12.9. あるパターンを含む行全てをヤンクするには? -":global"を使えばあるパターンを含む行全てをヤンクし、その後そのレジスタの中身 +`:global`を使えばあるパターンを含む行全てをヤンクし、その後そのレジスタの中身 をバッファにペーストすることができます: > :let @a='' @@ -2589,20 +3151,33 @@ n|を使います。次に'word'が現れる場所までをヤンクするには ていることに注意してください。そして"apコマンドでレジスタ"a"の中身をバッファに ペーストすることができます。 -さらなる情報については以下を参照してください。 > +If you only want to collect all matches, you can use a different +approach. For that run the `:s` command with the flags "gn" so that it +won't actually change the buffer ("n" flag) but select each match ("g" +flag). Combining this with the "\=" part in the replacement part, you +can copy each match to e.g. a list. Altogether this looks like this: > - :help :g - :help :y - :help let-register - :help quote_alpha - :help put - :help registers - :help :registers + :let list=[] + :%s/pattern/\=add(list, submatch(0))/gn < +Now all matches will be in the list and you can post process them as +wanted. + +さらなる情報については以下を参照してください。 + + |:g| + |:y| + |:let-register| + |quote_alpha| + |put| + |registers| + |:registers| + |sub-replace-\=| + *faq-12.10* 12.10. あるパターンを含まない行全てを削除するには? -":v"コマンドを使えば、あるパターンを含まない行全てを削除することができます: > +`:v`コマンドを使えば、あるパターンを含まない行全てを削除することができます: > :v/pattern/d < @@ -2610,126 +3185,129 @@ n|を使います。次に'word'が現れる場所までをヤンクするには :g!/pattern/d < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:v| + |:g| - :help :v - :help :g -< *faq-12.11* 12.11. "pattern"を含む全ての行の前に行を追加するには? 以下のコマンドを使うと、"pattern"を含む行全ての前に行を追加することができま す: > - :g/pattern/normal Oi + :g/pattern/normal! Oi < または追加する行をYでヤンクし、次のコマンドでそれを追加することができます: > :g/pattern/put! < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:g| + |:put| + |insert| + |0| - :help :g - :help :put - :help insert - :help 0 -< *faq-12.12* 12.12. 前の行が特定のパターンを含んでいる行に対して操作を行うには? -":global"を使えば、前の行が特定のパターンを含んでいる行に対して操作を行うこと +`:global`を使えば、前の行が特定のパターンを含んでいる行に対して操作を行うこと ができます: > :g//+{cmd} < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:g| + |:range| - :help :g - :help :range -< *faq-12.13* 12.13. あるパターンを含む行全てに対してコマンドを実行するには? -":global"(:g)コマンドを使えば、あるパターンを含む行全てに対してコマンドを実行 +`:global`(:g)コマンドを使えば、あるパターンを含む行全てに対してコマンドを実行 することができます。 > :g/my pattern/d < -Exコマンドでないコマンドを使いたければ、":normal"を使うことができます: > +Exコマンドでないコマンドを使いたければ、`:normal`を使うことができます: > :g/my pattern/normal {command} < -ノーマルモードコマンドの再帰マッピングを避けたければ代わりに":normal!"を使いま +ノーマルモードコマンドの再帰マッピングを避けたければ代わりに`:normal!`を使いま す("!"に注意)。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:global| + |:v| + |:normal| - :help :global - :help :v - :help :normal -< *faq-12.14* 12.14. カーソル位置の1文字上の文字をカーソル位置にコピーするには? -挿入モードでとするとカーソル位置の1文字上の文字をコピーすることができ -ます。同じようにで1文字下の文字をコピーすることができます。 +挿入モードでCTRL-Yとするとカーソル位置の1文字上の文字をコピーすることができ +ます。同じようにCTRL-Eで1文字下の文字をコピーすることができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |i_CTRL-Y| + |i_CTRL-E| - :help i_CTRL-Y - :help i_CTRL-E -< *faq-12.15* 12.15. 挿入モードに入らずに現在行の前/後に空行を挿入するには? -":put"を使えば空行を挿入できます。例えば、次を実行してみてください: > +`:put`を使えば空行を挿入できます。例えば、次を実行してみてください: > :put ='' :put! ='' < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:put| - :help :put -< *faq-12.16* 12.16. カレントファイルの名前をカレントバッファに挿入するには? カレントファイルの名前をカレントバッファに挿入するにはいくつかの方法がありま す。挿入モードでは%または=expand("%")でできます。ノーマルモードでは -":put =@%"でできます。 +`:put =@%`でできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |i_CTRL-R| + |expand()| + |!!| - :help i_CTRL-R - :help expand() - :help !! -< *faq-12.17* 12.17. レジスタの中身をカレントバッファに挿入するには? -挿入モードではの中身を挿入することができます。例え -ば、aでレジスタ"a"の中身をカレントバッファに挿入できます。 +挿入モードではの中身を挿入することができます。例え +ば、aでレジスタ"a"の中身をカレントバッファに挿入できます。 -ノーマルモードでは":put "での中身を挿入できます。例えば、 -":put d"でレジスタ"d"の中身をカレントバッファに挿入できます。 +ノーマルモードでは`:put `での中身を挿入できます。例えば、 +`:put d`でレジスタ"d"の中身をカレントバッファに挿入できます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |i_CTRL-R| + |i_CTRL-R_CTRL-R| + |i_CTRL-R_CTRL-O| + |i_CTRL-R_CTRL-P| + |:put| - :help i_CTRL-R - :help :put -< *faq-12.18* 12.18. 行末を越えてカーソルを移動し、テキストを挿入するには? -オプション"virtualedit"をセットすれば行末を越えてカーソルを移動し、行末の先に +オプション'virtualedit'をセットすれば行末を越えてカーソルを移動し、行末の先に 文字を追加することができます。仮想モードを開始するにはこうします。 > :set virtualedit=all < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'virtualedit'| - :help 'virtualedit' -< *faq-12.19* 12.19. カーソル下の単語(例えばjunk)を"foojunkbar"に置き換えるには? @@ -2744,52 +3322,53 @@ Exコマンドでないコマンドを使いたければ、":normal"を使うこ < またはciwfoo"barとしてもできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:substitute| + |expand()| + |col()| + |/\%c| - :help :substitute - :help expand() - :help col() - :help /\%c -< *faq-12.20* 12.20. ディレクトリ中の全てのファイルに対して特定のテキストを置換するには? -"argdo"を使えば、引数として指定されたファイル全てに対して置換コマンドを実行す +`:argdo`を使えば、引数として指定されたファイル全てに対して置換コマンドを実行す ることができます: > :args * :argdo %s///ge | update < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:args_f| + |:argdo| + |:s_flags| - :help :args_f - :help :argdo - :help :s_flags -< *faq-12.21* 12.21. ファイル中に数字が書かれています。これを増加・減少させるには? CTRL-Aで数字を増加、CTRL-Xで減少させることができます。また、カウントを指定すれ ば増加・減少させる数を指定することができます。この機能は10進、8進、16進の数字 -に対して適用することができます。 +に対して適用することができます。You can change the base used by Vim for this +operation by modifying the 'nrformats' option. -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help CTRL-A - :help CTRL-X - :help 'nrformats' -< + |26.2| + |CTRL-A| + |CTRL-X| + |'nrformats'| *faq-12.22* -12.22. ":substitute"で最後に検索したパターンを再利用するには? +12.22. `:substitute`で最後に検索したパターンを再利用するには? -":substitute"で検索パターンを指定しなければ、最後に検索したパターンを再利用す +`:substitute`で検索パターンを指定しなければ、最後に検索したパターンを再利用す ることができます: > :s/pattern/newtext/ :s//sometext/ < -2回目の":s"では、検索パターンが指定されていないので、最初の":s"のパターンが使 +2回目の`:s`では、検索パターンが指定されていないので、最初の`:s`のパターンが使 われます。 検索パターンは変えたいが、置換語を同じものにしたい場合は、チルダ文字を使いま @@ -2797,18 +3376,18 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :s/newpattern/~/ < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:s| + |:&| + |:~| + |&| + |sub-replace-special| - :help :s - :help :& - :help :~ - :help & - :help sub-replace-special -< *faq-12.23* -12.23. ":substitute"を使って大文字・小文字を入れかえるには? +12.23. `:substitute`を使って大文字・小文字を入れかえるには? -":substitute"の置換文字列に特殊文字を使えば、マッチした文字列の大文字・小文字 +`:substitute`の置換文字列に特殊文字を使えば、マッチした文字列の大文字・小文字 を入れかえることができます。例えば、文字列"MyString"を全て大文字にするには、以 下のコマンドを使うことができます: > @@ -2822,27 +3401,27 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |sub-replace-special| + |:substitute| + |/\U| + |/\L| + |/\u| - :help sub-replace-special - :help :substitute - :help \U - :help \L - :help \u -< *faq-12.24* 12.24. キーボード上に無い文字を入力するには? ダイグラフを使えば、キーボード上に無い文字を入力することができます。現在定義さ -れているダイグラフを全て表示するには":digraphs"を使います。":digraphs"を使えば +れているダイグラフを全て表示するには`:digraphs`を使います。`:digraphs`を使えば リストに新しいダイグラフを追加できます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |digraphs| + |'digraph'| + |24.9| - :help digraphs - :help 'digraphs' - :help 24.9 -< *faq-12.25* 12.25. ダイグラフのどれか、または全てを削除するコマンドはありますか? @@ -2855,48 +3434,48 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま が消されるだけです。バックスペースキーで前回の挿入モードで入力した文字 を消すには? -'backspace'をセットすれば挿入モードで前回入力した文字を削除することができます: > +これは伝統的なViの動作です。'backspace'オプションをセットすれば挿入モードで前回 +入力した文字を削除することができます: > :set backspace=indent,eol,start < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'backspace'| + |i_backspacing| - :help 'backspace' -< *faq-12.27* 12.27. 72文字より長くて"+"で終わり、次行に折り返されている行があります。このよ うな行をすばやく連結させるには? -":global"を使えばそのような行を検索・連結できます: > +`:global`を使えばそのような行を検索・連結できます: > :g/+$/j < しかしこれは2行ごとに連結するだけです。連続する"+"で終わる行を連結する、より複 雑な2つの例が以下の通りです: > - :g/*$/,/\(^\|[^+]\)$/j + :g/+$/,/\(^\|[^+]\)$/j :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j < -{訳注: 1番目の例は :g/+$/,/\(^\|[^+]\)$/j の間違いだと思う。} +さらなる情報については以下を参照してください。 -さらなる情報については以下を参照してください。 > + |:g| + |:j| + |:mark| - :help :g - :help :j - :help :mark -< *faq-12.28* 12.28. 文字単位でヤンクされたテキストを新しい行にペーストするには? -":put"を使えば文字単位でヤンクされたテキストを新しい行にペーストできます: > +`:put`を使えば文字単位でヤンクされたテキストを新しい行にペーストできます: > :put =@" < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:put| + |quote_=| - :help :put - :help quote_= -< *faq-12.29* 12.29. 単語・文字・テキストのブロックの大文字小文字を入れかえるには? @@ -2913,44 +3492,53 @@ CTRL-Aで数字を増加、CTRL-Xで減少させることができます。ま たは"{Visual}~"とすればテキストのブロックの大文字・小文字を入れかえることがで きます。 -さらなる情報については以下を参照してください。 > +If you set 'tildeop' the "~" command behaves like an operator and expects +a motion command to act on. If you have > - :help case + :set tildeop < +and you want to change the case from the current cursor position to the end +of line, simply use "~$". + +さらなる情報については以下を参照してください。 + + |case| + |'tildeop'| + *faq-12.30* 12.30. キーボード上にないASCII文字を入力するには? キーボード上にないASCII文字を入力するには、CTRL-Vを押してからそのASCIIコードを 入力します。特別なASCII文字を入力するのにダイグラフを使うこともできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |i_CTRL-V_digit| + |digraphs| + |45.5| - :help i_CTRL-V_digit - :help digraphs - :help 45.5 -< *faq-12.31* 12.31. ファイル中の印字不能文字を置換するには? 印字不能文字を置換するには、まずその文字のASCIIコードを知らなければなりませ -ん。exコマンド":ascii"またはノーマルモードコマンド"ga"を使ってカーソル下の文字 +ん。exコマンド`:ascii`またはノーマルモードコマンド"ga"を使ってカーソル下の文字 のASCIIコードを知ることができます。 CTRL-Vに続けて10進の数字1-255(最初に0をつけてばならない)またはxと16進の数字 00-FF、または8進の数字0-0377(最初に0をつける)またはuと16進の数字0-FFFFまたは Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力することができます。 -別の方法としては、":digraphs"を使って、全文字に対するダイグラフと共にそれらの +別の方法としては、`:digraphs`を使って、全文字に対するダイグラフと共にそれらの 10進値プラスアルファを表示することです。CTRL-Kに続けて英数字を2つ(ダイグラフ) を入力すれば印字不能文字を入力することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:ascii| + |i_CTRL-V| + |i_CTRL-V_digit| + |:digraphs| - :help :ascii - :help i_CTRL-V - :help i_CTRL-V_digit - :help :digraphs -< *faq-12.32* 12.32. バッファから重複した行を削除するには? @@ -2959,58 +3547,95 @@ Uと16進の数字0-7FFFFFFFを入力すれば、印字不能文字を入力す :command -range=% Uniq ,g/^\%<l\(.*\)\n\1$/d < -上のコマンドを.vimrcに追加し、":Uniq"を実行すると重複した行が削除されます。 +上のコマンドを.vimrcに追加し、`:Uniq`を実行すると重複した行が削除されます。 *faq-12.33* 12.33. ファイル中の全ての行の前に行番号をつけるには? +You can prefix the lines in a file with the corresponding line number in +several ways. Some of them are listed below: > 行番号をつけるにはいくつかの方法があります。以下はその例です: > :%s/^/\=line('.'). ' ' - :%s/^/\=strpart(line(".")." ", 0, 5) - :g/^/exec "s/^/".strpart(line(".")." ", 0, 4) + :%s/^/\=printf('%5d ', line('.'))/ + :%s/^/\=strpart(line('.').'. ', 0, 5) + :%s/^/\=strpart(' ', strlen(line('.'))).line('.').'. ' < -さらなる情報については以下を参照してください。 > +The last two commands will pad the line numbers with space characters. The +last command will right align the numbers and the command before that will +left align the numbers. - :help sub-replace-special - :help line() - :help expr6 - :help strpart() - :help :execute - :help :global +If you don't want to number consecutive lines but rather non-consecutive +regions, you can also use this idiom: > + + :let i = 1 + :g/TODO/s/^/\=printf('%2d.',i)|let i+=1 < +This first initializes the variable i with 1. In the next line, a `:g` +command is used to perform a substitute command only on lines, that +match "TODO". After the substitute command has taken place, the variable +i will be incremented by 1. + +さらなる情報については以下を参照してください。 + + |sub-replace-special| + |line()| + |expr6| + |strpart()| + |printf()| + |:execute| + |:global| + *faq-12.34* 12.34. 2つの文字・単語・行を入れ換えるには? -"xp"で2つの文字を入れ換えることができます。'x'でカーソル下の文字を削除し、'p' +"xp"で2つの文字を入れ換えることができます。"x"でカーソル下の文字を削除し、"p" で削除された文字をカーソル下の文字の後ろにペーストします。その結果、2つの文字 が入れ換わります。 2つの単語を入れ換えるには"deep"とします(最初の単語の前の空白にカーソルをおいて 実行します)。 -2つの行を入れ換えるには"ddp"とします。'dd'で現在行を削除し、'p'で現在行の後ろ +2つの行を入れ換えるには"ddp"とします。"dd"で現在行を削除し、"p"で現在行の後ろ に削除された行をペーストします。その結果、2つの行が入れ換わります。 以上の操作はどれも無名レジスタ"の中身を変更します。 -":m +"とすると無名レジスタの中身を変更することなく2つの行を入れ換えることがで +`:m +`とすると無名レジスタの中身を変更することなく2つの行を入れ換えることがで きます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help x - :help p - :help dd - :help d - :help e - :help linewise-register - :help quotequote - :help :move + |x| + |p| + |dd| + |d| + |e| + |linewise-register| + |quotequote| + |:move| + + *faq-12.35* +12.35. How do I change the characters used as word delimiters? + +Vim uses the characters specified by the 'iskeyword' option as word +delimiters. The default setting for this option is "@,48-57,_,192-255". + +For example, to add ":" as a word delimiter, you can use > + + :set iskeyword+=: < +To remove "_" as a word delimiter, you can use > + + :set iskeyword-=_ +< +さらなる情報については以下を参照してください。 + + |'iskeyword'| + |word| ============================================================================= -SECTION 13 - 挿入モードでの補完 +SECTION 13 - 挿入モードでの補完 ~ *faq-13.1* 13.1. 挿入モードで単語や行を補完するには? @@ -3025,30 +3650,36 @@ CTRL-Pは次の候補を後方から検索します。 Vimは以下の要素の補完をサポートしています: > - CTRL-X CTRL-F ファイル名 +< CTRL-X CTRL-L 行全体 - CTRL-X CTRL-D マクロ定義 (インクルードファイル中のものも) - CTRL-X CTRL-I カレントファイルとインクルードファイル + CTRL-X CTRL-N 現在のファイル中の単語 CTRL-X CTRL-K 辞書中の単語 CTRL-X CTRL-T シソーラス中の単語 + CTRL-X CTRL-I カレントファイルとインクルードファイル CTRL-X CTRL-] タグ + CTRL-X CTRL-F ファイル名 + CTRL-X CTRL-D マクロ定義 (インクルードファイル中のものも) CTRL-X CTRL-V Vimコマンドライン + CTRL-X CTRL-U ユーザー定義の補完 + CTRL-X CTRL-O オムニ補完 < -さらなる情報については以下を参照してください > +ユーザー定義の補完とオムニ補完はよくファイルタイププラグインでセットされます。 + +さらなる情報については以下を参照してください。 + + |24.3| + |ins-completion| - :help 24.3 - :help ins-completion -< *faq-13.2* 13.2. 挿入モードでファイル名を補完するには? 挿入モードでCTRL-X CTRL-Fを使うとカレント行のカーソルの前の文字列で始まるファ イル名を補完することができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |compl-filename| - :help compl-filename -< *faq-13.3* 13.3. 挿入モードで単語を補完するのにCTRL-P/CTRL-Nを使っています。 今補完した単語の後に現れる単語を補完するには? @@ -3056,52 +3687,60 @@ Vimは以下の要素の補完をサポートしています: > CTRL-X CTRL-NとCTRL-X CTRL-Pを使うと今補完した単語の後に続く単語を補完すること ができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 - :help i_CTRL-X_CTRL-P - :help i_CTRL-X_CTRL-N - :help ins-completion -< + |i_CTRL-X_CTRL-P| + |i_CTRL-X_CTRL-N| + |ins-completion| ============================================================================= *faq-14* -SECTION 14 - テキストの整形 +SECTION 14 - テキストの整形 ~ *faq-14.1* 14.1. 折り返された行の末尾に改行を挿入するには? -'gq'コマンドを使うと段落を整形することができます。これは現在の'textwidth'の設 -定にしたがってテキストを整形します。 +"gq"コマンドを使うと段落を整形することができます。これは現在の'textwidth'の設 +定にしたがってテキストを整形します。代わりに"gw"コマンドを使うこともできます。 +これは"gq"と同様に整形を行いますがカーソル位置は変わりません。 オペレータgqは移動コマンドと組み合わせて、テキストの範囲に対して実行できます。 例: > gqgq - 現在行を整形する gqap - 現在の段落を整形する + gwap - Format current paragraph (and don't move cursor) gq3j - 現在行と下3行を整形する < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |gq| + |gw| + |formatting| + |usr_25.txt| + |motion.txt| - :help gq - :help formatting - :help usr_25.txt - :help motion.txt -< *faq-14.2* 14.2. 1行がn文字以下になるように長い行を整形するには? +You can set the 'textwidth' option to control the number of characters that +can be present in a line. For example, to set the maximum width of a line +to 70 characters, you can use the following command: > まず'textwidth'を望みの値に設定します: > set textwidth=70 < +Now to break the long lines in a file to the length defined by the +'textwidth' option, you can use > そして、'textwidth'で設定された長さで行を折り返すにはこうします > :g/./normal gqq < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'textwidth'| + |gq| - :help gq -< *faq-14.3* 14.3. 短い行を連結して段落を形成するには? @@ -3118,12 +3757,12 @@ SECTION 14 - テキストの整形 :'a,'bg/\S/normal gq} < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |gq| + |G| + |gqq| - :help gq - :help G - :help gqq -< *faq-14.4* 14.4. 箇条書きや番号つきリストを整形するには? @@ -3138,7 +3777,7 @@ SECTION 14 - テキストの整形 - this is a test. this is a test. this is a test. this is a test. this is a test. -'formatoptions'に'n'フラグをつけると、テキストの桁をそろえることができます。 > +'formatoptions'に"n"フラグをつけると、テキストの桁をそろえることができます。 > :set fo+=n < @@ -3146,11 +3785,12 @@ SECTION 14 - テキストの整形 す。このオプションを機能させるためには、'autoindent'をセットしなければなりませ ん。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'formatoptions'| + |fo-table| + |format-comments| - :help 'formatoptions' - :help fo-table -< *faq-14.5* 14.5. 挿入モードで行をインデントするには? @@ -3159,15 +3799,15 @@ SECTION 14 - テキストの整形 削除することができます。また、CTRL-O >>とCTRL-O <<でも挿入モード中に現在行をイ ンデントすることができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |i_CTRL-T| + |i_CTRL-D| + |i_0_CTRL-D| + |i_CTRL-O| + |>>| + |<<| - :help i_CTRL-T - :help i_CTRL-D - :help i_0_CTRL-D - :help i_CTRL-O - :help >> - :help << -< *faq-14.6* 14.6. ファイル全体を整形・インデントするには? @@ -3178,26 +3818,26 @@ gg=Gでファイル全体を整形・インデントすることができます G - ファイルの末尾まで < という意味になります。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |gg| + |=| + |G| + |'formatprg'| + |C-indenting| - :help gg - :help = - :help G - :help 'formatprg' - :help C-indenting -< *faq-14.7* 14.7. 現在のファイルのインデントを増やす/減らすには? -'>>'と'<<'で現在行のインデントを増やしたり減らすことができます。 +">>"と"<<"で現在行のインデントを増やしたり減らすことができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |shift-left-right| + |>>| + |<<| + |'shiftwidth'| - :help shift-left-right - :help >> - :help << - :help 'shiftwidth' -< *faq-14.8* 14.8. ブロックまたは行のグループをインデントするには? @@ -3207,61 +3847,64 @@ gg=Gでファイル全体を整形・インデントすることができます :10,20> < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |shift-left-right| + |v_>| + |v_<| + |:<| + |:>| - :help shift-left-right - :help v_> - :help v_< - :help :< - :help :> -< *faq-14.9* 14.9. >または<キーで行をインデントすると、'tabstop'で設定した値でなく、標準的 なタブストップ値の8が使われます。なぜですか? +The number of spaces used when lines are indented using the ">" operator is +controlled by the 'shiftwidth' option. The 'tabstop' setting is only +used, when the 'shiftwidth' option is zero. > オペレータ">"でインデントしたとき挿入されるスペースの数は'shiftwidth'オプショ ンで決まります。'tabstop'の設定はインデントには適用されません。インデントで挿 入されるスペースの数を変更するには、こうします: > :set shiftwidth=4 < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'shiftwidth'| + |>>| + |'softtabstop'| - :help 'shiftwidth' - :help >> - :help 'softtabstop' -< *faq-14.10* 14.10. オートインデントを無効にするには? デフォルトではオートインデントは無効になっています。設定ファイル(.vimrc, -.gvimrc)のインデントに関する設定を確認してください。":filetype indent on"が行 +.gvimrc)のインデントに関する設定を確認してください。`:filetype indent on`が行 われていないことを確かめてください。もし行われていたなら、これを削除してくださ い。また、好みに応じて'autoindent', 'smartindent', 'cindent', 'indentexpr'の値 を確かめ、これらをオフにしてもよいでしょう。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |:filetype-indent-off| + |'autoindent'| + |'smartindent'| + |'cindent'| + |'indentexpr'| - :help :filetype-indent-off - :help 'autoindent' - :help 'smartindent' - :help 'cindent' - :help 'indentexpr' -< *faq-14.11* 14.11. メールを編集するときは自動的に'textwidth'オプションをある値にするように するには? -'FileType'自動コマンドを使えば'textwidth'を設定することができます: > +"FileType"オートコマンドを使えば'textwidth'を設定することができます: > autocmd FileType mail set tw= < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |:autocmd| + |FileType| + |usr_43.txt| - :help :autocmd - :help FileType - :help usr_43.txt -< *faq-14.12* 14.12. 自動的に改行を挿入させることはできますか? @@ -3270,113 +3913,211 @@ gg=Gでファイル全体を整形・インデントすることができます :set textwidth=75 < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'textwidth'| + |ins-textwidth| + |'formatoptions'| + |fo-table| + |formatting| - :help textwidth - :help ins-textwidth - :help 'formatoptions' - :help fo-table - :help formatting -< *faq-14.13* -14.13. ファイル中に^Mという記号がたくさん表示されます。'fileformat'を'dos'にし - たり'unix'にしたり'mac'にしたりしてみましたが、改善できません。これらの +14.13. ファイル中に^Mという記号がたくさん表示されます。'fileformat'を"dos"にし + たり"unix"にしたり"mac"にしたりしてみましたが、改善できません。これらの 記号を表示させなくするには? ファイルを読み込むとき、そのファイルのフォーマットは以下のようにして決定されま す: -- 全ての行が改行文字()で終わっていればファイルフォーマットは'unix'です。 +- 全ての行が改行文字()で終わっていればファイルフォーマットは"unix"です。 - 全ての行がキャリッジリターン文字()に続く改行文字()で終わっていれば - ファイルフォーマットは'dos'です。 + ファイルフォーマットは"dos"です。 - 全ての行がキャリッジリターン文字()で終わっていればファイルフォーマットは - 'mac'です。 + "mac"です。 一部の行がで終わっていて、一部の行がに続くで終わっているとき、ファ -イルフォーマットは'unix'になります。 +イルフォーマットは"unix"になります。 +You can change the format of the current file, by saving it explicitly in +dos format: > カレントファイルのフォーマットを変更するには、'fileformat'を変更し、ファイルを 保存します: > - :set fileformat=dos - :w + :w ++ff=dos < カレントファイルのフォーマットを表示するにはこうします > :set fileformat? < +The above behavior is also controlled by the 'fileformats' option. You can +try the following commands: > + + :set fileformats+=unix + :e + :set fileformat=unix + :w +< +To remove the carriage return () character at the end of all the lines +in the current file, you can use the following command: > + + :%s/\r$// +< +To force Vim to use a particular file format, when editing a file, you can +use the following command: > + + :e ++ff=dos filename +< 以上の動作は'fileformats'によっても変わります。次のコマンドを試してみてくださ い: > -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'fileformats'| + |'fileformat'| + |file-formats| + |DOS-format-write| + |Unix-format-write| + |Mac-format-write| + |dos-file-formats| + |23.1| + |++ff| - :help 'fileformats' - :help 'fileformat' - :help file-formats - :help DOS-format-write - :help Unix-format-write - :help Mac-format-write - :help dos-file-formats - :help 23.1 -< *faq-14.14* 14.14. 他のアプリケーションからVimのバッファへテキストを貼り付けたとき、挿入さ れたテキストの桁(インデント)が狂ってしまいます。これを直すには? -テキストのインデントが狂うのはインデントに関する様々なオプション(autoindent, -smartindent, textwidth)によります。テキストをVimに貼り付ける前に'paste'をセッ -トしてください: > +When you paste text into a GUI Vim using the mouse, Vim is able to +detect that you are pasting text. So all the indentation related +settings (like autoindent, smartindent, cindent, etc.) are ignored and +the text is pasted literally. + +When pasting text into a Vim running in a terminal (like xterm) using +the mouse, Vim may not be able to detect that you are pasting text. This +depends on several things: the capability of the terminal to pass the +mouse events to Vim, Vim is compiled to handle mouse events and access +the clipboard, the DISPLAY variable is set properly, the Vim 'mouse' +option is set correctly. + +If Vim is able to detect that you are pasting text using the mouse, then +the pasted text will be inserted literally. + +If Vim is not able to detect that you are pasting using the mouse, then +it will see the pasted text as though you literally typed the text. +After the first line from the pasted text is inserted, when Vim +encounters the newline character, because of the indentation settings, +the next line will start indented. The spaces at the beginning of the +second line in the pasted text will be inserted leading to additional +indentation. This will be repeated for subsequent lines. So the pasted +text will be inserted with stair case indentation. - :set paste +You can fix this problem in a terminal Vim in several ways: + +1. Build Vim with the +mouse and +xterm_clipboard compile-time options. + The normal or big or huge build of Vim includes these options. Set + the 'mouse' option to either "a" or include "i". When pasting text + using the mouse, don't press the Shift key. This will work only if + Vim can access the X display. For more information, read the + following Vim help topics: + + |+feature-list| + |'mouse'| + || + |x11-selection| + |xterm-clipboard| + +1.1 Some Linux distributions build their terminal vim packages + without X support. This makes no sense and leaves many users + with the impression that Vim in terminal mode doesn't support + some operations such as properly pasting text with a mouse. > + + If your distribution includes gvim, which it almost certainly + does these days, the solutions to this include the following. < -テキストをペーストしたらこのオプションをオフにします: > + a) Start Vim as > - :set paste! + gvim -v < -レジスタ*によってクリップボードを使用できる場合はCTRL-R CTRL-O *とするとインデ -ントなしでテキストを貼り付けることができます。 + b) Put this alias in your shell's configuration file, e.g. + ~/.bashrc: > -さらなる情報については以下を参照してください > + alias vim='gvim -v' +< + c) Put the following command in a file named "vim" and put that + file in your ~/bin directory: > + + gvim -v "$@" +< + d) Link the distribution's gvim to ~/bin/vim with the following + command, which needs to be executed only once. > - :help 'paste' - :help 'pastetoggle' - :help i_CTRL-R_CTRL_O - :help clipboard - :help xterm-clipboard - :help gui-clipboard + ln -s $(which gvim) ~/bin/vim < + For c) and d), make sure that ~/bin precedes /usr/bin in your + PATH. + +2. Paste the text using the CTRL-R CTRL-O * command. This will paste + the text literally without any automatic indentation. If you want to + paste the text and then fix the indentation, then you can use CTRL-R + CTRL-P *. These commands will work only if Vim can access the X + display. For more information, read the following Vim help topics: + + |i_CTRL-R_CTRL-O| + |i_CTRL-R_CTRL-P| + |quotestar| + +3. Set the 'paste' option before pasting the text. This option will + disable the effect of all the indentation related settings. Make + sure to turn off this option using `:set nopaste` after pasting the + text. Otherwise the Vim indentation feature will not work. Do not + permanently set the 'paste' option in your .vimrc file. If you are + going to repeat these steps often, then you can set the + 'pastetoggle' option to a key. When you press the specified key, + the 'paste' option will be toggled. You can press the key once + before pasting the text and the press the key once after pasting + the text. Note that when the 'paste' option is set, all the + mappings and abbreviations are disabled. For more information, + read the following Vim help topics: + + |'paste'| + |'pastetoggle'| + +You can also refer to the following topics in the user manual: + + |04.7| + |09.3| + *faq-14.15* 14.15. 'wrap'をオンにしていて、とても長い行が折り返されて画面に収まりきらない - とき、まったく何も表示されません。折り返された行の代わりに'@'という記号 + とき、まったく何も表示されません。折り返された行の代わりに"@"という記号 で始まる空の行が表示されます。行が収まるように画面をスクロールする - と'@'は消え、行が表示されるようになります。この挙動の設定はどうやるので + と"@"は消え、行が表示されるようになります。この挙動の設定はどうやるので すか? -'display'オプションを'lastline'に設定すると、'@'を表示する代わりに可能な限り最 +'display'オプションを"lastline"に設定すると、"@"を表示する代わりに可能な限り最 後の行を表示するようになります。 > :set display=lastline < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'display'| - :help 'display' -< *faq-14.16* 14.16. ファイル中の全てのタブ文字をスペースに変換するには? -":retab"を使うとカレントファイル中の全てのタブ文字を'expandtab'と'tabstop'の設 +`:retab`を使うとカレントファイル中の全てのタブ文字を'expandtab'と'tabstop'の設 定にしたがって変換することができます。例えば、全てのタブをスペースに変換するに はこのようにします > :set expandtab :retab < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |:retab| + |'expandtab'| + |'tabstop'| + |25.3| - :help :retab - :help 'expandtab' - :help 'tabstop' - :help 25.3 -< *faq-14.17* 14.17. 後でワードプロセッサーに送るテキストを編集するためのオプションは? @@ -3388,20 +4129,41 @@ smartindent, textwidth)によります。テキストをVimに貼り付ける前 :set textwidth=0 :set showbreak=>>> < -'gk'と'gj'を使うと画面上の行(物理行)単位で上下に移動できます。 -さらなる情報については以下を参照してください > +"gk"と"gj"を使うと画面上の行(物理行)単位で上下に移動できます。 +さらなる情報については以下を参照してください。 - :help 'wrap' - :help 'linebreak' - :help 'textwidth' - :help 'showbreak' - :help gk - :help gj -< + |'wrap'| + |'linebreak'| + |'textwidth'| + |'showbreak'| + |gk| + |gj| + + *faq-14.18* +14.18. How do I join lines without adding or removing any space characters? + +By default, when you join lines using the "J" or `:join` command, Vim will +replace the line break, leading white space and trailing white space with a +single space character. If there are space characters at the end of a line +or a line starts with the ")" character, then Vim will not add a space +character. + +To join lines without adding or removing any space characters, you can use +the gJ or `:join!` commands. + +For more information, read: + + |gJ| + |:join| + |J| + |10.5| + |'joinspaces'| + |'cpoptions'| + |'formatoptions'| ============================================================================= *faq-15* -SECTION 15 - ビジュアルモード +SECTION 15 - ビジュアルモード ~ *faq-15.1* 15.1. 矩形範囲をコピーするには? @@ -3415,24 +4177,24 @@ CTRL-Qにマップされているかもしれません。Windowsマシン上で 通のショートカットを真似するため、しばしばvimrcによってこのスクリプトがsource されています。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |04.4| + |blockwise-visual| + |visual-mode| + |Q_vi| - :help 04.4 - :help blockwise-visual - :help visual-mode - :help Q_vi -< *faq-15.2* 15.2. ファイルの特定の列を削除・変更するには? 矩形選択モードを使えば特定の列を選択してオペレータコマンド(変更・削除・コピー) を適用することができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |visual-block| + |visual-operators| - :help visual-block - :help visual-operators -< *faq-15.3* 15.3. ビジュアル選択した行に対してexコマンドを適用するには? @@ -3442,26 +4204,26 @@ CTRL-Qにマップされているかもしれません。Windowsマシン上で 行します。自動的に選択範囲を示す'<,'>が挿入されます。選択範囲に対してどんなex コマンドでも実行することができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |v_:| + |'<| + |'>| - :help v_: - :help '< - :help '> -< *faq-15.4* 15.4. 矩形選択した範囲に対してexコマンドを適用するには? exコマンドは全て行全体に対してのみ実行されます。テキストを矩形選択してexコマン ドを実行しようとすると、(選択した列だけでなく)選択した行全体に対して実行されて -しまいます。http://vim.sourceforge.net から入手できるプラグインvis.vimを使えば -矩形範囲に対してexコマンドを適用することができます。 +しまいます。https://www.vim.org から入手できるプラグインvis.vimまたはNrrwRgnを +使えば矩形範囲に対してexコマンドを適用することができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |cmdline-ranges| + |10.3| + |cmdline-lines| - :help cmdline-ranges - :help 10.3 - :help cmdline-lines -< *faq-15.5* 15.5. ビジュアルモードでファイル全体を選択するには? @@ -3471,36 +4233,36 @@ ggVGでファイル全体をビジュアル選択することができます。 V - 行単位ビジュアル選択を開始 G - ファイルの末尾へ移動 < -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |gg| + |linewise-visual| + |G| - :help gg - :help linewise-visual - :help G -< *faq-15.6* 15.6. ビジュアル選択してから>キーを押してインデントすると、選択が解除されま す。この範囲に対して操作を続けるため選択したままにするには?(または)最後 に選択された範囲を再選択するには? -'gv'で最後に選択された範囲を再選択できます。またマーク'<と'>を使うと最後に選択 +"gv"で最後に選択された範囲を再選択できます。またマーク'<と'>を使うと最後に選択 された範囲の開始位置と終端に移動することができます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |gv| + |'<| + |'>| - :help gv - :help '< - :help '> -< *faq-15.7* 15.7. ビジュアル選択した範囲の先頭/末尾へ移動するには? -(ビジュアルモードにおいて)'o'コマンドでビジュアル選択した範囲の先頭/末尾へ移動 +(ビジュアルモードにおいて)"o"コマンドでビジュアル選択した範囲の先頭/末尾へ移動 できます。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |v_o| - :help v_o -< *faq-15.8* 15.8. マウスでテキストを選択してからexコマンドを実行しようと:キーを押すと選択 された範囲が文字:で置換されてしまいます。マウスで選択したときもビジュア @@ -3515,65 +4277,69 @@ ggVGでファイル全体をビジュアル選択することができます。 ンドを使うと、このオプションも自動的にセットされます。選択モードはビジュアル モードと同じように見えますが、MS-Windowsの選択モードに似ています。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |Select-mode| + |'selectmode'| + |09.4| + |:behave| - :help Select-mode - :help 'selectmode' - :help 9.4 - :help :behave -< *faq-15.9* 15.9. マウスでテキストを選択するとビジュアルモードでなく選択モードに入ってしま います。なぜですか? マウスでテキストを選択したとき選択モードになるかどうかは'selectmode'オプション によって決まります。ビジュアルモードが始まるようにするには、'selectmode'から -'mouse'の値を除きます: > +"mouse"の値を除きます: > :set selectmode-=mouse < デフォルトでは'selectmode'は空になっていて、常にビジュアルモードが使われるよう になっています。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 + + |'selectmode'| + |Select-mode| + |:behave| - :help 'selectmode' - :help Select-mode - :help :behave -< *faq-15.10* 15.10. 最後にコピー/ペーストされたテキストをビジュアル選択するには? -マーク'['と']を使うと最後にコピー/ペーストされたテキストを選択することができ +マーク'[と']を使うと最後にコピー/ペーストされたテキストを選択することができ ます。マーク'[は最後に変更/ヤンクされたテキストの先頭にセットされ、']はその末 尾にセットされます。この範囲をビジュアル選択するには、'[v']とします。 -さらなる情報については以下を参照してください > +さらなる情報については以下を参照してください。 - :help '[ - :help '] - :help `a - :help v -< + |'[| + |']| + |`a| + |v| ============================================================================= *faq-16* -SECTION 16 - コマンドラインモード +SECTION 16 - コマンドラインモード ~ *faq-16.1* 16.1. コマンドモードまたはexコマンドモードでカレントファイル名を使うには? -コマンドモードでは文字'%'がカレントファイルの名前を表します。いくつかのコマン -ドにおいてはファイル名を取得するためにexpand("%")を使わねばなりません: > +コマンドモードでは文字"%"がカレントファイルの名前を表します。いくつかのコマン +ドにおいてはファイル名を取得するために`expand("%")`を使わねばなりません: > :!perl % < -さらなる情報については以下を参照してください。 > +Another example is to load the latex generated pdf file from the file you +are currently editing: > - :help :_% - :help cmdline-special - :help expand() + :!xpdf %<.pdf < +さらなる情報については以下を参照してください。 + + |:_%| + |cmdline-special| + |expand()| + *faq-16.2* 16.2. Vimのコマンドラインで効率的にテキストを編集するには? @@ -3586,38 +4352,38 @@ Vimのコマンドラインテキストを編集するのにコマンドライ 同様に、検索履歴を"q/"と"q?"で編集することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |cmdline-window| - :help cmdline-window -< *faq-16.3* 16.3. ViモードからExモードに移行するには? -QでViモードからExモードに移行できます。ExモードからViモードに移行するには :vi +QでViモードからExモードに移行できます。ExモードからViモードに移行するには `:vi` を使います。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |Q| + |gQ| + |Ex-mode| + |:vi| - :help Q - :help gQ - :help Ex-mode - :help :vi -< *faq-16.4* 16.4. exコマンドの出力をバッファにコピーするには? exコマンドの出力をバッファにコピーするには、まずそのコマンドの出力をレジスタに -入れます。":redir"で出力をレジスタに入れることができます。例 > +入れます。`:redir`で出力をレジスタに入れることができます。例 > :redir @a :g/HelloWord/p :redir END < -するとレジスタ'a'がexコマンド"g/HelloWord/p"の出力を保持します。ここでレジスタ -'a'の中身をバッファにペーストすることができます。'redir'を使ってexコマンドの出 +するとレジスタ"a"がexコマンド`:g/HelloWord/p`の出力を保持します。ここでレジスタ +"a"の中身をバッファにペーストすることができます。`:redir`を使ってexコマンドの出 力をファイルに送ったり、追加することもできます。 -":global"の前に":silent"を付けると、その行が画面に表示されるのを避けることがで +`:global`の前に`:silent`を付けると、その行が画面に表示されるのを避けることがで きます。 exコマンドの出力をファイルにリダイレクトするには、次の一連のコマンドを使うこと @@ -3627,32 +4393,32 @@ exコマンドの出力をファイルにリダイレクトするには、次の :g/HelloWord/p :redir END < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:redir| + |:silent| - :help :redir - :help :silent -< *faq-16.5* -16.5. コマンドモードでファイル名を補完しようとタブキーを押します。マッチする +16.5. コマンドモードでファイル名を補完しようとキーを押します。マッチする ファイル名が複数ある時、Vimは最初にマッチするファイル名を補完し、マッチ したファイル名全てのリストを表示します。マッチしたファイル名全てを表示す るだけで、最初の候補を補完しないようにするには? 'wildmode'を設定すればコマンドモードでのファイル名補完をカスタマイズすること -ができます。この場合は'wildmode'を'list'にすればよいでしょう: > +ができます。この場合は'wildmode'を"list"にすればよいでしょう: > :set wildmode=list < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'wildmode'| - :help 'wildmode' -< *faq-16.6* 16.6. バッファからコマンドラインにテキストをコピーしたり、コマンドラインから バッファにテキストをコピーするには? バッファからコマンドラインにテキストをコピーするには、バッファからテキストをヤ -ンクした後にコマンドラインでCtrl-R 0を押せばペーストすることができます。また、 +ンクした後にコマンドラインで"0"を押せばペーストすることができます。また、 CTRL-R を使って特定のレジスタにヤンクしてからコマンドラインにペース トすることもできます。CTRL-R CTRL-Wを使うとカーソル下の単語をコマンドラインに ペーストすることができます。 @@ -3666,22 +4432,27 @@ CTRL-R を使って特定のレジスタにヤンクしてからコマ ことです。このコマンドラインウィンドウではVimの全てのコマンドを使ってコマンド ラインを編集することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |c_CTRL-R| + |quote_:| + |cmdline-window| - :help c_CTRL-R - :help quote_: - :help cmdline-window -< *faq-16.7* 16.7. あるコマンドを実行することなくコマンド履歴に入れるには? あるコマンドを実行することなくコマンド履歴に入れるには、キーを押してその コマンドをキャンセルします。 -さらなる情報については以下を参照してください。 > +An alternative solution, is to use the histadd() function like this: > - :help c_ + :call histadd(':', 'echo strftime("%c")') < +さらなる情報については以下を参照してください。 + + |c_| + |histadd()| + *faq-16.8* 16.8. コマンドラインの高さを上げるには? @@ -3689,16 +4460,16 @@ CTRL-R を使って特定のレジスタにヤンクしてからコマ :set cmdheight=2 < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help 'cmdheight' - :help hit-enter - :help 05.7 -< + |'cmdheight'| + |hit-enter| + |05.7| ============================================================================= *faq-17* -SECTION 17 - VIMINFO +SECTION 17 - VIMINFO ~ + *faq-17.1* 17.1. Vimを起動したときviminfoファイルに不正な文字があるとエラーメッセージが出 @@ -3707,13 +4478,13 @@ SECTION 17 - VIMINFO $HOME/.viminfoまたは$HOME/_viminfoファイルを削除すればこのメッセージは出なくな ります。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |viminfo-errors| + |viminfo-file-name| + |viminfo| + |21.3| - :help viminfo-errors - :help viminfo-file-name - :help viminfo - :help 21.3 -< *faq-17.2* 17.2. viminfo機能を無効にするには? @@ -3723,30 +4494,45 @@ $HOME/.viminfoまたは$HOME/_viminfoファイルを削除すればこのメッ :set viminfo="" < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'viminfo'| - :help 'viminfo' -< *faq-17.3* -17.3. Vimのセッションをまたいでマークを保存し、使用するには? +17.3. Vimのセッションをまたいでマーク/コマンドを保存し、使用するには? viminfoを使えばVimのセッションをまたいでマークを保存し、復元することができま す。viminfoファイルを使うには'viminfo'オプションが空でないことを確かめてくださ -い。Vimのマークを保存し、復元するには、'viminfo'オプションに'f'フラグが入って -いないか、'f'に対する値が0より大きくなっていなければなりません。 +い。Vimのマークを保存し、復元するには、'viminfo'オプションに"f"フラグが入って +いないか、"f"に対する値が0より大きくなっていなければなりません。 -さらなる情報については以下を参照してください。 > +You can also use the viminfo file to synchronize the commandline history +across different sessions using `:wvimfo` and `:rviminfo` commands together +with the FocusGained and FocusLost autocommands: > - :help 21.3 - :help viminfo - :help 'viminfo' - :help :wviminfo - :help :rviminfo + augroup viminfo + au! + au FocusLost * wviminfo + au FocusGained * rviminfo + augroup end < +Note, this will only work reliably, when Vim can detect the FocusLost +and FocusGained autocommands correctly. This means it should work with +GVim but might depend on your terminal for konsole vim. + +さらなる情報については以下を参照してください。 + + |21.3| + |viminfo| + |'viminfo'| + |:wviminfo| + |:rviminfo| + |FocusLost| + |FocusGained| ============================================================================= *faq-18* -SECTION 18 - リモート編集 +SECTION 18 - リモート編集 ~ *faq-18.1* 18.1. 既に起動しているgvimでファイルを開くには? Vim 5.xのOpenWithVim.exeと @@ -3764,8 +4550,8 @@ gvim(MyVim) で開くにはこのようにします: > < クライアント-サーバー機能についてのさらなる情報は以下を参照してください。 > - :help client-server -< + |client-server| + *faq-18.2* 18.2. vimサーバーに全てのバッファをディスクに保存するようなコマンドを送るには? @@ -3773,37 +4559,36 @@ gvim(MyVim) で開くにはこのようにします: > $ gvim --servername myVIM --remote-send ":wall" < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |client-server| + |CTRL-\_CTRL-N| + |:wall| - :help client-server - :help CTRL-\_CTRL-N - :help :wall -< *faq-18.3* 18.3. Vimのリモートサーバー機能についてのドキュメントはどこで手に入りますか? -Vimのリモートサーバー機能についての情報はこれを読めば得られます > +Vimのリモートサーバー機能についての情報はこれを読めば得られます - :help client-server -< + |client-server| ============================================================================= *faq-19* -SECTION 19 - オプション +SECTION 19 - オプション ~ *faq-19.1* 19.1. Vimを設定する簡単な方法は? -":options"でオプションウィンドウを開くことができます: > +`:options`でオプションウィンドウを開くことができます: > :options < このウィンドウで全オプションを見て、設定することができます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:options| - :help :options -< *faq-19.2* 19.2. オプションの値をトグルするには? @@ -3817,21 +4602,30 @@ SECTION 19 - オプション :set ignorecase! :set hlsearch! < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |set-option| - :help set-option -< *faq-19.3* 19.3. 現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオプションを設定 するには? -":setlocal"を使うと現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオ +Some of the Vim options can have a local or global value. A local value +applies only to a specific buffer or window. A global value applies to all +the buffers or windows. + +When a Vim option is modified using the `:set` command, both the global and +local values for the option are changed. You can use the `:setlocal` +command to modify only the local value for the option and the `:setglobal` +command to modify only the global value. + +`:setlocal`を使うと現在のバッファ/ウィンドウに対してだけ効果を及ぼすようにオ プションを設定できます: > :setlocal textwidth=70 < 全てのオプションがローカルな値を持つわけではないことに注意してください。そのオ -プションがローカルな値を持てる場合だけ、":setlocal"でバッファ/ウィンドウにロ +プションがローカルな値を持てる場合だけ、`:setlocal`でバッファ/ウィンドウにロ ーカルに設定できます。 また、次のコマンドでもオプションをローカルに設定できます: > @@ -3846,10 +4640,10 @@ SECTION 19 - オプション :set tags=tags\ /usr/tags < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |option-backslash| - :help option-backslash -< *faq-19.5* 19.5. オプション設定をファイルに埋め込むには? @@ -3860,16 +4654,19 @@ SECTION 19 - オプション < こうするとそのCファイルを編集するとき'shiftwidth'が4に設定されます。これが機能 するためには、'modeline'オプションをセットしなければなりません。デフォルトで -'modeline'は設定されています。'modelines'はチェックされる行数を指定します。 +'modeline'は設定されています。別の例がこの文書の最初の行にあります。 +{訳注: このヘルプファイルでは文書の最後の行に例がある。} + +'modelines'はチェックされる行数を指定します。 + +さらなる情報については以下を参照してください。 -さらなる情報については以下を参照してください。 > + |21.6| + |modeline| + |auto-setting| + |'modeline'| + |'modelines'| - :help 21.6 - :help modeline - :help auto-setting - :help 'modeline' - :help 'modelines' -< *faq-19.6* 19.6. ファイル中の全ての行の行番号を表示するには? @@ -3877,26 +4674,22 @@ SECTION 19 - オプション :set number < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'number'| - :help 'number' -< *faq-19.7* 19.7. 'number'オプションで表示される行番号の幅を変えるには? -'number'オプションで表示される行番号の幅はVimのソース中にハードコードされてい -ます。何かオプションを設定することによってこの幅を変更することは不可能です。 - -行番号の幅を変えるオプションの要望とパッチはVimのTODOリスト中にあります: > +You can set the minimum number of columns to be used for line numbering by +setting the 'numberwidth' option: > - "Add an option to set the width of the 'number' column. Eight - positions is often more than needed. Or adjust the width to the length - of the file? - Add patch that adds 'numberlen' option. (James Harvey) - Other patch with min and max from Emmanuel Renieris (2002 Jul 24) - Other patch without an option by Gilles Roy (2002 Jul 25)" + :set numberwidth=3 < -{訳注: Vim7でオプション'numberwidth'が導入された。} +This set's the width for the line number to 3 digits, which is enough, if +your buffer contains less than 999 lines. However, if your current buffer +contains more lines than 999, the 'numberwidth' will be adjusted accordingly, +so that the maximum line number will fit on the screen. *faq-19.8* 19.8. スペース、タブ、改行などの不可視文字を表示するには? @@ -3915,19 +4708,19 @@ SECTION 19 - オプション (or) :set list! < -":set list!"とすると現在の'list'の設定をトグルします。 +`:set list!`とすると現在の'list'の設定をトグルします。 'listchars'オプションを変更すれば表示される不可視文字とその表示のされかたを設 -定することができます。例えば、次のコマンドは行末のスペースを'.'で表示するよう +定することができます。例えば、次のコマンドは行末のスペースを"."で表示するよう にします。 > :set listchars=trail:. < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'listchars'| + |'list'| - :help 'listchars' - :help 'list' -< *faq-19.9* 19.9. 常に現在行と桁番号を表示するようにするには? @@ -3936,10 +4729,10 @@ SECTION 19 - オプション :set ruler < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'ruler'| - :help 'ruler' -< *faq-19.10* 19.10. 現在のモードを表示するようにするには? @@ -3949,10 +4742,10 @@ SECTION 19 - オプション :set showmode < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'showmode'| - :help 'showmode' -< *faq-19.11* 19.11. ステータスラインに入力途中のコマンドを表示するようにするには? @@ -3961,23 +4754,23 @@ SECTION 19 - オプション :set showcmd < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'showcmd'| - :help 'showcmd' -< *faq-19.12* 19.12. ステータスラインに異なる設定・値を表示するようにするには? 'statusline'をセットすれば異なる設定・値をステータスラインに表示するようになり ます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'statusline'| + |'laststatus'| + |'rulerformat'| + |'ruler'| - :help 'statusline' - :help 'laststatus' - :help 'rulerformat' - :help 'ruler' -< *faq-19.13* 19.13. 常にステータスラインを表示するようにするには? @@ -3985,26 +4778,26 @@ SECTION 19 - オプション :set laststatus=2 < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'laststatus'| - :help 'laststatus' -< *faq-19.14* 19.14. Vimを再起動しても設定が永続するようにするには? Vimを再起動しても設定が永続するようにするには、その設定を.vimrcまたは.gvimrc -ファイルに追加します。":mkvimrc"コマンドを使うと現在の設定をもとにvimrcファイ +ファイルに追加します。`:mkvimrc`コマンドを使うと現在の設定をもとにvimrcファイ ルを生成することもできます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |save-settings| + |vimrc| + |gvimrc| + |vimrc-intro| + |:mkvimrc| + |initialization| - :help save-settings - :help vimrc - :help gvimrc - :help vimrc-intro - :help :mkvimrc - :help initialization -< *faq-19.15* 19.15. なぜエスケープキーを押すと約1秒後にビープが鳴る(画面がフラッシュする)の ですか? @@ -4019,7 +4812,7 @@ Vimは普通のエスケープとカーソルキーのシーケンスなどを ケンスが最後まで入力されればそのキーシーケンスのマッピングが発動します。もし マッピングを中断すれば、そのキーに割り当てられた普通の動作を実行します。 -例えば、":imap vvv Vim is great!!"と定義されたマッピングがあるとし、"vvv"をす +例えば、`:imap vvv Vim is great!!`と定義されたマッピングがあるとし、"vvv"をす ばやく入力するとします。すると"Vim is great!!"がテキストに挿入されます。 しかし"vv v"と入力すると、それがテキストに挿入されます。これは"vvv"をとても遅 く入力したときも同じになります。ここで"とても遅く"とはタイムアウトオプションで @@ -4027,46 +4820,45 @@ Vimは普通のエスケープとカーソルキーのシーケンスなどを ると、遅い回線上でファンクションキーを使うときに現れる問題を解決することができ ます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'ttimeout'| - :help ttimeout -< *faq-19.16* -19.16. 'c'と's'を使ったときに変更する文字を削除するのでなく'$'を表示するように +19.16. "c"と"s"を使ったときに変更する文字を削除するのでなく"$"を表示するように するには? -'c'と's'で変更する文字を削除するのでなく'$'を表示するようにするには、 +"c"と"s"で変更する文字を削除するのでなく"$"を表示するようにするには、 'cpoptions'にフラグ$を追加します: > :set cpoptions+=$ < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |'cpoptions'| - :help 'cpoptions' -< *faq-19.17* -19.17. 1回の":set"コマンドでオプションから複数のフラグを除去するには? +19.17. 1回の`:set`コマンドでオプションから複数のフラグを除去するには? -1回の":set"コマンドでオプションから複数のフラグを除去するには、それらのフラグ +1回の`:set`コマンドでオプションから複数のフラグを除去するには、それらのフラグ がオプション中に現れるのと正確に同じ順序でフラグを指定します。例えば、次のコマ -ンドで'formatoptions'からフラグ't'と'n'を除去しようとしたとします: > +ンドで'formatoptions'からフラグ"t"と"n"を除去しようとしたとします: > :set formatoptions-=tn < -すると、'formatoptions'がこれらのフラグをこの'tn'という順序で保持していた場合 -のみ、フラグ't'と'n'が除去されます。そうでなければフラグは除去されません。 +すると、'formatoptions'がこれらのフラグをこの"tn"という順序で保持していた場合 +のみ、フラグ"t"と"n"が除去されます。そうでなければフラグは除去されません。 この問題を避けるには、フラグを1つ1つ除去します: > :set formatoptions-=t formatoptions-=n < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help :set-= -< + |:set-=| ============================================================================= *faq-20* -SECTION 20 - キーマップ +SECTION 20 - キーマップ ~ *faq-20.1* 20.1. キーがどうマップされているかを知るには? @@ -4076,14 +4868,18 @@ SECTION 20 - キーマップ :map :map! < -また、特定のモードでのマッピングを確認するには":cmap", ":nmap", ":vmap", -":imap", ":omap"などのコマンドを使うことができます。 +また、特定のモードでのマッピングを確認するには`:cmap`, `:nmap`, `:vmap`, +`:imap`, `:omap`などのコマンドを使うことができます。 -さらなる情報については以下を参照してください。 > +To find out, where the key has been mapped, prefix the `:verbose` command: > - :help map-listing - :help map-overview + :verbose :map < +さらなる情報については以下を参照してください。 + + |map-listing| + |map-overview| + *faq-20.2* 20.2. ユーザー定義のキーマッピングをリストするには? @@ -4091,21 +4887,27 @@ SECTION 20 - キーマップ :map < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |map-listing| - :help map-listing -< *faq-20.3* 20.3. キーマップを解除するには? -キーマップを解除するには":unmap"を使います: > +キーマップを解除するには`:unmap`を使います: > :unmap :unmap! < -モード指定のマッピングには、":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" -のどれかを使います。 +モード指定のマッピングには以下のどれかを使います: > + :nunmap + :vunmap + :ounmap + :iunmap + :lunmap + :cunmap +< 次のコマンドではバッファローカルなマップを解除できません: > :unmap @@ -4116,31 +4918,107 @@ SECTION 20 - キーマップ :unmap :unmap! < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:unmap| + |map-modes| + |:map-local| + |mapleader| - :help :unmap - :help map-modes - :help map-local - :help 'mapleader' -< *faq-20.4* 20.4. キーへマッピングができません。何がまずいのですか? -最初にそのキーがVimが渡っているかどうか確認してください。挿入モードで CTRL-Vに -続けてそのキーを押してください。そのキーに対応するキーコードが表示されるでしょ -う。ここでそのキーコードが表示されたら、以下のコマンドでそのキーに対するマッピ -ングを作成することができます: > - - :map +1) First make sure, the key is passed correctly to Vim. To determine if + this is the case, put Vim in Insert mode and then hit CTRL-V (or + CTRL-Q if your CTRL-V is remapped to the paste operation (e.g. on + Windows if you are using the mswin.vim script file) followed by your + key. + + If nothing appears in the buffer (and assuming that you have + 'showcmd' on, ^V remains displayed near the bottom right of the Vim + screen), then Vim doesn't get your key correctly and there is nothing + to be done, other than selecting a different key for your mapping or + using GVim, which should recognise the key correctly. + +2) Possibly, Vim gets your key, but sees it as no different than + something else. Say you want to map , then in Insert mode + hit CTRL-K followed by . If Vim displays it has + correctly seen the keystroke and you should be able to map it (by + using as your {lhs}). If it displays it has seen + the keystroke but as if you hadn't held down: this means your + temrinal passes as if it were just . Anything else + means the key has been misidentified. + +3) If the key is seen, but not as itself and not as some recognizable + key, then there is probably an error in the terminal library for the + current terminal (termcap or terminfo database). In that case > + + :set term? +< + will tell you which termcap or terminfo Vim is using. You can try to + tell vim, what termcode to use in that terminal, by adding the + following to your vimrc: > + + if &term == + set = + endif < -さらなる情報については以下を参照してください。 > + where above should be replaced by the value of 'term' + (with quotes around it) and by what you get when hitting + CTRL-V followed by in Insert mode (with nothing around + it). should be left as-is (9 characters). Don't forget that + in a `:set` command, white space is not allowed between the equal sign + and the value, and any space, double quote, vertical bar or backslash + present as part of the value must be backslash-escaped. - :help map-keys-fails - :help :map-special-keys - :help key-codes + Now you should be able to see the keycode corresponding to the key + and you can create a mapping for the key using the following command: > + + :map < +さらなる情報については以下を参照してください。 + + |map-keys-fails| + |:map-special-keys| + |key-codes| + *faq-20.5* -20.5. テンキーにマップするには? +20.5. Why does mapping the key not work? + +The only - chords which Vim can reliably detect +(because they are defined in the ASCII standard) are the following: > + + CTRL-@ 0x00 NUL + CTRL-A to CTRL-Z 0x01 to 0x1A + CTRL-a to CTRL-z 0x01 to 0x1A + CTRL-[ 0x1B ESC + CTRL-\ 0x1C + CTRL-] 0x1D + CTRL-^ 0x1E + CTRL-_ 0x1F + CTRL-? 0x7F DEL +< +Most of these, however, already have a function in Vim (and some are +aliases of other keys: CTRL-H and , CTRL-I and , CTRL-M and , +CTRL-[ and , CTRL-? and ). + +The "safest" keys to use in Vim for the {lhs} of a mapping are the F +keys, with or without Shift: to and to . (Some +OSes, including mine, intercept and , which never reach an +application program such as vim or gvim). + +You can try other combinations of + any key, but they may either +not work everywhere (e.g. the terminal might not pass that key to Vim, +or they might have unintended side effects (e.g. mapping means +also to map ). + +This is a known issue, that has been discussed and might be implemented +in the future to enable Vim to distinguish between various keys even in +console mode. (e.g. +https://groups.google.com/d/msg/vim_dev/2bp9UdfZ63M/sajb9KM0pNYJ) + + *faq-20.6* +20.6. テンキーにマップするには? 最初にテンキーのキーがVimに渡っているかどうかを確認してください。そして次の コマンドでテンキーのキーに対してマップすることができます: > @@ -4150,28 +5028,59 @@ SECTION 20 - キーマップ ここでにはkHome, kEnd, kPageUp, kPageDown, kPlus, kMinus, kDivide, kMultiply, kEnterなどが使えます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help key-codes - :help terminal-options -< - *faq-20.6* -20.6. ビジュアルモードでのみ機能するマッピングを作成するには? + |key-codes| + |terminal-options| + + *faq-20.7* +20.7. ビジュアルモードでのみ機能するマッピングを作成するには? 特定のモード(ノーマル、コマンド、挿入、ビジュアル等)でのみ機能するマッピングを 作成することができます。ビジュアルモードでのみ機能するマッピングを作るには、 -":vmap"を使います: > +`:vmap`を使います: > :vmap < -さらなる情報については以下を参照してください。 > +This mapping will work in visual and select mode. If you want the map to +work only in visual mode (excluding select mode), use: + > - :help :vmap - :help map-modes - :help 40.1 + :xmap < - *faq-20.7* -20.7. Vim script中で、すでに使われているキーと衝突しないようにどのキーを使うべ +and to have the mapping only work in select mode (but not visual mode), +use: > + + :smap +< +さらなる情報については以下を参照してください。 + + |:vmap| + |:xmap| + |:smap| + |map-modes| + |40.1| + + *faq-20.8* +20.8. How do I create a mapping that works only in normal and operator + pending mode (but not in visual mode)? + +Using `:map` creates a mapping that works in normal, visual+select mode and +operator pending mode. You can use `:nmap` to have the mapping only work in +normal mode and `:vmap` to have the mapping only be defined for visual and +select mode or use `:omap` to have the mapping only defined in operator +pending mode. + +But if you want to have a mapping defined, that works in both operator +pending mode and normal mode, but not in visual and select mode, you need +to first define the mapping using `:map` and afterwards delete the mapping +for visual and select mode: + + :map + :vunmap + + *faq-20.9* +20.9. Vim script中で、すでに使われているキーと衝突しないようにどのキーを使うべ きかを知るには? Vimはキーボードのほとんどのキーを使います。mapにプリフィックスを使うと @@ -4191,25 +5100,25 @@ Vimのキーと重ならないようにキーを定義することができま :let mapleader = "," < -プラグインなどのスクリプトを書くときは、いつも以上に :map でなく :noremap を使 +プラグインなどのスクリプトを書くときは、いつも以上に `:map` でなく `:noremap` を使 い、ユーザー定義マッピングの副作用を避けることが推奨されます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help - :help - :help write-plugin -< - *faq-20.8* -20.8. エスケープキーにマップするには? + || + || + |write-plugin| + + *faq-20.10* +20.10. エスケープキーにマップするには? -":map"コマンドでエスケープキーを他のキーにマップすることができます。例えば、次 +`:map`コマンドでエスケープキーを他のキーにマップすることができます。例えば、次 のコマンドはエスケープキーをCTRL-Oにマップします。 > :map < - *faq-20.9* -20.9. あるキーを何もしないようにマップするには? + *faq-20.11* +20.11. あるキーを何もしないようにマップするには? キーをにマップすると、そのキーを押したときに何も起こらないようにすること ができます。例えば、次のマッピングでが押されたとき何もしないようにすること @@ -4218,70 +5127,70 @@ Vimのキーと重ならないようにキーを定義することができま :map :map! < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help - :help :map - :help :map! - :help map-modes -< - *faq-20.10* -20.10. Tabキーでテキストのブロックをインデントし、Shift-Tabでテキストのブロッ - クをアンインデントするようにしたいです。このようなマップを作るには? - この挙動はtextpadやVisual Studioなどに似ています。 + || + |:map| + |:map!| + |map-modes| + + *faq-20.12* +20.12. キーでテキストのブロックをインデントし、でテキストの + ブロックをアンインデントするようにしたいです。このようなマップを作る + には?この挙動はtextpadやVisual Studioなどに似ています。 以下のマッピングを使ってください: > - :inoremap + :inoremap :nnoremap >> - :nnoremap + :nnoremap :vnoremap > - :vnoremap + :vnoremap < 注意: のマッピングはVimが正しいキーシーケンスを受け取るときのみ機能しま す。これはGUIのVimの場合はたいてい当てはまります。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help :inoremap - :help :nnoremap - :help :vnoremap - :help - :help i_CTRL-O - :help >> - :help << - :help -< - *faq-20.11* -20.11. 私のマッピングにおいてのような特殊文字が認識されません。 + |:inoremap| + |:nnoremap| + |:vnoremap| + || + |i_CTRL-O| + |>>| + |<<| + || + + *faq-20.13* +20.13. 私のマッピングにおいてのような特殊文字が認識されません。 特殊文字を認識するように設定するには? 'cpoptions'の値を確認してください: > :set cpoptions? < -このオプションがフラグ'<'を含んでいると、マッピングにおいて特殊文字が認識され -ません。'cpoptions'からフラグ'<'を除去してください: > +このオプションがフラグ"<"を含んでいると、マッピングにおいて特殊文字が認識され +ません。'cpoptions'からフラグ"<"を除去してください: > :set cpo-=< < また、'compatible'の値も確認してください: > - :se compatible? + :set compatible? < 'compatible'はオフになっていなければなりません: > - :se nocompatible + :set nocompatible < -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help 'cpoptions' - :help 'compatible' -< - *faq-20.12* -20.12. マップ中で'|'を使って複数のコマンドを区切るには? + |'cpoptions'| + |'compatible'| -マップ中で'|'を使うにはバックスラッシュ(\)で'|'をエスケープします。 > + *faq-20.14* +20.14. マップ中で"|"を使って複数のコマンドを区切るには? + +マップ中で"|"を使うにはバックスラッシュ(\)で"|"をエスケープします。 > :map _l :!ls \| more < @@ -4291,26 +5200,26 @@ Vimのキーと重ならないようにキーを定義することができま < 他の方法もあります。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help map_bar -< - *faq-20.13* -20.13. その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 + |map_bar| + + *faq-20.15* +20.15. その最後が他のマッピング/短縮入力の始まりとなっているマッピング/短縮 入力があります。最初のものを入力したとき、2番目のが展開しないようにする には? -":map lhs rhs"でなく":noremap lhs rhs"を使ってください。短縮入力については +`:map lhs rhs`でなく`:noremap lhs rhs`を使ってください。短縮入力については "noreabbrev lhs rhs"です。プリフィックス"nore"はマッピングや短縮入力が再帰的に 展開されるのを防ぎます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help :noremap - :help :noreabbrev -< - *faq-20.14* -20.14. ときどきキーが処理されるのに1秒程度かかるのはなぜですか? + |:noremap| + |:noreabbrev| + + *faq-20.16* +20.16. ときどきキーが処理されるのに1秒程度かかるのはなぜですか? そのキーに対してマッピングが定義されていないことを次のコマンドで確かめてくださ い: > @@ -4325,21 +5234,21 @@ Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvi 'timeout'がオンになっていると(それがデフォルトです)、Vimは'timeoutlen'で指定さ れた時間(デフォルトは1秒)だけ待ったのちタイムアウトします。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 - :help map-typing - :help 'timeoutlen' - :help 'ttimeoutlen' - :help 'timeout' - :help 'ttimeout' - :help vt100-cursor-keys - :help slow-fast-terminal -< - *faq-20.15* -20.15. ビジュアル選択したテキストに対して外部コマンドを実行するマッピングを作 + |map-typing| + |'timeoutlen'| + |'ttimeoutlen'| + |'timeout'| + |'ttimeout'| + |vt100-cursor-keys| + |slow-fast-terminal| + + *faq-20.17* +20.17. ビジュアル選択したテキストに対して外部コマンドを実行するマッピングを作 るには? -":vmap"コマンドでビジュアルモードでのマッピングを作ることができます。マップの +`:vmap`コマンドでビジュアルモードでのマッピングを作ることができます。マップの コマンドシーケンスの中で、最初にそのテキストをヤンクしなければなりません。ヤン クされたテキストはレジスタ"で取得できます。そしてこのレジスタの中身を使って外 部コマンドを実行することができます。例えば、外部コマンド"perldoc"を選択された @@ -4358,29 +5267,109 @@ Vimは次のキーが押されるのを待ちます。次のキーが"b"ならvi すために使われています。を使って選択範囲を消さないと、外部コマンドの出力 が選択されたテキストを置き換えてしまいます。 -さらなる情報については以下を参照してください。 > +さらなる情報については以下を参照してください。 + + |:vmap| + |quote_quote| + |:let-register| + |c_CTRL-U| + |:!cmd| + + *faq-20.18* +20.18. キーの機能を保ったままCTRL-Iにマッピングするには? + +CTRL-Iとは同じキーコードを生成します。そのため、VimはCTRL-Iとを区別 +することができません。CTRL-Iにマッピングすると、キーにも同様にマッピング +されます(逆も同様です)。これと同じ制限がCTRL-[とにも適用されます。 + +さらなる情報については以下を参照してください。 + + |keycodes| + + *faq-20.19* +20.19. How do I define a map to accept a count? + +Use the @= command to use an expression. For example, > - :help :vmap - :help quote_quote - :help let-register - :help c_CTRL-U - :help :!cmd + nnoremap = @='3l' < - *faq-20.16* -20.16. キーの機能を保ったままCtrl-Iにマッピングするには? +Now you can specify a count to the "=" command. + + |complex-repeat| + + *faq-20.20* +20.20. How can I make my normal mode mapping work from within Insert + Mode? + +Mappings in normal mode can be executed after CTRL-O from insert mode as +well but if there are more commands included in the mapping {rhs}, only the +first one will be executed in normal mode and the rest of {rhs} will be +printed literally in insert mode. One of ways to workaround this problem is +to make {rhs} be one command, via wrapping it to the function. For example: > + + function GetFontNameOfFirstChar() + normal! 0 + echo getfontname() + endfunction +< + :nmap :call GetFontNameOfFirstChar() + +A more technical and detailed solution to this problem follows and can +be found at https://groups.google.com/group/vim_dev/msg/75f1f2dfc00908bb + +Not every normal mode-mapping is automatically suitable for execution via +CTRL-O from within insert mode; you need to explicitly design your mappings +for that purpose. -Ctrl-Iとは同じキーコードを生成します。そのため、VimはCtrl-Iとを区別 -することができません。Ctrl-Iにマッピングすると、キーにも同様にマッピング -されます(逆も同様です)。これと同じ制限がCtrl-[とにも適用されます。 +The CTRL-O command allows execution of one normal mode command from +within insert mode, then returns to insert mode. If a normal mode mapping +concatenates multiple normal mode commands, this breaks down in temporary +normal mode and literally inserts the second part of the command into the +buffer instead. To support execution of normal mode mappings from within +insert mode, these strategies can be used: -さらなる情報については以下を参照してください。 > +1) Instead of concatenating multiple normal mode commands, use one `:normal` + mapping: > - :help keycodes + :nnoremap zC :normal! zCVzC < +2) Concatenate multiple Ex commands via on the rhs: > + + :nnoremap zC :call MyMap1()call MyMap2() +< +3) Shadow normal mode mappings by insert mode mappings that + re-enter normal mode, then invoke the normal mode mapping: > + + :nnoremap MyMap2 :call MyMap2() + :inoremap