Vimは設定を変更することで、更に快適にファイルの編集ができるようになる。
関連する拙稿
設定ファイル?
要するに、vimの起動時にexモードのコマンドを実行してくれるもの。
設定ファイルというよりは、.bashrcなどのファイルと同様の性質のもの。
まずは、設定ファイルを置く場所を確認する。
vimがインストールされているなら
$ vim --version
と入力すると、こんな感じの情報が出てくる。
システム vimrc: "$VIM/vimrc"
ユーザ vimrc: "$HOME/.vimrc"
第2ユーザ vimrc: "~/.vim/vimrc"
ユーザ exrc: "$HOME/.exrc"
省略時の $VIM: "/usr/share/vim"
$HOMEや~の解釈はログインユーザによって変わるので、私はrootでvimを起動した時などに設定が反映されるように、"$VIM/vimrc"に設定ファイルを置いている。
$VIMの場所については、vimを起動した状態
:echo $VIM
と入力すれば確認できる。
内容を見てみる
大抵の場合は、初期状態でもある程度の設定がされているか、コメントアウトしてある。(vimのコメントは、ダブルクォート)
Ubuntu13.10で確認できた初期設定を紹介するので、必要とあればアンコメントする。
if has("syntax")
syntax on
endif
"set showcmd " Show (partial) command in status line.
"set showmatch " Show matching brackets.
"set ignorecase " Do case insensitive matching
"set smartcase " Do smart case matching
"set incsearch " Incremental search
"set autowrite " Automatically save before commands like :next and :make
"set hidden " Hide buffers when they are abandoned
"set mouse=a " Enable mouse usage (all modes)
このあたりの設定は有効化してもいいだろう。
コメントに設定の内容も書いてあるので、詳細な解説は省略。
カスタマイズ
今回の本題。
まずは私が環境を作る度に設定している内容をそのまま。
set number
set title
set ambiwidth=double
set tabstop=4
set expandtab
set shiftwidth=4
set smartindent
set list
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
set nrformats-=octal
set hidden
set history=50
set virtualedit=block
set whichwrap=b,s,[,],<,>
set backspace=indent,eol,start
set wildmenu
読んだだけではパッとわからなそうなものについての解説
項目名 | 内容 |
---|---|
number | 行番号の表示 |
title | ターミナルのタイトルをセットする |
e.g.) vimrc=(/usr/shere/vim...) | |
ambiwidth=double | 文脈によって解釈が異なる全角文字の幅を、2に固定する |
tabstop=4 | タブ幅をスペース4つ分にする |
expandtab | tabを半角スペースで挿入する |
shiftwidth=4 | vimが自動で生成する(読み込み時など)tab幅をスペース4つ文にする |
smartindent | 改行時などに、自動でインデントを設定してくれる |
list | 空白文字の可視化 |
listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:% | 可視化した空白文字の表示形式について。詳細な解説は、こちら |
nrformats-=octal | "0"で始まる数値を、8進数として扱わないようにする |
hidden | ファイルの保存をしていなくても、べつのファイルを開けるようにする |
virtualedit=block | 文字のないところにカーソル移動できるようにする |
whichwrap=b,s,[,],<,> | カーソルの回り込みができるようになる |
(行末で→を押すと、次の行へ) | |
backspace=indent,eol,start | バックスペースを、空白、行末、行頭でも使えるようにする |
大雑把な解説なため、詳しく知りたい場合は適宜調べて欲しい。(いつか書くかもしれない)
後は、好みに合わせて設定していただきたい。
補足
起動しているvim上で設定を切るには
:set noXXXX
を入力すればいい。
smartindentについて
これが有効化されていると、複数行のクリップボードからの貼付けがおかしくなる。:set paste
を入力してから貼り付けをすれば、問題なく貼り付けができる。
これらの設定をしておけば、結構高性能なエディタであると感じられるようになるはず。