わかった気で十分！Vim基本設定

`.vimrc`に設定しておくと便利な基本設定を、**分かった気になれる**程度にまとめました。

#基本設定

###Vim の文字コードを指定する
Vim の内部文字コードを設定する。
バッファの内容はこの文字コードで扱われる。

```vim
set encoding=utf-8
```
###ファイル書き込み時の文字コードを指定する
`fileencoding`を設定すると、バッファの内容がファイルに書き込まれる時の文字コードを指定することができる。
その際、`encoding`から`fileencoding`に文字コードの変換が行われる。
そのため、`encoding`と`fileencoding`の文字コードが同じ場合は、設定しなくてもよい。

```vim
set fileencoding-utf-8
```
###ファイル読み込み時の文字コードを指定する
ファイル読み込み時に使用する文字コードを指定する。
`fileencodings`と`encoding`の文字コードが違う場合は、`encoding`の文字コードに変換されてバッファが開かれる。

```vim
set fileencodings=utf-8
```
###BOM付きを指定する
`Unicode`には`BOM無し`と`BOM付き`の２種類がある。`BOM`はバイトオーダーマーク(byte order mark)の略で、`Unicode`で符号化したテキストの先頭に付与される数バイト程度のデータのこと。

```vim
set bomb
```
###Vimスクロール時のスピードを速くする
`j`、`k`キーを押し続けスクロールする時などのスピードを上げる（との噂がある）。一応設定。

```vim
set ttyfast
```
###deleteキーを有効にする
Vimで`delete`キーを押すと、`^?`と出る時の対処法。

```vim
set backspace=indent,eol,start
```
###タブを半角スペースに置き換える
インサートモードで`Tab`キー押下時やインデントの際、タブ文字ではなく、半角スペースが挿入されるようになる(ソフトタブという)。

```vim
set expandtab
```
###タブ幅を設定する
`Python`をはじめとしたインデント幅がスペース4つ分のコードを書く際は、タブ幅を4つにしておくと、少し幸せになれる。

```vim
set tabstop=4
```
###オートインデント時のインデント幅の設定
`tabstop`と同じ値にしておけばよい。

```vim
set shiftwidth=4
```

###ソフトタブのスペース幅の指定
`softtabstop`で`<Tab>`を押下した時、いくつスペースを挿入するを設定する。値を`0`にすると、`softtabstop`の機能はOFFになる。

```vim
set softtabstop=0
```
###新しいウィンドウを下に開く
Vimの初期設定では、ウィンドウの分割は、水平分割は上側に新規ウィンドウが表示される。

```vim
set splitbelow
```
###新しいウィンドウを右に開く
Vimの初期設定では、ウィンドウの分割は、垂直分割は左側に新規ウィンドウが表示される。

```vim
set splitright
```
###スムーズにbuffer切り替える
`buffer`(ここでは、メモリ上に展開される複数のテキストファイルのこと)を切り替える際、編集中のファイルを保存しなくてもよいように設定(高速移動を実現)。

```vim
set hidden
```
###検索結果をハイライトする
逆に、ハイライト表示したくない場合は、`set nohlsearch`。

```vim
set hlsearch
```
###インクリメンタルサーチの実現
検索中に文字を打つ際、（その都度）自動的に検索できる。

```vim
set incsearch
```
###検索時、大文字と小文字を無視

```vim
set ignorecase
```

###検索をより賢く設定
`ignorecase`を有効にしている場合に、`smartcase`を有効にすると、**検索文字列に大文字が入ると、`ignorecase`を無効化してスマートに検索できる（大文字、小文字を無視しない）。**

全て小文字で検索すると、大文字と小文字は、通常通り（`ignorecase`の効果で）、無視して検索される。

```vim
set smartcase
```
###バックアップファイルを作成しない
Vimで編集する際、通常、`~(チルダ)`がファイル名末尾についたバックアップファイルが作成される。それが邪魔であると感じるなら、`nobackup`を設定する。
**重要ファイルを編集する際は、意識的に、編集前に`set backup`を実行して、バックアップファイルを作成するとよい。**

```vim
set nobackup
```
###スワップファイルを作成しない
Vimエディタでは、ユーザがオリジナルのファイルから変更した情報やアンドゥ用の情報を`swap`ファイルに格納している。

スワップファイルが作成される場合は、以下二つ。
- 他のVimエディタで同じファイルを編集している
- ファイルを編集している最中にVimエディタがエラーで強制終了した

実際は、緊急時に備えて、`noswapfile`に設定しないほうがいいかも。。

```vim
set noswapfile
```

###改行コードの自動認識
この設定で、日本語の文字コードを自動判別し、`utf-8`環境で編集や表示が可能となる。

```vim
set fileformats=unix,dos,mac
```
###カーソルの位置を表示する
Vimの最下部のバーの右側にカーソル位置を表示してくれる。
`%`表示してくれるため、今ファイルのどのあたりにいるかがわかる。

```vim
set ruler
```
###行番号を表示する

```vim
set number
```
###カーソル行の背景色変更
カーソル行（作業箇所）が視覚化できて操作しやすい。

```
set cursorline
```
###スクロール開始位置を設定
例えば、下記のように、`set scrolloff=3`と設定している場合、
- 下方向にスクロール時： 画面下端から3行上
- 上方向にスクロール時： 画面上端から3行下
でスクロール開始。

```vim
set scrolloff=20
```
###ステータスラインを表示
- `0`: 表示しない
- `1`: 2つ以上ウィンドウがある時だけ表示
- `2`: 常に表示

```vim
set laststatus=2
```
###モードラインを有効にする
ファイルにVim特有の記述をしておくことでそのファイルがVimで開かれた時に特定の設定を有効にすることができる。

```vim
set modeline
```
###モードラインの検索行数を指定
ファイルの上下の端から`modelines`で指定された行数だけ、モードラインを探しに行く。

```vim
set modelines=10
```
###ステータスバーの設定

```vim
set statusline=%F         " ファイル名表示
set statusline+=%m        " 変更のチェック表示
set statusline+=%r        " 読み込み専用かどうか表示 
set statusline+=%h        " ヘルプページなら[HELP]と表示
set statusline+=%w\       " プレビューウインドウなら[Prevew]と表示 
```
###内容が変更されたら自動的に再読み込み

```vim
set autoread
```
###エラービープ音の停止

```vim
set noerrorbells visualbell t_vb=
```
###ヤンクした箇所をクリップボードにコピー

```vim
set clipboard+=unnamed
```

###ターミナルでマウスを使用できるようにする
`ノーマルモード(n)`、`ビジュアルモード(v)`、`インサートモード(i)`、`コマンドラインモード(c)`の4つのモードを全て有効にできる`a`がお手軽。

```vim
set mouse=a
```

###シンタックスハイライトを有効にする
ON にしておくと、ファイルの拡張子で自動で各種キーワードをシンタックスハイライトで表示してくれる。

```vim
syntax on
```

#参考
- [Vimの文字コード関連](https://qiita.com/take4s5i/items/a347be456b2f1312150c)
- [UTF-8のBOM付き・BOM無しの違いと確認方法](https://uxmilk.jp/48923)
- [vimのインデントを半角スペースにする方法](https://qiita.com/bonjin6770@github/items/ed1b8c94b36d3ed69c3b)
- [vimを瞬時に最強エディタに変えるbコマンド](https://qiita.com/qtamaki/items/4da4ead3f2f9a525591a)
- [【vim】モードラインことはじめ](https://www.techscore.com/blog/2016/12/15/【vim】モードラインことはじめ/)
- [Vimの設定ファイル晒し](https://qiita.com/rita_cano_bika/items/2ae9c8304f8f12b1b443)