初心者向け vimrcの設定方法

## 概要
- Vimを使いこなすために一番効果的な方法は、自分でカスタマイズする時だと感じます。
- Vimを設定するvimrcは初心者にとって、少し難易度が高いかもしれません。しかし、実際にはとても簡単です。
- ここでわかりやすくvimrcによるカスタマイズ方法を解説していきます。

## vimrcとは？
- vimのデフォルト状態から使いやすいように設定することができるファイルです。
- ここに設定を記述することでカスタマイズできます。
- 初期状態では、vimrcは存在しないので、ファイルを作成するところから始めます。

## vimrcの作成
- 以下のコマンドをターミナルに入力してください。

```console
$ vim ~/.vimrc
```

- すると、何もない画面が表示されます。これはファイルが作成された状態です。

![スクリーンショット 2017-03-06 22.35.23.png](https://qiita-image-store.s3.amazonaws.com/0/142810/ecaa86aa-f4b8-058e-6261-13ad5860c811.png "スクリーンショット 2017-03-06 22.35.23.png")

- ここに設定を書いていきます。
- 以下の設定を記述してください。

```vim
" 行番号を表示
set number
```

![スクリーンショット 2017-03-06 22.39.49.png](https://qiita-image-store.s3.amazonaws.com/0/142810/1f08ebbd-9b3e-a1dd-4ef5-c26b3dfd9757.png "スクリーンショット 2017-03-06 22.39.49.png")

- それから、`:wq` でファイルを保存してください。
- もう一度、vimrcを開きます。

```console
$ vim ~/.vimrc
```

- すると以下のように左側に番号が表示されます。

![スクリーンショット 2017-03-06 22.44.50.png](https://qiita-image-store.s3.amazonaws.com/0/142810/cfe32a7c-f62d-b92e-3894-1c5b2252c0d8.png "スクリーンショット 2017-03-06 22.44.50.png")

- このようにvimrcに設定を書くことによって、それが反映されるようになります。

## 色々な設定 
- 以下は、私が実際に設定している記述なので、参考にして自分のVimをカスタマイズしてください。

```vim
" ファイルを上書きする前にバックアップを作ることを無効化
set nowritebackup
" ファイルを上書きする前にバックアップを作ることを無効化
set nobackup
" vim の矩形選択で文字が無くても右へ進める
set virtualedit=block
" 挿入モードでバックスペースで削除できるようにする
set backspace=indent,eol,start
" 全角文字専用の設定
set ambiwidth=double
" wildmenuオプションを有効(vimバーからファイルを選択できる)
set wildmenu

"----------------------------------------
" 検索
"----------------------------------------
" 検索するときに大文字小文字を区別しない
set ignorecase
" 小文字で検索すると大文字と小文字を無視して検索
set smartcase
" 検索がファイル末尾まで進んだら、ファイル先頭から再び検索
set wrapscan
" インクリメンタル検索 (検索ワードの最初の文字を入力した時点で検索が開始)
set incsearch
" 検索結果をハイライト表示
set hlsearch

"----------------------------------------
" 表示設定
"----------------------------------------
" エラーメッセージの表示時にビープを鳴らさない
set noerrorbells
" Windowsでパスの区切り文字をスラッシュで扱う
set shellslash
" 対応する括弧やブレースを表示
set showmatch matchtime=1
" インデント方法の変更
set cinoptions+=:0
" メッセージ表示欄を2行確保
set cmdheight=2
" ステータス行を常に表示
set laststatus=2
" ウィンドウの右下にまだ実行していない入力中のコマンドを表示
set showcmd
" 省略されずに表示
set display=lastline
" タブ文字を CTRL-I で表示し、行末に $ で表示する
set list
" 行末のスペースを可視化
set listchars=tab:^\ ,trail:~
" コマンドラインの履歴を10000件保存する
set history=10000
" コメントの色を水色
hi Comment ctermfg=3
" 入力モードでTabキー押下時に半角スペースを挿入
set expandtab
" インデント幅
set shiftwidth=2
" タブキー押下時に挿入される文字幅を指定
set softtabstop=2
" ファイル内にあるタブ文字の表示幅
set tabstop=2
" ツールバーを非表示にする
set guioptions-=T
" yでコピーした時にクリップボードに入る
set guioptions+=a
" メニューバーを非表示にする
set guioptions-=m
" 右スクロールバーを非表示
set guioptions+=R
" 対応する括弧を強調表示
set showmatch
" 改行時に入力された行の末尾に合わせて次の行のインデントを増減する
set smartindent
" スワップファイルを作成しない
set noswapfile
" 検索にマッチした行以外を折りたたむ(フォールドする)機能
set nofoldenable
" タイトルを表示
set title
" 行番号の表示
set number
" ヤンクでクリップボードにコピー
set clipboard=unnamed,autoselect
" Escの2回押しでハイライト消去
nnoremap <Esc><Esc> :nohlsearch<CR><ESC>
" シンタックスハイライト
syntax on
" すべての数を10進数として扱う
set nrformats=
" 行をまたいで移動
set whichwrap=b,s,h,l,<,>,[,],~
" バッファスクロール
set mouse=a

" auto reload .vimrc
augroup source-vimrc
  autocmd!
  autocmd BufWritePost *vimrc source $MYVIMRC | set foldmethod=marker
  autocmd BufWritePost *gvimrc if has('gui_running') source $MYGVIMRC
augroup END

" auto comment off
augroup auto_comment_off
  autocmd!
  autocmd BufEnter * setlocal formatoptions-=r
  autocmd BufEnter * setlocal formatoptions-=o
augroup END

" HTML/XML閉じタグ自動補完
augroup MyXML
  autocmd!
  autocmd Filetype xml inoremap <buffer> </ </<C-x><C-o>
  autocmd Filetype html inoremap <buffer> </ </<C-x><C-o>
augroup END

" 編集箇所のカーソルを記憶
if has("autocmd")
  augroup redhat
    " In text files, always limit the width of text to 78 characters
    autocmd BufRead *.txt set tw=78
    " When editing a file, always jump to the last cursor position
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line ("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif
  augroup END
endif
```

- 自分で1つ1つ設定しながら、機能を確認していくのも良いかもしれません。
- これでVimを自由自在に使いこなしてください。