|
なりた
環境設定 |
モード |
操作 |
コマンド |
戻る
vimについて ( vim 6.1.113 )
環境設定編
僕はvimを常用しているが、イマイチ効率的な使い方をしていない。
コマンドもあまり知らないし、rcファイルもいつも適当。
まあそれでも実際vimを使ってプログラムが書けてしまう訳で、「まあ、いいか・・・」となってしまうのである。
わからないことがあるとWEBで調べるが、それもすぐに忘却。
ということで調べたことを忘れないようにこのページに残していこうと思う。
まずvimの環境設定ファイル「.vimrc」について調べたこと記録することにする。
目次
・全般
vimの全般的な設定
・検索
文字列の検索に関する設定
・装飾
見栄えやステータスラインに関する設定
・編集・整形
文章の編集、整形に関する設定
・ファイル
ファイル操作に関する設定
・国際化
文字エンコーディングに関する設定
・Function
Functionについて
・vimrc
vimrcファイル
・set nocompatible
viとの互換性をとらないようにする。vimの独自拡張機能も使いたいのでセットする。
・set history=50
コマンド、検索パターンを50個まで履歴に残す。
・set ignorecase
索文字列が小文字の場合は大文字小文字を区別なく検索する。
・set smartcase
検索文字列に大文字が含まれている場合は区別して検索する。
・set wrapscan
索時に最後まで行ったら最初に戻る。
・noincsearch
検索文字列入力時に順次対象文字列にヒットさせない。
・set nonumber
行番号を表示させない。
・set title
タイトルをウインドウ枠に表示する。
・set ruler
ルーラーを表示する。
・set nolist
タブや改行を表示しない。
・set showcmd
入力中のコマンドをステータスに表示する。
・showmatch
括弧入力時の対応する括弧を表示する。
・set laststatus=2
テータスラインを常に表示する。
・set statusline=%y%{GetStatusEx()}%F%m%r%=<%c:%l>
ステータスラインに表示する項目の指定する。
この例では、後述するfunction "GetStatusEx()"を使って使用中の文字コードと改行コードのタイプを表示させている。

・hi StatusLine term=NONE cterm=NONE ctermfg=black ctermbg=white
ステータスラインの色を定義する。
・syntax on
シンタックスハイライトを有効にする。
・set hlsearch
検索結果文字列のハイライトを有効にする。
・set backspace=indent,eol,start
backspaceキーの挙動を設定する。
indent : 行頭の空白の削除を許す。
eol : 改行の削除を許す。
start : 挿入モードの開始位置での削除を許す。
・set autoindent
新しい行を直前の行と同じインデントにする。
・set tabstop=4
Tab文字を画面上の見た目で何文字幅にするか設定
・set shiftwidth=4
cindentやautoindent時に挿入されるタブの幅。
・set shiftwidth=4
Tabキー使用時にTabでは無くホワイトスペースを入れたい時に使用する。
この値が0以外の時はtabstopの設定が無効になる。
・set noexpandtab
Tab文字を空白に置き換えない。
・set nobackup
バックアップファイルを作成しない。
set encoding=euc-jp
set termencoding=euc-jp
set fileencoding=euc-jp
set fileencodings=ucs-bom,iso-2022-jp,utf-8
set fileencodings+=,ucs-2le,ucs-2,cp932,euc-jp
この時、fileencodingsに指定する文字エンコーディングの順序が重要。
encodingで指定している文字エンコーディングは、fileencodings中の一番最後に書く。
なんでもvimはfileencodingsに指定された順序でエンコーディングを試みるらしいが、そのfileencodings中の値がencodingで指定されている
値と一致するとそれ以上のマッチを行わずencodingで指定された値でファイルを開いてしまうらしい。
fileencodingsの一番最後にeuc-jpと書いたのだが、これは書いても書かなくても関係ないらしい。
しかしながら後述のステータスリストに文字コードの表示をさせたいので、一応入れておいた。
- 現状の問題点 -
asciiのテキストファイルを開くとiso-2022-jpと認識されてしまう。
で、fileencodingsにus-asciiを追加すると今度はiso-2022-jpのファイルを開いた時にus-asciiと認識されてしまう。
その気持はわからないでもないが、とても不便。
現状ではこのようなケースでは、ファイルのオープン、セーブ時に文字コードを明示的に指定してやる方法しかない。
ここらへんは引続き調べてみようと思う。
コンピュータを使っているとマルチバイト圏の人間に生れたことをつくづく後悔する。
でも横書きが左から右に流れている分まだマシか・・・イスラム圏の人達はもっと大変そうだし。
" 文字エンコーディング&改行コード取得
function! GetStatusEx()
let str = ''
let str = str . '' . &fileformat . ']'
if has('multi_byte') && &fileencoding != ''
let str = '[' . &fileencoding . ':' . str
endif
return str
endfunction
現在開いているファイルの文字エンコーディングを表示させる方法知らなかったので、WEBを散策、
某所で該当functionを発見、そしてパクる。( ありがたく使わせてもらいます。 )
上記の設定を行ったvimrcファイル。
euc-jpで書かれている。
|