usr_05.txt For Vim バージョン 9.1. Last change: 2024 Oct 05
VIM USER MANUAL - by Bram Moolenaar
設定の変更
あなたの望みどおりに Vim をチューニングできます。本章では、好みの設定で Vim を
起動する方法を説明します。Vim にプラグインを追加して機能拡張したり、自分でマク
ロを定義する方法も説明します。
05.1 vimrc ファイル
05.2 見本 vimrc ファイルの解説
05.3 defaults.vim ファイルの解説
05.4 簡単なマップ
05.5 パッケージの追加
05.6 プラグインの追加
05.7 ヘルプファイルの追加
05.8 オプションウィンドウ
05.9 よく使うオプション
次章: 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-Windows では次のどちらかです。
$HOME/_vimrc
$VIM/_vimrc
もし初めて vimrc ファイルを作るのであれば、次の 1 行を先頭に記述するのがよいで
しょう:
これは Vim を (従来の Vi ユーザー向けではなく) 新規ユーザー向けに初期化します。
詳細については defaults.vim を参照してください。
vimrc ファイルには、コロン (:) を押してから入力するコマンドなら、どのコマンド
でも書くことができます。一番単純なものはオプション設定です。例えば、毎回
'incsearch' オプションをオンに設定したい場合は、vimrc ファイルに次の一行を加え
ます。
この新しい行を有効にするには、Vim を終了し、再起動する必要があります。再起動し
ないで設定を反映する方法は後で説明します。
この章では、ごく基本的な項目だけを説明します。Vim script のより詳しい情報につ
いては usr_41.txt を参照してください。
==============================================================================
05.2 見本 vimrc ファイルの解説 vimrc_example.vim
第一章では、Vim の配布物に付属の見本 vimrc ファイルを使って、非互換モード
(not-compatible参照) で Vim を起動する方法を説明しました。見本 vimrc ファイ
ルは次のディレクトリにあります:
$VIMRUNTIME/vimrc_example.vim
この節では、このファイルで使われているコマンドを説明します。自分用の設定をする
ときの参考にしてください。しかし、全てを説明するわけではないので、詳しいことは
":help" コマンドで調べてください。
これは、$VIMRUNTIME ディレクトリにある "defaults.vim" ファイルをロードします。
これは、ほとんどのユーザーが好むようにVimを設定します。あなたがそうでない少数
のうちの1人であるならば、この行をコメントアウトしてください。以下にコマンドに
ついて説明します:
defaults.vim-explained
これは、上書きするときにファイルのバックアップコピーを保存するようにVimに指示
します。しかし、VMSシステムではそうではありません。古いバージョンのファイルを
すでに保持しているからです。バックアップファイルは元のファイルと同じ名前で "~"
が追加されます。07.4 を参照してください。
可能であれば、'undofile' オプションも設定します。これはマルチレベルのアンドゥ
情報をファイルに保存します。その結果、あなたがファイルを変更してVimを終了し、
そして再びそのファイルを編集するとき、あなたは以前におこなわれた変更を元に戻す
ことができます。ファイルを保存するという犠牲を払って、それは非常に強力で便利な
機能です。詳しくは undo-persistence を参照してください。
"if" コマンドは、ある条件が満たされたときだけオプションを設定するのに非常に役
に立ちます。詳しくは usr_41.txt を参照ください。
これは 'hlsearch' オプションをオンにして、最後に使用された検索パターンをハイラ
イトするようにVimに指示します。
これはVimがテキストを改行して行が78文字を超えないようにします。ただし、プレー
ンテキストとして検出されたファイルに対してのみです。ここには実際には2つの部分
があります。 "autocmd FileType text" は自動コマンドです。 これは、ファイルタイ
プが "text" に設定されているとき、後続のコマンドが自動的に実行されることを定義
します。"setlocal textwidth=78" は 'textwidth' オプションを78に設定しますが、1
つのファイル内でローカルにのみです。
"augroup vimrcEx" と "augroup END" を含むラッパーは、"au!" を使って自動コマン
ドを削除することを可能にします。 コマンド。:augroup を参照してください。
必要な機能が利用できる場合、"matchit" プラグインをロードします。
それは % コマンドをより強力にします。これは matchit-install で説明されてい
ます。
==============================================================================
05.3 The defaults.vim ファイルの解説 defaults.vim-explained
defaults.vim ファイルは、ユーザーがvimrcファイルを持っていないときにロードさ
れます。 新しいvimrcファイルを作成するときは、それを使い続けるためにこの行を先
頭近くに追加します:
または、上で説明したように vimrc_example.vim ファイルを使用してください。
以下に defaults.vim がしていることを説明します。
defaults.vim の読み込みは、次のコマンドで無効にできます:
てください。あなたがユーザーvimrcを持っているなら、defaults.vim は自動的にロー
ドされないので、これは必要ではありません。
第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と
は完全に互換性がない部分があります。ここに書かれたように動作させるには、
'compatible' オプションをオフに設定する、すなわち 'nocompatible' にする必要が
あります。
挿入モードで <BS> を使って削除できる文字を指定しています。コンマで区切られた三
つの部分はそれぞれ次の文字の削除を許可しています。'backspace' を参照してくださ
い。
indent 行頭の空白
eol 改行
start 挿入モード開始位置より手前の文字
コマンドを200個分、検索パターンを200個分、ヒストリ(履歴)として残します。記録の
容量を増減したいときはこの値を変更してください。'history' を参照してください。
現在のカーソル位置(行、桁)を Vim ウィンドウの右下に常に表示します。'ruler' を
参照してください。
入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側)
に表示します。例えば、"2f" と入力したとき、Vim は検索文字の入力を待っていて、
画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" というコマン
ドが完成するので、それが実行され、画面の "2f" という表示も消去されます。
+-------------------------------------------------+
|text in the Vim window |
|~ |
|~ |
|-- VISUAL -- 2f 43,8 17% |
+-------------------------------------------------+
^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^
'showmode' 'showcmd' 'ruler'
補完候補をステータス行に表示します。それは <Tab> をタイプしたときで、複数の一
致があるときです。'wildmenu' を参照してください。
これにより、Escキーを押した時の効果が早くなります。通常、VimはEscがエスケープ
シーケンスの始まりであるかどうかを確認するために1秒待ちます。非常に遅いリモー
ト接続の場合は、数を増やしてください。'ttimeout' を参照してください。
最後の行が切り捨てられる場合は、行全体を非表示にするのではなく、@@@ を表示しま
す。'display' を参照してください。
検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示します。
'incsearch' を参照してください。
ゼロで始まる数字を8進数として認識しません。'nrformats' を参照してください。
キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー
タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0
以前と同じになります。実際の "Q" は EX モードへの移行コマンドですが、おそらく
必要ないでしょう。
挿入モードで CTRL-U を押すと、現在行に入力されているすべてのテキストが削除され
ます。 最初の改行のアンドゥに CTRL-G u を使用するので、改行を挿入した後に
CTRL-U でアンドゥすることができます。":iunmap <C-U>" で元に戻します。
可能であればマウスの使用を有効にします。'mouse' を参照してください。
このマップは、選択されたテキストをヤンクして、それを C ファイルの中から検索し
ます。マップを使ってとても難しいことができるということが分かってもらえたと思い
ます。とはいっても、実際にコマンドを手入力するのと同じように一連のコマンドを実
行しているに過ぎません。
カラーでファイルをハイライトすることを有効にします。syntax を参照してくださ
い。
vimrc-filetype
三つの便利な機能を有効にしています:
1. ファイルタイプの検出
ファイルを開いたときに、そのファイルの種類を特定します。例えば、"main.c" を
開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ
イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと
判断します。
検出されたファイルタイプは構文強調と次の 2 つの項目で使われます。
filetypes参照。
2. ファイルタイププラグインを使う
ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例
えば、"c" ファイルの場合なら自動的にインデントしてくれる 'cindent' オプショ
ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ
グインの中に入っています。自分でプラグインを追加することもできます。
write-filetype-plugin参照。
3. インデントファイルを使う
プログラミング言語のインデントはほとんど自動的に計算できます。Vim にはファ
イルタイプに応じたインデントルールが数多く用意されています。
:filetype-indent-on と 'indentexpr' 参照。
restore-cursor last-position-jump
自動コマンドをもう一つ。ファイルを読み込んだ直後に実行される自動コマンドを定義
しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどうかを
チェックし、定義があればそこにジャンプする」という意味です。コミットやリベース
メッセージの場合は、前回とは違うメッセージになる可能性が高く、また、xxd(1) を
使ってバイナリファイルをフィルタリングして編集を行う場合は、入力ファイルを行っ
たり来たり変換して、いわば二面性を持っているため、このようなことは行いません。
using-xxd も参照してください。
コマンドを複数行に分けて書くために、行頭に "\" を書いています。行がやたらと長
くなるのを防ぐためです。line-continuation 参照。"\" は Vim script 内でのみ使
えます。コマンドラインで入力するときは使えません。
これは ":DiffOrig" コマンドを追加します。修正されたバッファでロードされたファ
イルとの違いを見るためにこれを使ってください。diff および :DiffOrig を参照
してください。
langmapオプションがマッピングから生じる文字に適用されるのを防ぎます。設定され
ている場合(デフォルト)、これはプラグインを壊すかもしれません(でも、それは後方
互換です)。'langremap' を参照してください。
==============================================================================
05.4 簡単なマップ
マップを使うと、複数のコマンドを 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.5 パッケージの追加 add-package matchit-install
パッケージとはVimに追加するファイルの集合です。パッケージには、任意のタイミン
グで読み込めるものと、起動時に自動的に読み込まれるものの2種類があります。
Vim は、数個の任意に読み込めるパッケージと一緒に配布されています。例えば
matchit プラグインです。このプラグインは "%" コマンドを、HTMLタグやVim script
の if/else/endif やその他のものにマッチするようにします。とても便利なのですが
後方互換性はありません。それがデフォルトでは無効にされている理由です。
matchit プラグインを使い始めるには、以下の行をあなたの vimrc ファイルに追加し
てください:
たったこれだけです。あとは Vim を再起動するだけで、このプラグインについてのヘ
ルプを見つけられます:
これが動作するのは :packadd でプラグインを読み込む際に、パッケージのディレク
トリを 'runtimepath' に追加するためです。それによりヘルプファイルを見つけられ
るようになります。
パッケージはインターネットの様々な場所から入手できるでしょう。通常それらは圧縮
アーカイブかリポジトリの形態を採用しているでしょう。アーカイブであれば以下のよ
うなステップでインストールできます:
1. パッケージディレクトリを作成する:
いものを使いましょう。
2. そのディレクトリにアーカイブを解凍しましょう。以下はアーカイブ内の
トップディレクトリは "start" であると仮定しています:
ば、適宜修正してください:
~/.vim/pack/fancy/start/fancytext/plugin/fancy.vim
ここの "fancytext" はパッケージ名なので、実際には別の名前になるで
しょう。
editorconfig パッケージの追加 editorconfig-install
matchit パッケージと同様に、Vim の起動時に配布されている editorconfig プラグイ
ンを読み込むには、vimrc ファイルに以下の行を追加します:
Vim を再起動するとプラグインがアクティブになり、以下でプラグインについて読むこ
とができます:
コメントパッケージの追加 comment-install
以下のコマンドを使用してプラグインをロードします:
こうすることで、コメント用の gc および同じようなデフォルトキーバインディング
(Vim コミュニティでは定評のあるマッピングです) でプラグインを使用できます。
この行を vimrc ファイルに追加した場合は、Vim を再起動してパッケージを読み込む
必要があります。パッケージがロードされたら、以下を読んでください:
nohlsearch パッケージの追加 nohlsearch-install
以下のコマンドを使用してプラグインをロードします:
'updatetime' の後、または Insert モードに入った後に、:nohlsearch を自動的
に実行します。
したがって、デフォルトの updatetime だと仮定すると、hlsearch はアイドル時間の
4 秒後に一時停止/オフになります。
プラグインが読み込まれた後にその効果を無効にするには:
パッケージについてのより詳しい情報は次の項目を参照してください: packages
==============================================================================
05.6 プラグインの追加 add-plugin plugin
プラグインを追加することで機能拡張できます。プラグインといっても、Vimが起動さ
れたときに自動的に読み込まれるだけの、ただの Vim script ファイルです。ファイル
をプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。
{+evalが有効な場合のみ利用できます}
2 種類のプラグインがあります。
グローバルプラグイン 全種類のファイルで使われるプラグイン
ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン
まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明
add-filetype-pluginをします。
グローバルプラグイン standard-plugin distributed-plugins
Vim を起動すると、自動的にいくつものグローバルプラグインがロードされます。特に
何もしなくて大丈夫です。グローバルプラグインは、ほとんどの人が欲しいと思うだろ
う機能を提供しています。それらの機能は Vim の中にコンパイルして組み込まれてい
るのではなく、Vim script として実装されています。ヘルプの目次にプラグインの一
覧があります standard-plugin-list。
ローカルにインストールされたプラグインとパッケージ (別個のヘルプファイルが付属)
については、同様のリストがヘルプセクション local-additions にあります。
load-pluginsも参照してください。
add-global-plugin
グローバルプラグインを追加すると、いつでもその機能を使えるようになります。
グローバルプラグインを追加するのは簡単です。
1. プラグインを入手する
2. 正しいディレクトリにコピーする
グローバルプラグインを入手する
プラグインはどこにありますか?
- いくつかは常に読み込まれます。それらは $VIMRUNTIME/plugin ディレクトリの中で
見ることができます。
- Vim の配布物にいくつか含まれています。$VIMRUNTIME/macros ディレクトリおよび
そのサブディレクトリおよび $VIM/vimfiles/pack/dist/opt/ 以下をご覧ください。
- インターネットからダウンロードする。たくさんのプラグインが
http://www.vim.org にあります。
- Vim のメーリングリストmaillistに投稿されることもあります。
- あなたが自作することもできます。プラグインの書き方write-pluginをどうぞ。
いくつかのプラグインは vimball アーカイブで配布されています。vimball参照。
いくつかのプラグインは自動更新可能です。getscript参照。
グローバルプラグインを使う
まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。
次にそれをプラグインディレクトリにコピーします。
system plugin directory
Unix ~/.vim/plugin/
PC $HOME/vimfiles/plugin or $VIM/vimfiles/plugin
Amiga s:vimfiles/plugin
Macintosh $VIM:vimfiles:plugin
Mac OS X ~/.vim/plugin/
Unixの場合の例 (プラグインディレクトリがまだない場合)
これだけです。もうこのプラグインで定義されたコマンドが使えます。
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.7 ヘルプファイルの追加 add-local-help
運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘルプ
ファイルのインストール方法を説明します。インストールしておけば新しいプラグイン
のヘルプを簡単に調べることができます。
"doit.vim" プラグインを例にやってみましょう。このプラグインにはヘルプ
"doit.txt" が付属しています。最初にプラグイン本体を適切なディレクトリにコ
ピーしましょう。(ディレクトリがすでにある場合は、"mkdir" コマンドを省
略してください。)
"cp" は Unix のコマンドです。MS-Windows では "copy" を使ってください。
次に 'runtimepath' のいずれかのディレクトリに "doc" ディレクトリを作ります。
"doc" ディレクトリにヘルプファイルをコピーします。
続いて、新しいヘルプファイルの項目にジャンプできるように仕掛けをします。
:helptagsコマンドを使ってタグファイルを生成してください。
さて、これで次のコマンドが使えます。
これは上で追加したヘルプファイルの中から "doit" のヘルプを探すコマンドです。次
のコマンドでローカルヘルプの目次を見ることができます。
ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ
を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン
プもできます。
ローカルヘルプファイルの書き方についてはwrite-local-helpを参照してください。
==============================================================================
05.8 オプションウィンドウ
何かのオプションを探しているなら、ヘルプファイル 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.9 よく使うオプション
Vim には本当に大量のオプションがあります。ほとんどのオプションは使う機会がない
と思います。ここでは一部のよく使うものだけを説明します。これらのオプションには
より詳しいヘルプがあることをお忘れなく。ヘルプを見るには、":help" に続けてアポ
ストロフィで囲んだオプション名を指定してください:
オプションの値がおかしくなってしまったら、初期設定に戻すことができます。初期設
定に戻すのにはアンパサンド(&)を使います:
行の折り返しの禁止
長い行は、文の全体が見えるように、画面の右端で折り返して表示されます。しかし
ウィンドウの右にはみ出した方が良い場合もあります。その場合は、左右にスクロール
して長い行を表示することになります。次のコマンドで折り返ししないようになりま
す:
表示されていない領域にカーソルを動かすと自動的にスクロールされます。10 文字ず
つスクロールするには、次のようにします:
これはファイルの内容には影響しません。表示方法を変更するだけです。
折り返して移動するコマンド
ほとんどの移動コマンドは行頭と行末で移動を停止します。'whichwrap' オプションで
それを変更できます。次の例では、'whichwrap' を初期設定に設定しています:
ここでは、<BS> キーで行頭から 1 つ上の行の行末へ動くことを許可しています。ま
た、<Space> キーで行末から次の行の行頭への移動することを許可しています。
カーソルキーの <Left> と <Right> もこのコマンドで折り返しを許可できます:
この指定はノーマルモードでのみ有効です。挿入モードでも <Left> と <Right> を許
可するには次のように指定します:
他にもいくつかフラグがあります。詳しくは 'whichwrap' を参照してください。
TAB を表示する
ファイル中に Tab 文字があっても、それを視認することはできません。Tab 文字が表
示されるようにしましょう:
Tab 文字が ^I と表示されます。行末には $ と表示され、通常なら気づかないような、
行末の空白もよくわかるようになります。
これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末
か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ
とができます。'listchars' オプションを使ってください:
Tab 文字は全て ">---" と表示され、行末の空白は "-" と表示されます。この方がずっ
とイイと思いませんか?
キーワード
'iskeyword' オプションは単語に使える文字を定義しています:
"@" は「すべてのアルファベット」を表しています。"48-57" は ASCII コード の 48
から 57 までの文字、つまり "0" から "9" までの数字を表しています。"192-255" は
印字可能なラテン文字です。
例えば、"upper-case" を1つの単語と扱って欲しい場合は、"-" をキーワードに追加
します。次のように設定してください:
新しい設定をみると、"-" の直前に "," が自動的に追加されています。
キーワードから文字を削除するには "-=" を使います。アンダースコアを削除するには
次のようにします:
"_" を削除すると "," も自動的に削除されました。
メッセージ行
初期設定では、最下段の一行がメッセージの表示に使われます。メッセージが長いとき
は、メッセージを切り詰めて一部だけ表示するか、メッセージをスクロールして表示
し、最後に <Enter> を押してもらうかのどちらかです。
メッセージの表示に使う行数は 'cmdheight' オプションで設定できます:
編集画面が狭くなってしまうので、ほどほどの値を設定してください。
==============================================================================
次章: usr_06.txt 構文強調表示
Copyright: see manual-copyright vim:tw=78:ts=8:noet:ft=help:norl:
VIM USER MANUAL - by Bram Moolenaar
設定の変更
あなたの望みどおりに Vim をチューニングできます。本章では、好みの設定で Vim を
起動する方法を説明します。Vim にプラグインを追加して機能拡張したり、自分でマク
ロを定義する方法も説明します。
05.1 vimrc ファイル
05.2 見本 vimrc ファイルの解説
05.3 defaults.vim ファイルの解説
05.4 簡単なマップ
05.5 パッケージの追加
05.6 プラグインの追加
05.7 ヘルプファイルの追加
05.8 オプションウィンドウ
05.9 よく使うオプション
次章: usr_06.txt 構文強調表示
前章: usr_04.txt 簡単な編集
目次: usr_toc.txt
==============================================================================
05.1 vimrc ファイル vimrc-intro
よく使うコマンドを入力するのが面倒に感じたことがあるでしょう。好みのオプション
やマップを設定した状態で Vim を起動するには、vimrc というファイルに設定を書い
てください。そのファイルに書いたコマンドは、Vim が起動するときに実行されます。
すでに vimrc ファイルがある場合 (例えばシステム管理者が設置した場合など) は、
次のコマンドでそのファイルを開くことができます:
:edit $MYVIMRC
vimrc ファイルがまだない場合は vimrc を参照して vimrc ファイルを作成する場所
を確認してください。":version" コマンドで表示される "ユーザー vimrc" の表示を
見て確認することもできます。
Unix と Macintosh ではこのファイルを使ってください。
~/.vimrc
MS-Windows では次のどちらかです。
$HOME/_vimrc
$VIM/_vimrc
もし初めて vimrc ファイルを作るのであれば、次の 1 行を先頭に記述するのがよいで
しょう:
source $VIMRUNTIME/defaults.vim
これは Vim を (従来の Vi ユーザー向けではなく) 新規ユーザー向けに初期化します。
詳細については defaults.vim を参照してください。
vimrc ファイルには、コロン (:) を押してから入力するコマンドなら、どのコマンド
でも書くことができます。一番単純なものはオプション設定です。例えば、毎回
'incsearch' オプションをオンに設定したい場合は、vimrc ファイルに次の一行を加え
ます。
set incsearch
この新しい行を有効にするには、Vim を終了し、再起動する必要があります。再起動し
ないで設定を反映する方法は後で説明します。
この章では、ごく基本的な項目だけを説明します。Vim script のより詳しい情報につ
いては usr_41.txt を参照してください。
==============================================================================
05.2 見本 vimrc ファイルの解説 vimrc_example.vim
第一章では、Vim の配布物に付属の見本 vimrc ファイルを使って、非互換モード
(not-compatible参照) で Vim を起動する方法を説明しました。見本 vimrc ファイ
ルは次のディレクトリにあります:
$VIMRUNTIME/vimrc_example.vim
この節では、このファイルで使われているコマンドを説明します。自分用の設定をする
ときの参考にしてください。しかし、全てを説明するわけではないので、詳しいことは
":help" コマンドで調べてください。
" ほとんどのユーザーが望むデフォルトを取得する
source $VIMRUNTIME/defaults.vim
source $VIMRUNTIME/defaults.vim
これは、$VIMRUNTIME ディレクトリにある "defaults.vim" ファイルをロードします。
これは、ほとんどのユーザーが好むようにVimを設定します。あなたがそうでない少数
のうちの1人であるならば、この行をコメントアウトしてください。以下にコマンドに
ついて説明します:
defaults.vim-explained
if has("vms")
set nobackup
else
set backup
if has('persistent_undo')
set undofile
endif
endif
set nobackup
else
set backup
if has('persistent_undo')
set undofile
endif
endif
これは、上書きするときにファイルのバックアップコピーを保存するようにVimに指示
します。しかし、VMSシステムではそうではありません。古いバージョンのファイルを
すでに保持しているからです。バックアップファイルは元のファイルと同じ名前で "~"
が追加されます。07.4 を参照してください。
可能であれば、'undofile' オプションも設定します。これはマルチレベルのアンドゥ
情報をファイルに保存します。その結果、あなたがファイルを変更してVimを終了し、
そして再びそのファイルを編集するとき、あなたは以前におこなわれた変更を元に戻す
ことができます。ファイルを保存するという犠牲を払って、それは非常に強力で便利な
機能です。詳しくは undo-persistence を参照してください。
"if" コマンドは、ある条件が満たされたときだけオプションを設定するのに非常に役
に立ちます。詳しくは usr_41.txt を参照ください。
if &t_Co > 2 || has("gui_running")
set hlsearch
endif
set hlsearch
endif
これは 'hlsearch' オプションをオンにして、最後に使用された検索パターンをハイラ
イトするようにVimに指示します。
augroup vimrcEx
au!
autocmd FileType text setlocal textwidth=78
augroup END
au!
autocmd FileType text setlocal textwidth=78
augroup END
これはVimがテキストを改行して行が78文字を超えないようにします。ただし、プレー
ンテキストとして検出されたファイルに対してのみです。ここには実際には2つの部分
があります。 "autocmd FileType text" は自動コマンドです。 これは、ファイルタイ
プが "text" に設定されているとき、後続のコマンドが自動的に実行されることを定義
します。"setlocal textwidth=78" は 'textwidth' オプションを78に設定しますが、1
つのファイル内でローカルにのみです。
"augroup vimrcEx" と "augroup END" を含むラッパーは、"au!" を使って自動コマン
ドを削除することを可能にします。 コマンド。:augroup を参照してください。
if has('syntax') && has('eval')
packadd! matchit
endif
packadd! matchit
endif
必要な機能が利用できる場合、"matchit" プラグインをロードします。
それは % コマンドをより強力にします。これは matchit-install で説明されてい
ます。
==============================================================================
05.3 The defaults.vim ファイルの解説 defaults.vim-explained
defaults.vim ファイルは、ユーザーがvimrcファイルを持っていないときにロードさ
れます。 新しいvimrcファイルを作成するときは、それを使い続けるためにこの行を先
頭近くに追加します:
source $VIMRUNTIME/defaults.vim
または、上で説明したように vimrc_example.vim ファイルを使用してください。
以下に defaults.vim がしていることを説明します。
if exists('skip_defaults_vim')
finish
endif
finish
endif
defaults.vim の読み込みは、次のコマンドで無効にできます:
let skip_defaults_vim = 1
これはシステムのvimrcファイルで行わなければなりません。system-vimrc を参照してください。あなたがユーザーvimrcを持っているなら、defaults.vim は自動的にロー
ドされないので、これは必要ではありません。
set nocompatible
第一章で述べたように、このマニュアルでは「Vim」について説明しているので、Vi と
は完全に互換性がない部分があります。ここに書かれたように動作させるには、
'compatible' オプションをオフに設定する、すなわち 'nocompatible' にする必要が
あります。
set backspace=indent,eol,start
挿入モードで <BS> を使って削除できる文字を指定しています。コンマで区切られた三
つの部分はそれぞれ次の文字の削除を許可しています。'backspace' を参照してくださ
い。
indent 行頭の空白
eol 改行
start 挿入モード開始位置より手前の文字
set history=200
コマンドを200個分、検索パターンを200個分、ヒストリ(履歴)として残します。記録の
容量を増減したいときはこの値を変更してください。'history' を参照してください。
set ruler
現在のカーソル位置(行、桁)を Vim ウィンドウの右下に常に表示します。'ruler' を
参照してください。
set showcmd
入力途中の (まだ実行していない) コマンドを Vim ウィンドウの右下 (rulerの左側)
に表示します。例えば、"2f" と入力したとき、Vim は検索文字の入力を待っていて、
画面の右下には "2f" と表示されます。次に "w" と入力すると、"2fw" というコマン
ドが完成するので、それが実行され、画面の "2f" という表示も消去されます。
+-------------------------------------------------+
|text in the Vim window |
|~ |
|~ |
|-- VISUAL -- 2f 43,8 17% |
+-------------------------------------------------+
^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^
'showmode' 'showcmd' 'ruler'
set wildmenu
補完候補をステータス行に表示します。それは <Tab> をタイプしたときで、複数の一
致があるときです。'wildmenu' を参照してください。
set ttimeout
set ttimeoutlen=100
set ttimeoutlen=100
これにより、Escキーを押した時の効果が早くなります。通常、VimはEscがエスケープ
シーケンスの始まりであるかどうかを確認するために1秒待ちます。非常に遅いリモー
ト接続の場合は、数を増やしてください。'ttimeout' を参照してください。
set display=truncate
最後の行が切り捨てられる場合は、行全体を非表示にするのではなく、@@@ を表示しま
す。'display' を参照してください。
set incsearch
検索パターンを入力中に、入力途中のパターンにマッチする文字列を表示します。
'incsearch' を参照してください。
set nrformats-=octal
ゼロで始まる数字を8進数として認識しません。'nrformats' を参照してください。
map Q gq
キーマップを定義しています。詳しくは次の節で述べます。ここでは、"gq" オペレー
タのフォーマット機能を "Q" コマンドとして定義しています。"Q" の動作が Vim 4.0
以前と同じになります。実際の "Q" は EX モードへの移行コマンドですが、おそらく
必要ないでしょう。
inoremap <C-U> <C-G>u<C-U>
挿入モードで CTRL-U を押すと、現在行に入力されているすべてのテキストが削除され
ます。 最初の改行のアンドゥに CTRL-G u を使用するので、改行を挿入した後に
CTRL-U でアンドゥすることができます。":iunmap <C-U>" で元に戻します。
if has('mouse')
set mouse=a
endif
set mouse=a
endif
可能であればマウスの使用を有効にします。'mouse' を参照してください。
vnoremap _g y:exe "grep /" .. escape(@", '\\/') .. "/ *.c *.h"<CR>
このマップは、選択されたテキストをヤンクして、それを C ファイルの中から検索し
ます。マップを使ってとても難しいことができるということが分かってもらえたと思い
ます。とはいっても、実際にコマンドを手入力するのと同じように一連のコマンドを実
行しているに過ぎません。
syntax on
カラーでファイルをハイライトすることを有効にします。syntax を参照してくださ
い。
vimrc-filetype
filetype plugin indent on
三つの便利な機能を有効にしています:
1. ファイルタイプの検出
ファイルを開いたときに、そのファイルの種類を特定します。例えば、"main.c" を
開いた場合は、拡張子の ".c" を見てファイルタイプは "c" だと判断します。ファ
イルの一行目が "#!/bin/sh" で始まっていた場合は、ファイルタイプは "sh" だと
判断します。
検出されたファイルタイプは構文強調と次の 2 つの項目で使われます。
filetypes参照。
2. ファイルタイププラグインを使う
ファイルを開いたときに、ファイルタイプに応じたオプションが設定されます。例
えば、"c" ファイルの場合なら自動的にインデントしてくれる 'cindent' オプショ
ンは欠かせないでしょう。こういった、一般的に便利な設定がファイルタイププラ
グインの中に入っています。自分でプラグインを追加することもできます。
write-filetype-plugin参照。
3. インデントファイルを使う
プログラミング言語のインデントはほとんど自動的に計算できます。Vim にはファ
イルタイプに応じたインデントルールが数多く用意されています。
:filetype-indent-on と 'indentexpr' 参照。
restore-cursor last-position-jump
augroup RestoreCursor
autocmd!
autocmd BufReadPost *
\ let line = line("'\"")
\ | if line >= 1 && line <= line("$") && &filetype !~# 'commit'
\ && index(['xxd', 'gitrebase'], &filetype) == -1
\ | execute "normal! g`\""
\ | endif
augroup END
autocmd!
autocmd BufReadPost *
\ let line = line("'\"")
\ | if line >= 1 && line <= line("$") && &filetype !~# 'commit'
\ && index(['xxd', 'gitrebase'], &filetype) == -1
\ | execute "normal! g`\""
\ | endif
augroup END
自動コマンドをもう一つ。ファイルを読み込んだ直後に実行される自動コマンドを定義
しています。後ろのごちゃごちゃした部分は「'" マークが定義されているかどうかを
チェックし、定義があればそこにジャンプする」という意味です。コミットやリベース
メッセージの場合は、前回とは違うメッセージになる可能性が高く、また、xxd(1) を
使ってバイナリファイルをフィルタリングして編集を行う場合は、入力ファイルを行っ
たり来たり変換して、いわば二面性を持っているため、このようなことは行いません。
using-xxd も参照してください。
コマンドを複数行に分けて書くために、行頭に "\" を書いています。行がやたらと長
くなるのを防ぐためです。line-continuation 参照。"\" は Vim script 内でのみ使
えます。コマンドラインで入力するときは使えません。
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
\ | wincmd p | diffthis
\ | wincmd p | diffthis
これは ":DiffOrig" コマンドを追加します。修正されたバッファでロードされたファ
イルとの違いを見るためにこれを使ってください。diff および :DiffOrig を参照
してください。
set nolangremap
langmapオプションがマッピングから生じる文字に適用されるのを防ぎます。設定され
ている場合(デフォルト)、これはプラグインを壊すかもしれません(でも、それは後方
互換です)。'langremap' を参照してください。
==============================================================================
05.4 簡単なマップ
マップを使うと、複数のコマンドを 1 つのキー繰作にまとめることができます。例え
ば、ある単語を {} で囲みたいとします。つまり、"amount" を "{amount}" にしたい
わけです。:map コマンドを使って、その操作を <F5> キーに割り当てることができま
す。次のように書きます。
:map <F5> i{<Esc>ea}<Esc>
Note:
このコマンドを入力するときの注意点。
<F5> は見たままの 4 文字の文字列として入力してください。<Esc> も同じで
す。<Esc> キーを押すのではなく、5 文字の文字列として入力してください。
このマニュアルを読むときはその違いに注意してください !
この定義を分解してみましょう。
<F5> ファンクションキーのF5です。このキーを押すと、定義してあるコマ
ンドが実行されます。
i{<Esc> "{" 文字を挿入し、<Esc> キーで挿入モードから抜けます。
e 単語の末尾に移動します。
a}<Esc> "}" 文字を追加します。
この ":map" コマンドを実行した後は、カーソルを単語の先頭に動かして F5 キーを押
すだけで単語の両側に {} を追加できます。
この例では、コマンドは 1 キーでしたが、どの文字列でも割り当てることができます。
ただし、Vim のコマンドと同じ文字列を割り当てると、元のコマンドが使えなくなるの
で、それは避けた方が無難です。
複数キーを組み合わせるときには、バックスラッシュ(日本語環境では円記号)がよく使
われます。マップをたくさん定義したい場合は、複数文字を使ってください。例えば、
単語を () で囲むには "\p" で、単語を {} で囲むには "\c" で、といったことができ
ます。
:map \p i(<Esc>ea)<Esc>
:map \c i{<Esc>ea}<Esc>
:map \c i{<Esc>ea}<Esc>
"\" と "p" はくっつけてください。そうすれば Vim は 2 文字のマップだと認識でき
ます。
引数なしの ":map" コマンドで現在のマップ定義の一覧を表示できます。表示された
マップは、少なくともノーマルモードで使えます。より詳しくは40.1章を参照してく
ださい。
==============================================================================
05.5 パッケージの追加 add-package matchit-install
パッケージとはVimに追加するファイルの集合です。パッケージには、任意のタイミン
グで読み込めるものと、起動時に自動的に読み込まれるものの2種類があります。
Vim は、数個の任意に読み込めるパッケージと一緒に配布されています。例えば
matchit プラグインです。このプラグインは "%" コマンドを、HTMLタグやVim script
の if/else/endif やその他のものにマッチするようにします。とても便利なのですが
後方互換性はありません。それがデフォルトでは無効にされている理由です。
matchit プラグインを使い始めるには、以下の行をあなたの vimrc ファイルに追加し
てください:
packadd! matchit
たったこれだけです。あとは Vim を再起動するだけで、このプラグインについてのヘ
ルプを見つけられます:
:help matchit
これが動作するのは :packadd でプラグインを読み込む際に、パッケージのディレク
トリを 'runtimepath' に追加するためです。それによりヘルプファイルを見つけられ
るようになります。
パッケージはインターネットの様々な場所から入手できるでしょう。通常それらは圧縮
アーカイブかリポジトリの形態を採用しているでしょう。アーカイブであれば以下のよ
うなステップでインストールできます:
1. パッケージディレクトリを作成する:
mkdir -p ~/.vim/pack/fancy
"fancy" はあなたの好きな名前に変更できます。パッケージを表すのに良いものを使いましょう。
2. そのディレクトリにアーカイブを解凍しましょう。以下はアーカイブ内の
トップディレクトリは "start" であると仮定しています:
cd ~/.vim/pack/fancy
unzip /tmp/fancy.zip
アーカイブ展開後のレイアウトが、以下のようなパスになっていなけれunzip /tmp/fancy.zip
ば、適宜修正してください:
~/.vim/pack/fancy/start/fancytext/plugin/fancy.vim
ここの "fancytext" はパッケージ名なので、実際には別の名前になるで
しょう。
editorconfig パッケージの追加 editorconfig-install
matchit パッケージと同様に、Vim の起動時に配布されている editorconfig プラグイ
ンを読み込むには、vimrc ファイルに以下の行を追加します:
packadd! editorconfig
Vim を再起動するとプラグインがアクティブになり、以下でプラグインについて読むこ
とができます:
:h editorconfig.txt
コメントパッケージの追加 comment-install
以下のコマンドを使用してプラグインをロードします:
packadd comment
こうすることで、コメント用の gc および同じようなデフォルトキーバインディング
(Vim コミュニティでは定評のあるマッピングです) でプラグインを使用できます。
この行を vimrc ファイルに追加した場合は、Vim を再起動してパッケージを読み込む
必要があります。パッケージがロードされたら、以下を読んでください:
:h comment.txt
nohlsearch パッケージの追加 nohlsearch-install
以下のコマンドを使用してプラグインをロードします:
packadd nohlsearch
'updatetime' の後、または Insert モードに入った後に、:nohlsearch を自動的
に実行します。
したがって、デフォルトの updatetime だと仮定すると、hlsearch はアイドル時間の
4 秒後に一時停止/オフになります。
プラグインが読み込まれた後にその効果を無効にするには:
au! nohlsearch
パッケージについてのより詳しい情報は次の項目を参照してください: packages
==============================================================================
05.6 プラグインの追加 add-plugin plugin
プラグインを追加することで機能拡張できます。プラグインといっても、Vimが起動さ
れたときに自動的に読み込まれるだけの、ただの Vim script ファイルです。ファイル
をプラグインディレクトリにコピーするだけで簡単にプラグインを追加できます。
{+evalが有効な場合のみ利用できます}
2 種類のプラグインがあります。
グローバルプラグイン 全種類のファイルで使われるプラグイン
ファイルタイププラグイン 特定タイプのファイルでのみ使われるプラグイン
まず、グローバルプラグインについて説明し、次にファイルタイププラグインの説明
add-filetype-pluginをします。
グローバルプラグイン standard-plugin distributed-plugins
Vim を起動すると、自動的にいくつものグローバルプラグインがロードされます。特に
何もしなくて大丈夫です。グローバルプラグインは、ほとんどの人が欲しいと思うだろ
う機能を提供しています。それらの機能は Vim の中にコンパイルして組み込まれてい
るのではなく、Vim script として実装されています。ヘルプの目次にプラグインの一
覧があります standard-plugin-list。
ローカルにインストールされたプラグインとパッケージ (別個のヘルプファイルが付属)
については、同様のリストがヘルプセクション local-additions にあります。
load-pluginsも参照してください。
add-global-plugin
グローバルプラグインを追加すると、いつでもその機能を使えるようになります。
グローバルプラグインを追加するのは簡単です。
1. プラグインを入手する
2. 正しいディレクトリにコピーする
グローバルプラグインを入手する
プラグインはどこにありますか?
- いくつかは常に読み込まれます。それらは $VIMRUNTIME/plugin ディレクトリの中で
見ることができます。
- Vim の配布物にいくつか含まれています。$VIMRUNTIME/macros ディレクトリおよび
そのサブディレクトリおよび $VIM/vimfiles/pack/dist/opt/ 以下をご覧ください。
- インターネットからダウンロードする。たくさんのプラグインが
http://www.vim.org にあります。
- Vim のメーリングリストmaillistに投稿されることもあります。
- あなたが自作することもできます。プラグインの書き方write-pluginをどうぞ。
いくつかのプラグインは vimball アーカイブで配布されています。vimball参照。
いくつかのプラグインは自動更新可能です。getscript参照。
グローバルプラグインを使う
まず、プラグイン自身のドキュメントを読んで、動作条件を確認してください。
次にそれをプラグインディレクトリにコピーします。
system plugin directory
Unix ~/.vim/plugin/
PC $HOME/vimfiles/plugin or $VIM/vimfiles/plugin
Amiga s:vimfiles/plugin
Macintosh $VIM:vimfiles:plugin
Mac OS X ~/.vim/plugin/
Unixの場合の例 (プラグインディレクトリがまだない場合)
mkdir ~/.vim
mkdir ~/.vim/plugin
cp /tmp/yourplugin.vim ~/.vim/plugin
mkdir ~/.vim/plugin
cp /tmp/yourplugin.vim ~/.vim/plugin
これだけです。もうこのプラグインで定義されたコマンドが使えます。
plugin/ ディレクトリ以下にファイルを置く代わりに、それらのファイルを plugin/
ディレクトリ以下のサブディレクトリに置くこともできます。例えば、Perl 用のプラ
グインを "~/.vim/plugin/perl/*.vim" に置いたりできます。
ファイルタイププラグイン add-filetype-plugin ftplugins
Vim の配布パッケージにはたくさんのファイルタイププラグインが入っています。
次のコマンドで利用開始できます。
:filetype plugin on
これだけです。vimrc-filetypeも参照してください。
使いたいファイルタイププラグインがない場合や、標準より良いものを見つけた場合
は、追加することもできます。ファイルタイププラグインの追加は次の手順で行いま
す:
1. プラグインを入手する
2. 正しいディレクトリにコピーする
ファイルタイププラグインを入手する
ファイルタイププラグインもグローバルプラグインと同じ方法で入手できます。プラグ
インの種類が記載されているのでそれを見て、そのプラグインがグローバルプラグイン
かファイルタイププラグインか確認してください。$VIMRUNTIME/macros に入っている
のはグローバルプラグインです。$VIMRUNTIME/ftplugin に入っているのはファイルタ
イププラグインです。
ファイルタイププラグインを使う ftplugin-name
ファイルタイププラグインは正しいディレクトリにコピーするだけで追加できます。
ディレクトリの場所はグローバルプラグインと同じですが、ディレクトリ名の最後の部
分が "ftplugin" となります。例えば "stuff" ファイルタイプ用のプラグインを Unix
システムに入れるとしましょう。入手したファイルを次のコマンドで ftplugin ディレ
クトリに移します:
mv thefile ~/.vim/ftplugin/stuff.vim
そのファイルがすでにある場合は、既存のプラグインと追加しようとしているプラグイ
ンを同時に使っても問題ないかどうか確認してください。問題がなければ別の名前に変
えましょう:
mv thefile ~/.vim/ftplugin/stuff_too.vim
アンダースコアはファイルタイプの名前とそれ以外を区切るのに使います。アンダース
コア以降はどんな文字列でも構いません。しかし、"otherstuff.vim" といった名前に
した場合はうまく動きません。そのファイルは "otherstuff" というファイルタイプの
ときにだけロードされます。
MS-DOS ライクなファイルシステムでは長いファイル名が使えません。プラグインを追
加するときに、ファイルタイプ名が 6 文字以上だと問題が生じます。そういうときは
さらにディレクトリを掘ってください:
mkdir $VIM/vimfiles/ftplugin/fortran
copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
ファイルタイププラグインの名前付けルールは次の通りです:
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
"<name>" の部分はどんな文字列でも構いません。
以下は Unix での "stuff" ファイルタイプの例です:
~/.vim/ftplugin/stuff.vim
~/.vim/ftplugin/stuff_def.vim
~/.vim/ftplugin/stuff/header.vim
~/.vim/ftplugin/stuff_def.vim
~/.vim/ftplugin/stuff/header.vim
<filetype> の部分はプラグインの対象になっているファイルタイプ名です。同じファ
イルタイプのファイルだけがそのプラグインを使います。<name> の部分は無視されま
す。一つのファイルタイプに複数のプラグインを登録する場合に使ってください。
Note: ファイルの拡張子は必ず ".vim" にしてください。
詳しくは以下を参照してください:
filetype-plugins ファイルタイププラグインについてのドキュメントと、マッ
プで問題が発生した場合の対処方法。
load-plugins 起動時にロードされるグローバルプラグイン。
ftplugin-overrule 標準のファイルタイププラグインの設定を上書きする。
write-plugin プラグインスクリプトの書き方。
plugin-details プラグインの使い方やプラグインが動かない場合について
の詳細な情報。
new-filetype 新しいファイルタイプを追加するには。
==============================================================================
05.7 ヘルプファイルの追加 add-local-help
運が良ければ、プラグインにはヘルプファイルが添付されています。ここでは、ヘルプ
ファイルのインストール方法を説明します。インストールしておけば新しいプラグイン
のヘルプを簡単に調べることができます。
"doit.vim" プラグインを例にやってみましょう。このプラグインにはヘルプ
"doit.txt" が付属しています。最初にプラグイン本体を適切なディレクトリにコ
ピーしましょう。(ディレクトリがすでにある場合は、"mkdir" コマンドを省
略してください。)
:!mkdir ~/.vim
:!mkdir ~/.vim/plugin
:!cp /tmp/doit.vim ~/.vim/plugin
:!mkdir ~/.vim/plugin
:!cp /tmp/doit.vim ~/.vim/plugin
"cp" は Unix のコマンドです。MS-Windows では "copy" を使ってください。
次に 'runtimepath' のいずれかのディレクトリに "doc" ディレクトリを作ります。
:!mkdir ~/.vim/doc
"doc" ディレクトリにヘルプファイルをコピーします。
:!cp /tmp/doit.txt ~/.vim/doc
続いて、新しいヘルプファイルの項目にジャンプできるように仕掛けをします。
:helptagsコマンドを使ってタグファイルを生成してください。
:helptags ~/.vim/doc
さて、これで次のコマンドが使えます。
:help doit
これは上で追加したヘルプファイルの中から "doit" のヘルプを探すコマンドです。次
のコマンドでローカルヘルプの目次を見ることができます。
:help local-additions
ここには、インストールしたローカルヘルプのタイトルが自動的に追加されます。ここ
を見れば、どんなローカルヘルプが追加されているかわかります。ここからタグジャン
プもできます。
ローカルヘルプファイルの書き方についてはwrite-local-helpを参照してください。
==============================================================================
05.8 オプションウィンドウ
何かのオプションを探しているなら、ヘルプファイル options から見つけることが
できるでしょう。もう一つ、次のコマンドを使う方法もあります:
: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.9 よく使うオプション
Vim には本当に大量のオプションがあります。ほとんどのオプションは使う機会がない
と思います。ここでは一部のよく使うものだけを説明します。これらのオプションには
より詳しいヘルプがあることをお忘れなく。ヘルプを見るには、":help" に続けてアポ
ストロフィで囲んだオプション名を指定してください:
:help 'wrap'
オプションの値がおかしくなってしまったら、初期設定に戻すことができます。初期設
定に戻すのにはアンパサンド(&)を使います:
:set iskeyword&
行の折り返しの禁止
長い行は、文の全体が見えるように、画面の右端で折り返して表示されます。しかし
ウィンドウの右にはみ出した方が良い場合もあります。その場合は、左右にスクロール
して長い行を表示することになります。次のコマンドで折り返ししないようになりま
す:
:set nowrap
表示されていない領域にカーソルを動かすと自動的にスクロールされます。10 文字ず
つスクロールするには、次のようにします:
:set sidescroll=10
これはファイルの内容には影響しません。表示方法を変更するだけです。
折り返して移動するコマンド
ほとんどの移動コマンドは行頭と行末で移動を停止します。'whichwrap' オプションで
それを変更できます。次の例では、'whichwrap' を初期設定に設定しています:
:set whichwrap=b,s
ここでは、<BS> キーで行頭から 1 つ上の行の行末へ動くことを許可しています。ま
た、<Space> キーで行末から次の行の行頭への移動することを許可しています。
カーソルキーの <Left> と <Right> もこのコマンドで折り返しを許可できます:
:set whichwrap=b,s,<,>
この指定はノーマルモードでのみ有効です。挿入モードでも <Left> と <Right> を許
可するには次のように指定します:
:set whichwrap=b,s,<,>,[,]
他にもいくつかフラグがあります。詳しくは 'whichwrap' を参照してください。
TAB を表示する
ファイル中に Tab 文字があっても、それを視認することはできません。Tab 文字が表
示されるようにしましょう:
:set list
Tab 文字が ^I と表示されます。行末には $ と表示され、通常なら気づかないような、
行末の空白もよくわかるようになります。
これの欠点はファイルに Tab 文字がたくさんあると見づらくなる点です。カラー端末
か GUI を使っている場合は、空白と Tab 文字を別の文字に置き換えて強調表示するこ
とができます。'listchars' オプションを使ってください:
:set listchars=tab:>-,trail:-
Tab 文字は全て ">---" と表示され、行末の空白は "-" と表示されます。この方がずっ
とイイと思いませんか?
キーワード
'iskeyword' オプションは単語に使える文字を定義しています:
:set iskeyword
iskeyword=@,48-57,_,192-255"@" は「すべてのアルファベット」を表しています。"48-57" は ASCII コード の 48
から 57 までの文字、つまり "0" から "9" までの数字を表しています。"192-255" は
印字可能なラテン文字です。
例えば、"upper-case" を1つの単語と扱って欲しい場合は、"-" をキーワードに追加
します。次のように設定してください:
:set iskeyword+=-
:set iskeyword
iskeyword=@,48-57,_,192-255,-:set iskeyword
新しい設定をみると、"-" の直前に "," が自動的に追加されています。
キーワードから文字を削除するには "-=" を使います。アンダースコアを削除するには
次のようにします:
:set iskeyword-=_
:set iskeyword
iskeyword=@,48-57,192-255,-:set iskeyword
"_" を削除すると "," も自動的に削除されました。
メッセージ行
初期設定では、最下段の一行がメッセージの表示に使われます。メッセージが長いとき
は、メッセージを切り詰めて一部だけ表示するか、メッセージをスクロールして表示
し、最後に <Enter> を押してもらうかのどちらかです。
メッセージの表示に使う行数は 'cmdheight' オプションで設定できます:
:set cmdheight=3
編集画面が狭くなってしまうので、ほどほどの値を設定してください。
==============================================================================
次章: usr_06.txt 構文強調表示
Copyright: see manual-copyright vim:tw=78:ts=8:noet:ft=help:norl: