編集環境の設定である。
viはある程度カスタマイズできる。
主な設定内容は:setと入力することでリスト表示される。
詳細設定まで全て確認したい場合は:set allと入力すれば良い。
次は、vim6.0上で:setにより表示されたリストである。
backupext=.bak
laststatus=2
showmatch
visualbell
ignorecase
ruler
smartcase
incsearch
scroll=11
ttyfast
基本的に初期設定のまま使って不自由しないと思うが、 一部頭の片隅においておくと便利な設定がある。
| コマンド | 動作 |
|---|---|
:set showmatch<return> |
showmatchを有効にする。 |
:set noshowmatch<return> |
showmatchを無効にする。 |
括弧の対応を確認することができるようになる。 具体的には、閉じ括弧を入力した際に、一瞬それに対応する括弧にカーソルが移動するのである。
例えば、次の文。というか、プログラムコード。
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
このように括弧が頻出するコードを書くときは、括弧の閉じ忘れなどがよく起こる。 この際、showmatchを設定しておけば防止を図れる。ここで最後に閉じ括弧を入力した瞬間・・・。
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")))
一瞬、対応する括弧にカーソルが跳んで・・・。
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")))
また戻ってくる。
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")))
これで括弧の対応が取れているかを確認できるわけである。 なかなか便利。
| コマンド | 動作 |
|---|---|
| :set tabstop=「num」<return> | タブ1文字の幅を半角「num」文字に設定する。 |
半角タブ1文字の幅を、半角何文字分として表示するかを設定する。 プログラムのコードを書くときなどは結構気になる要素なのである。 例えば、デフォルトで半角スペース8文字分になっているとする。 すると、タブでインデントさせているプログラムは次のように表示されるだろう。
|
cout ...とreturnの頭に、
タブ1文字が入力されている。
インデントが深すぎるんじゃぁ!という私のような人間は、
もっとコンパクトに、タブを半角スペース4文字分ぐらいにしておきたいのである。
この場合、次のように打つと・・・。
:set tabstop=4<return>
4というのが、タブの幅である。 先のコードは次のように表示されるはずだ。
|
| コマンド | 動作 |
|---|---|
:set number<return> |
行番号を表示する。 |
:set nonumber<return> |
行番号を非表示にする。 |
行番号の表示、非表示を設定する。 行番号を表示するように設定した場合、次のように行頭に行番号が表示されるはずである。
|
| コマンド | 動作 |
|---|---|
:set autoindent<return> |
autoindentを有効にする。 |
:set noautoindent<return> |
autoindentを無効にする。 |
改行した際に、手前の行のインデントに合わせて自動的にインデントを挿入する機能である。 例えば、次のように行頭に半角スペース8文字分のインデントを持つ文があったとする。
|
これに一行追加しよう、とoを入力した場合(入力と削除参照)、
autoindentの有無により次のように動作が変わる。
|
|
autoindentを設定している場合は、直前の行のインデントを引き継いでまず行頭に半角スペース8文字を挿入し、 その後から入力できるようになるが、設定していない場合はそんなことに関係なく行頭から入力開始になる。 プログラムやHTMLコードのようにインデントを多用するファイル編集で威力を発揮する。
| コマンド | 動作 |
|---|---|
:set cindent<return> |
cindentを有効にする。 |
:set nocindent<return> |
cindentを無効にする。 |
autoindentを、C言語プログラミング向けに特化したものである。 プログラミングをする時は、autoindentよりもこちらを有効にしておくと良い。 例えば、次のようにプログラムを書いているとする。
|
このままmain関数の中を入力しよう、と{の位置で改行する。
このとき、次のようになる。
|
|
関数の中身を実装するときはインデントを一段入れるのが普通だが、cindentを設定している場合はそのように勝手に調節してくれる。
このまま実装を進めて、次の状態まで持って行く。
|
あとは}を入力して関数を閉じるだけである。で、入力すると・・・。
|
勝手にインデントを落としてくれる。これは当然if文やfor文でも同じである。 autoindentがよりインテリジェントになっているわけである。
| コマンド | 動作 |
|---|---|
| :set shiftwidth=「num」<return> | autoindent時のインデント1段の深さを半角「num」文字に設定する。 |
tabstopによく似てるが、これはオートインデント時に使用するインデントの深さを設定する。 デフォルトでは、tabstop=4としても、オートインデント時は8文字分のインデントが挿入されてしまい気持ち悪い。 tabstopと同じ値にしておけば問題無いと思われる。
| コマンド | 動作 |
|---|---|
:set expandtab<return> |
ソフトタブを有効にする。 |
:set noexpandtab<return> |
ソフトタブを無効にする。 |
ソフトタブ設定。 ソフトタブとは、TABキーを押したときに、タブ文字の代わりに同じ幅の半角スペースを挿入する機能のことである。
タブ1文字の表示幅は、tabstopでわかるように人によって任意に変更できる。 これでは、使用しているビューアorエディタの設定によっては、編集者が意図したとおりの表示にならない可能性がある。 しかし、タブの代わりに半角スペースを使うようにすれば、環境によって表示幅が変わることがなくなるので、 誰が見ても見やすい表示になるはずである。
この設定を有効にすると、TABキーを押したときにshiftwidthで設定した文字数の半角スペースがタブの代わりに挿入されるようになる。
この状態でタブを入力したい場合は、Ctrl-V<tab>と入力する。
| コマンド | 動作 |
|---|---|
:set ignorecase<return> |
ignorecaseを有効にする。 |
:set noignorecase<return> |
ignorecaseを無効にする。 |
検索、または置換時に大文字、小文字の区別を無くすことができる。
例えば、keywordという単語を検索したいが、
その単語がkeywordと入力されているのか、Keywordなのか、
もしくはKEYWORDなのかわからない。
こういうときにignorecaseを有効にして/keywordと入力すれば、
上記3パターン全てにマッチする。
これらの設定を、viを起動するたびに毎回:setしていたのでは面倒なので、
あらかじめ設定しておいた状態でviが起動するようにすることができる。
設定内容を記述したファイルを~/.exrc(vimであれば~/.vimrcでも)という名前でホームディレクトリに配置しておけばよい。
.exrcには、上記で説明した設定コマンドをそのまま書き込んで置けばよい。
例えば、次のように書いておくのである。
set noautoindent
set tabstop=4
set showmatch
set number
exモードへの移行は考えなくてよいので、:は記述しない。