VIMをカスタマイズしてみる【第1回】
vimについて
vim起動時に読み込まれるファイルについて
gvimで読み込むファイルの順番の確認
vim73-kaoriya-win64\vimrc :最初のほうに読み込んでいるファイル(後ろで読み込んだファイルに上書きされる。日本語化の設定やバックアップファイルの保存など全般的な設定が記載されている)
vim73-kaoriya-win64\gvimrc :後ろのほうで読み込んでいるファイル。(ウィンドウのサイズや色などの設定が書かれている)
vim73-kaoriya-win64\vim73\vimrc-example.vim :最後のほうに読み込んでいるファイルなので強い(textwidthの設定など細かい設定が入っている)
vim73-kaoriya-win64\vim73\color :色ファイル系の置き場所
gvim を起動して :version で起動時に読み込まれるファイルの順序が確認できる(vimrc, gvimrc, _vimrcなど)
確認してみると以下のようになっていた。 (↓の順で読み込んでいく)
システム vimrc: "$VIM\vimrc" ユーザ vimrc: "$HOME\_vimrc" 第2ユーザ vimrc: "$VIM\_vimrc" ユーザ exrc: "$HOME\_exrc" 第2ユーザ exrc: "$VIM\_exrc" システム gvimrc: "$VIM\gvimrc" ユーザ gvimrc: "$HOME\_gvimrc" 第2ユーザ gvimrc: "$VIM\_gvimrc" システムメニュー: "$VIMRUNTIME\menu.vim"
変更されている箇所を調べる場合
例えば whichwrap という設定が最後にどこで行われているかを調べる場合は以下のようにする
:verbose set whichwrap
gvimで勝手に起動時に読み込まれるファイル
C:\Program Files\vim74-kaoriya-win64\vim74\vimrc_example.vim
このファイルに textwidth=78 とかいう余計な設定が入っているので、
ファイルを読み込んだ時に、文字を書き込んでいると勝手に改行する
下記の行をコメントアウトをしておく
autocmd FileType text setlocal textwidth=78 " autocmd FileType text setlocal textwidth=78
vimrcに記述しても設定が反映されない場合
c:\Program Files\vim74-kaoriya-win64\_gvimrc に記述するとよい。
最後の方に読み込まれるため
VIMの設定について
キーバインドの設定をする際の書式
モードの指定 <オプション> 入力するキーやコマンド VIM側の処理
モードの指定のところには以下の様な項目が記述できる
noremap : ノーマルモードとビジュアルモード(再定義されない)
map : ノーマルモードとビジュアルモード(再定義される)
noremap!: コマンドラインモードとインサートモード(再定義されない)
map! : コマンドラインモードとインサートモード(再定義される)
nnoremap: ノーマルモードのみ(再定義されない)
nmap : ノーマルモードのみ(再定義される)
vnoremap: ビジュアル選択モードのみ(再定義されない)
vmap : ビジュアル選択モードのみ(再定義される)
cnoremap: コマンドラインモードのみ(再定義されない)
cmap : コマンドラインモードのみ(再定義される)
inoremap: インサートモードのみ(再定義されない)
imap : インサートモードのみ(再定義される)
例えば
普通はノーマルモードで ctrl + a すると数字が増えて、 ctrl + x すると数字が減るという動作をするが
vimrcなどに下記のように記述した場合は
map <C-a> <C-x> map a <C-a>
ノーマルモードで a と入力することで a -> ctrl + a -> ctrl + x を呼び出せる(数字が減る)
これに対し
vimrcなどに下記のように記述した場合は
map <C-a> <C-x> noremap a <C-a>
ノーマルモードで a と入力することで ctrl + x は呼び出さずに a -> ctrl + a を呼び出すだけという動作の違いがある(数字が増える)
オプションについて
キー定義の際に使用できるオプションには以下の様なものがある
: callしている function名を表示せずに実行する。
: let mapleader = “値” で定義したものに置き換えることができる
たとえばvimrcに以下のように記述すると ,(カンマ) の代わりに が使える
let mapleader = “,”
nnoremap a :!ls
上記は下記と同じ意味
nnoremap ,a :!ls
let mapleader が定義されていない場合は \(バックスラッシュ) がのデフォルトになっている
: ユーザ定義 function をキーに割り当てる際などに使用する。一時的にfunctionをマップさせる場所
: カレントバッファでのみキー定義を使う場合に使用する
: など <> をつけたキーをマップする際にエラーにならないために使用する
: 既に同じキーが別の動作に割り当てられていた場合は失敗する