Vim 設定ガイド

Vimは設定を変更することで、更に快適にファイルの編集ができるようになる。

関連する拙稿

* [Vim スタートガイド](http://qiita.com/marrontan619/items/dc99db67cf4c0a25a327)
* [Vim 初心者ガイド](http://qiita.com/marrontan619/items/94228ff809f01198b613)

## 設定ファイル？
要するに、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で確認できた初期設定を紹介するので、必要とあればアンコメントする。

```vim:vimrc
    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)
```
    
このあたりの設定は有効化してもいいだろう。  
コメントに設定の内容も書いてあるので、詳細な解説は省略。


## カスタマイズ

今回の本題。
まずは私が環境を作る度に設定している内容をそのまま。

```vim:vimrc
    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:% | 可視化した空白文字の表示形式について。詳細な解説は、[こちら](http://blog.remora.cx/2011/08/display-invisible-characters-on-vim.html) |
| nrformats-=octal                                           | "0"で始まる数値を、8進数として扱わないようにする                                                                              |
| hidden                                                     | ファイルの保存をしていなくても、べつのファイルを開けるようにする                                                                        |
| virtualedit=block                                          | 文字のないところにカーソル移動できるようにする                                                                                 |
| whichwrap=b,s,[,],&lt;,&gt;                                | カーソルの回り込みができるようになる                                                                                      |
|                                                            | （行末で→を押すと、次の行へ）                                                                                         |
| backspace=indent,eol,start                                 |  バックスペースを、空白、行末、行頭でも使えるようにする                                                                                                       |

大雑把な解説なため、詳しく知りたい場合は適宜調べて欲しい。（いつか書くかもしれない）
後は、好みに合わせて設定していただきたい。


### 補足

* 起動しているvim上で設定を切るには

    :set noXXXX
    
を入力すればいい。  

* smartindentについて  
これが有効化されていると、複数行のクリップボードからの貼付けがおかしくなる。

    :set paste
    
を入力してから貼り付けをすれば、問題なく貼り付けができる。  


これらの設定をしておけば、結構高性能なエディタであると感じられるようになるはず。