*usr_05.txt* For
Vim バージョン 7.3. Last change: 2009 Jun 04
VIM USER MANUAL - by Bram Moolenaar
設定の変更
あなたの望みどおりに Vim をチューニングできます。本章では、好みの設定で Vim を
起動する方法を説明します。Vim にプラグインを追加して機能拡張したり、自分でマク
ロを定義する方法も説明します。
|05.1| vimrc ファイル
|05.2| 見本 vimrc ファイルの解説
|05.3| 簡単なマップ
|05.4| プラグインの追加
|05.5| ヘルプファイルの追加
|05.6| オプションウィンドウ
|05.7| よく使うオプション
次章:
|usr_06.txt| 構文強調表示
前章:
|usr_04.txt| 簡単な編集
目次:
|usr_toc.txt|
==============================================================================
*05.1* vimrc ファイル
*vimrc-intro*
よく使うコマンドを入力するのが面倒に感じたことがあるでしょう。好みのオプション
やマップを設定した状態で Vim を起動するには、vimrc というファイルに設定を書い
てください。そのファイルに書いたコマンドは、Vim が起動するときに実行されます。
すでに vimrc ファイルがある場合 (例えばシステム管理者が設置した場合など) は、
次のコマンドでそのファイルを開くことができます:
vimrc ファイルがまだない場合は
|vimrc| を参照して vimrc ファイルを作成する場所
を確認してください。":version" コマンドで表示される "ユーザ vimrc" の表示を見
て確認することもできます。
Unix と Macintosh ではこのファイルを使ってください。
~/.vimrc
MS-DOS と MS-Windows では次のどちらかです。
$HOME/_vimrc
$VIM/_vimrc
vimrc ファイルには、コロン (:) を押してから入力するコマンドなら、どのコマンド
でも書くことができます。一番わかりやすいのはオプション設定です。例えば、毎回
'incsearch' オプションをオンに設定したい場合は、vimrc ファイルに次の一行を加え
ます。
この新しい行を有効にするには、Vim を終了し、再起動する必要があります。再起動し
ないで設定を反映する方法は後で説明します。
この章では、ごく基本的な項目だけを説明します。Vim スクリプトのより詳しい情報に
ついては
|usr_41.txt| を参照してください。
==============================================================================
*05.2* 見本 vimrc ファイルの解説
*vimrc_example.vim*
第一章では、Vim の配布物に付属の見本 vimrc ファイルを使って、非互換モード
(
|not-compatible|参照) で Vim を起動する方法を説明しました。見本 vimrc ファイ
ルは次のディレクトリにあります:
$VIMRUNTIME/vimrc_example.vim
この節では、このファイルで使われているコマンドを説明します。自分用の設定をする
ときの参考にしてください。しかし、全てを説明するわけではないので、詳しいことは
":help" コマンドで調べてください。
第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と
は完全に互換性がない部分があります。動作を同じにするには、
'compatible' オプ
ションをオフに設定する必要があります。
挿入モードで
<BS> を使って削除できる文字を指定しています。コンマで区切られた三
つの部分はそれぞれ次の文字の削除を許可しています。
indent 行頭の空白
eol 改行
start 挿入モード開始位置より手前の文字
新しい行を作成したときに、直前の行と同じだけインデントされるようになります。つ
まり、新しい行の行頭に直前の行と同じだけの空白が挿入されます。例えば、挿入モー
ドで
<Enter> キーを押したときや、"o" コマンドで新しい行を作成したときに機能し
ます。
ファイルを上書きしたときに、バックアップファイルを削除しないように指定していま
す。ただし VMS システムでは OS が古いバージョンを保持してくれるので、オフにし
ています。バックアップファイルのファイル名はオリジナルの名前に "~" を加えたも
のになります。
|07.4|を参照してください。
コマンドを50個分、検索パターンを50個分、ヒストリ(履歴)として残します。記録の容
量を増減したいときはこの値を変更してください。
現在のカーソル位置(行、桁)を Vim ウィンドウの右下に常に表示します。
入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側)
に表示します。例えば、"2f" と入力したとき、Vim は検索文字の入力を待っていて、
画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" というコマン
ドが完成するので、それが実行され、画面の "2f" という表示も消去されます。
+-------------------------------------------------+
|text in the Vim window |
|~ |
|~ |
|-- VISUAL -- 2f 43,8 17% |
+-------------------------------------------------+
^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^
'showmode' 'showcmd' 'ruler'
検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示します。
キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー
タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0
以前と同じになります。実際の "Q" は EX モードへの移行コマンドですが、おそらく
必要ないでしょう。
このマップは、選択されたテキストをヤンクして、それを C ファイルの中から検索し
ます。これは複雑なマップです。マップを使ってとても難しいことができるということ
が分かってもらえたと思います。とはいっても、実際にコマンドを手入力するのと同じ
ように一連のコマンドを実行しているに過ぎません。
カラー表示が使えるかどうかを確認し、構文強調表示を有効にしています。さらに、
'hlsearch' オプションをオンにして、検索にマッチした箇所が強調表示されるように
しています。特定の条件のときだけオプションを設定したい場合は "if" コマンドが便
利です。 詳しくは、
|usr_41.txt|を参照してください。
*vimrc-filetype*
三つの便利な機能を有効にしています:
1. ファイルタイプの検出
ファイルを開いたときに、そのファイルの種類を特定します。例えば、"main.c" を
開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ
イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと
判断します。
検出されたファイルタイプは構文強調と次の 2 つの項目で使われます。
|filetypes|参照。
2. ファイルタイププラグインを使う
ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例
えば、"c" ファイルの場合なら自動的にインデントしてくれる
'cindent' オプショ
ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ
グインの中に入っています。自分でプラグインを追加することもできます。
|write-filetype-plugin|参照。
3. インデントファイルを使う
プログラミング言語のインデントはほとんど自動的に計算できます。Vim にはファ
イルタイプに応じたインデントルールが数多く用意されています。
|:filetype-indent-on| と
'indentexpr' 参照。
行が長くなりすぎないように78文字で分割するように指定しています。このルールはテ
キストファイルにだけ適用されます。この記述には二つの要素があります。"autocmd
FileType text" はオートコマンド定義です。この場合、ファイルタイプが "text" に
設定されたときに、指定したコマンドが自動的に実行されます。"setlocal
textwidth=78" はそのファイルの
'textwidth' オプションを 78 に設定しています。
*restore-cursor*
オートコマンドをもう一つ。ファイルを読み込んだ直後に実行されるオートコマンドを
定義しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどう
かをチェックし、定義があればそこにジャンプする」という意味です。コマンドを複数
行に分けて書くために、行頭に "\" を書いています。行がやたらと長くなるのを防ぐ
ためです。
|line-continuation|参照。"\" は Vim スクリプト内でのみ使えます。コマ
ンドラインで入力するときは使えません。
==============================================================================
*05.3* 簡単なマップ
マップを使うと、複数のコマンドを 1 つのキー繰作にまとめることができます。例え
ば、ある単語を {} で囲みたいとします。つまり、"amount" を "
{amount}" にしたい
わけです。:map コマンドを使って、その操作を
<F5> キーに割り当てることができま
す。次のように書きます。
Note:
このコマンドを入力するときの注意点。
<F5> 見たままのは 4 文字の文字列として入力してください。
<Esc> も同じで
す。
<Esc> キーを押すのではなく、 5 文字の文字列として入力してください。
このマニュアルを読むときはその違いに注意してください !
この定義を分解してみましょう。
<F5> ファンクションキーのF5です。このキーを押すと、定義してあるコマ
ンドが実行されます。
i{
<Esc> "{" 文字を挿入し、
<Esc> キーで挿入モードから抜けます。
e 単語の末尾に移動します。
a}
<Esc> "}" 文字を追加します。
この ":map" コマンドを実行した後は、カーソルを単語の先頭に動かして F5 キーを押
すだけで単語の両側に {} を追加できます。
この例では、コマンドは 1 キーでしたが、どの文字列でも割り当てることができます。
ただし、Vim のコマンドと同じ文字列を割り当てると、元のコマンドが使えなくなるの
で、それは避けた方が無難です。
複数キーを組み合わせるときには、バックスラッシュ(日本語環境では円記号)がよく使
われます。マップをたくさん定義したい場合は、複数文字を使ってください。例えば、
単語を () で囲むには "\p" で、単語を {} で囲むには "\c" で、といったことができ
ます。
"\" と "p" はくっつけてください。そうすれば Vim は 2 文字のマップだと認識でき
ます。
引数なしの ":map" コマンドで現在のマップ定義の一覧を表示できます。表示された
マップは、少なくともノーマルモードで使えます。より詳しくは
|40.1|章を参照してく
ださい。
==============================================================================
*05.4* プラグインの追加
*add-plugin* *plugin*
プラグインを追加することで機能拡張できます。プラグインといっても、Vimが起動さ
れたときに自動的に読み込まれるだけの、ただの Vim スクリプトファイルです。ファ
イルをプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。
{
|+eval|が有効な場合のみ利用できます}
2 種類のプラグインがあります。
グローバルプラグイン 全種類のファイルで使われるプラグイン
ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン
まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明
|add-filetype-plugin|をします。
グローバルプラグイン
*standard-plugin*
--------------------
Vim を起動すると、自動的にいくつものグローバルプラグインがロードされます。特に
何もしなくて大丈夫です。グローバルプラグインは、ほとんどの人が欲しいと思うだろ
う機能を提供しています。それらの機能は Vim の中にコンパイルして組み込まれてい
るのではなく、Vim スクリプトとして実装されています。ヘルプの目次にプラグインの
一覧があります
|standard-plugin-list|。
|load-plugins|も参照してください。
*add-global-plugin*
グローバルプラグインを追加すると、いつでもその機能を使えるようになります。
グローバルプラグインを追加するのは簡単です。
1. プラグインを入手する
2. 正しいディレクトリにコピーする
グローバルプラグインを入手する
------------------------------
プラグインはどこにありますか?
- Vim の配布物にいくつか含まれています。$VIMRUNTIME/macros ディレクトリをご覧
ください
- インターネットからダウンロードする。たくさんのプラグインが
http://www.vim.org にあります。
- Vim のメーリングリスト
|maillist|に投稿されることもあります。
- あなたが自作することもできます。プラグインの書き方
|write-plugin|をどうぞ。
いくつかのプラグインは vimball アーカイブで配布されています。
|vimball|参照。
いくつかのプラグインは自動更新可能です。
|getscript|参照。
グローバルプラグインを使う
--------------------------
まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。
次にそれをプラグインディレクトリにコピーします。
system plugin directory
Unix ~/.vim/plugin/
PC や OS/2 $HOME/vimfiles/plugin or $VIM/vimfiles/plugin
Amiga s:vimfiles/plugin
Macintosh $VIM:vimfiles:plugin
Mac OS X ~/.vim/plugin/
RISC-OS Choices:vimfiles.plugin
Unixの場合の例 (プラグインディレクトリがまだない場合)
これだけです。vimを再起動するとプラグインで定義されたコマンドが使えます。
plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/
ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ
グインを "~/.vim/plugin/perl/*.vim" に置いたりできます。
ファイルタイププラグイン
*add-filetype-plugin* *ftplugins*
------------------------
Vim の配布パッケージにはたくさんのファイルタイププラグインが入っています。
次のコマンドで利用開始できます。
これだけです。
|vimrc-filetype|も参照してください。
使いたいファイルタイププラグインがない場合や、標準より良いものを見つけた場合
は、追加することもできます。ファイルタイププラグインの追加は次の手順で行いま
す:
1. プラグインを入手する
2. 正しいディレクトリにコピーする
ファイルタイププラグインを入手する
----------------------------------
ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。プラグ
インの種類が記載されているのでそれを見て、そのプラグインがグローバルプラグイン
かファイルタイププラグインか確認してください。$VIMRUNTIME/macros に入っている
のはグローバルプラグインです。$VIMRUNTIME/ftplugin に入っているのはファイルタ
イププラグインです。
ファイルタイププラグインを使う
*ftplugin-name*
------------------------------
ファイルタイププラグインは正しいディレクトリにコピーするだけで追加できます。
ディレクトリの場所はグローバルプラグインと同じですが、ディレクトリ名の最後の部
分が "ftplugin" となります。例えば "stuff" ファイルタイプ用のプラグインを Unix
システムに入れるとしましょう。入手したファイルを次のコマンドで ftplugin ディレ
クトリに移します:
そのファイルがすでにある場合は、既存のプラグインと追加しようとしているプラグイ
ンを同時に使っても問題ないかどうか確認してください。問題がなければ別の名前に変
えましょう:
アンダースコアはファイルタイプの名前とそれ以外を区切るのに使います。アンダース
コア以降はどんな文字列でも構いません。しかし、"otherstuff.vim" といった名前に
した場合はうまく動きません。そのファイルは "otherstuff" というファイルタイプの
ときにだけロードされます。
MS-DOS では長いファイル名が使えません。プラグインを追加するときに、ファイルタ
イプ名が 6 文字以上だと問題が生じます。そういうときはさらにディレクトリを掘っ
てください:
ファイルタイププラグインの名前付けルールは次の通りです:
"
<name>" の部分はどんな文字列でも構いません。
以下は Unix での "stuff" ファイルタイプの例です:
<filetype> の部分はプラグインの対象になっているファイルタイプ名です。同じファ
イルタイプのファイルだけがそのプラグインを使います。
<name> の部分は無視されま
す。一つのファイルタイプに複数のプラグインを登録する場合に使ってください。
Note: ファイルの拡張子は必ず ".vim" にしてください。
詳しくは以下を参照してください:
|filetype-plugins| ファイルタイププラグインについてのドキュメントと、マッ
プで問題が発生した場合の対処方法。
|load-plugins| 起動時にロードされるグローバルプラグイン。
|ftplugin-overrule| 標準のファイルタイププラグインの設定を上書きする。
|write-plugin| プラグインスクリプトの書き方。
|plugin-details| プラグインの使い方やプラグインが動かない場合について
の詳細な情報。
|new-filetype| 新しいファイルタイプを追加するには。
==============================================================================
*05.5* ヘルプファイルの追加
*add-local-help* *matchit-install*
運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘルプ
ファイルのインストール方法を説明します。 インストールしておけば新しいプラグイ
ンのヘルプを簡単に調べることができます。
"matchit.vim" プラグイン (Vim の配布パッケージに入っています) を例にやってみま
しょう。このプラグインは "%" コマンドを拡張し、対応する HTML タグや、Vim スク
リプトの if/else/endif間でジャンプできるようにします。これはとても便利です。後
方互換性がないので、標準では有効になっていません。
このプラグインにはヘルプ "matchit.txt" が付属しています。最初にプラグイン本体
を適切なディレクトリにコピーしましょう。今回は Vim の中から操作するので、
$VIMRUNTIME が使えます。(ディレクトリがすでにある場合は、"mkdir" コマンドを省
略してください。)
"cp" は Unix のコマンドです。MS-DOS では "copy" を使ってください。
次に
'runtimepath' のいずれかのディレクトリに "doc" ディレクトリを作ります。
"doc" ディレクトリにヘルプファイルをコピーします。
続いて、新しいヘルプファイルの項目にジャンプできるように仕掛けをします。
|:helptags|コマンドを使ってタグファイルを生成してください。
さて、これで次のコマンドが使えます。
これは上で追加したヘルプファイルの中から "g%" のヘルプを探すコマンドです。次の
コマンドでローカルヘルプの目次を見ることができます。
ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ
を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン
プもできます。
ローカルヘルプファイルの書き方については
|write-local-help|を参照してください。
==============================================================================
*05.6* オプションウィンドウ
何かのオプションを探しているなら、ヘルプファイル
|options| から見つけることが
できるでしょう。もう一つ、次のコマンドを使う方法もあります:
新しいウィンドウが開き、一行解説付きのオプションの一覧が表示されます。オプショ
ンは種類別にグループ化されています。カーソルを目次の上に動かして
<Enter> を押
すとそこにジャンプできます。もう一度
<Enter> を押すか、
CTRL-O を押すと戻れま
す。
その場でオプションの値を設定できます。例えば、"displaying text" グループに移動
し、カーソルを次の行まで持っていきます:
set wrap nowrap
ここで
<Enter> を押すと、表示が次のようになります:
set nowrap wrap
このオプションはオフになりました。
この行の上には
'wrap' オプションの簡単な説明があります。説明のところにカーソル
を動かして、
<Enter> を押すと、
'wrap' オプションのヘルプにジャンプできます。
数値や文字列を引数に取るオプションの場合、値を編集できます。修正後に
<Enter>
キーを押すとそれが新しい値として設定されます。例えば、カーソルを次の行まで
(
'wrap'の少し上に) 動かしてください。
set so=0
"$" コマンドでカーソルを "0" の上に動かし、"r5" で値を 5 に変更します。
<Enter>
を押すと、その値が設定されます。カーソルを動かしてみると、画面の端までカーソル
が達する前にスクロールが始まることに気づくと思います。これは
'scrolloff' オプ
ションのしわざです。ウィンドウの端からのオフセットを設定し、スクロールが開始す
る位置を指定しています。
==============================================================================
*05.7* よく使うオプション
Vim には本当に大量のオプションがあります。ほとんどのオプションは使う機会がない
と思います。ここでは一部のよく使うものだけを説明します。これらのオプションには
より詳しいヘルプがあることをお忘れなく。ヘルプを見るには、":help" に続けてアポ
ストロフィで囲んだオプション名を指定してください:
オプションの値がおかしくなってしまったら、初期設定に戻すことができます。初期設
定に戻すのにはアンパサンド(&)を使います:
行の折り曲げの禁止
------------------
長い行は、文の全体が見えるように、画面の右端で折り曲げて表示されます。しかし
ウィンドウの右にはみ出した方が良い場合もあります。その場合は、左右にスクロール
して長い行を表示することになります。次のコマンドで折り曲げしないようになりま
す:
表示されていない領域にカーソルを動かすと自動的にスクロールされます。10 文字ず
つスクロールするには、次のようにします:
これはファイルの内容には影響しません。表示方法を変更するだけです。
折り返して移動するコマンド
--------------------------
ほとんどの移動コマンドは行頭と行末で移動を停止します。
'whichwrap' オプションで
それを変更できます。次の例では、
'whichwrap' を初期設定に設定しています:
ここでは、
<BS> キーで行頭から 1 つ上の行の行末へ動くことを許可しています。ま
た、
<Space> キーで行末から次の行の行頭への移動することを許可しています。
カーソルキーの
<Left> と
<Right> もこのコマンドで折り返しを許可できます:
この指定はノーマルモードでのみ有効です。挿入モードでも
<Left> と
<Right> を許
可するには次のように指定します:
他にもいくつかフラグがあります。詳しくは
'whichwrap' を参照してください。
TAB を表示する
--------------
ファイル中に Tab 文字があっても、それを視認することはできません。Tab 文字が表
示されるようにしましょう:
Tab 文字が ^I と表示されます。行末には $ と表示され、通常なら気付かないよう
な、行末の空白もよくわかるようになります。
これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末
か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ
とができます。
'listchars' オプションを使ってください:
Tab 文字は全て ">---" と表示され、行末の空白は "-" と表示されます。この方が
ずっとイイと思いませんか?
キーワード
----------
'iskeyword' オプションは単語に使える文字を定義しています:
iskeyword=@,48-57,_,192-255
"@" は「すべてのアルファベット」を表しています。"48-57" は ASCII コード の 48
から 57 までの文字、つまり "0" から "9" までの数字を表しています。"192-255" は
印字可能なラテン文字です。
例えば、"upper-case" を1つの単語と扱って欲しい場合は、"-" をキーワードに追加
します。次のように設定してください:
iskeyword=@,48-57,_,192-255,-
新しい設定をみると、"-" の直前に "," が自動的に追加されています。
キーワードから文字を削除するには "-=" を使います。アンダースコアを削除するには
次のようにします:
iskeyword=@,48-57,192-255,-
"_" を削除すると "," も自動的に削除されました。
メッセージ行
------------
初期設定では、最下段の一行がメッセージの表示に使われます。メッセージが長いとき
は、メッセージを切り詰めて一部だけ表示するか、メッセージをスクロールして表示
し、最後に
<Enter> を押してもらうかのどちらかです。
メッセージの表示に使う行数は
'cmdheight' オプションで設定できます:
編集画面が狭くなってしまうので、ほどほどの値を設定してください。
==============================================================================
次章:
|usr_06.txt| 構文強調表示
Copyright: see
|manual-copyright| vim:tw=78:ts=8:ft=help:norl: