Vimの設定一覧

## はじめに

Vimの設定一覧です。

## 注意

私の設定ファイルにあったコメントをほぼそのまま移しているので、誤りがあるかもしれません。

## 環境

TBD

## 私の設定

私の設定は以下の通りです。

https://github.com/uhooi/dotfiles/blob/main/.vim/config/basics.vim

## Search

検索に関する設定です。

### `set hlsearch`

検索文字列に色を付けます。

### `set ignorecase`

検索時に大文字小文字を区別しません。

### `set smartcase`

検索時に大文字と小文字の両方が含まれている場合、大文字と小文字を区別します。

### `set wrapscan`

検索時にファイルの最後まで行ったら最初に戻ります。

### `set gdefault`

置換時に `/g` をデフォルトで有効にします。

## Edit

編集に関する設定です。

### `set tabstop=4`

タブの半角スペース数です。
私は8から4に変更しました。

### `set softtabstop=0`

タブの入力時に挿入する半角スペース数です。
0だとOFFになります。

### `set shiftwidth=0`

改行時などにインデントする半角スペース数です。
0だと `tabstop` の値が使われます。

### `set smarttab`

タブの入力時に半角スペースを挿入します。

### `set expandtab`

タブを半角スペースに展開します。

### `set autoindent`

自動的にインデントします。

インデントの設定は他にも `smartindent` や `cindent` があります。
詳細は公式ドキュメントをご参照ください。

https://vim-jp.org/vimdoc-ja/indent.html

以下の記事も参考になります。

https://maku77.github.io/vim/settings/auto-indent.html

### `set backspace=indent,eol,start`

バックスペースでインデントや改行を削除できるようにします。

### `set showmatch`

括弧入力時に対応する括弧を表示します。

### `set matchtime=1`

`showmatch` で対応する括弧を表示する時間です。（単位：0.1秒）
デフォルトは0.5秒です。

### `set matchpairs+=<:>`

対応する括弧に `<>` を追加します。

### `set wildmenu`

コマンドライン補完するときに強化されたものを使います。

### `set wildignorecase`

コマンドライン補完するときに大文字と小文字を区別しません。

### `set wildmode=list:full`

TBD

### `set formatoptions+=mM`

テキスト挿入中の自動折り返しを日本語に対応します。

### `set nrformats=alpha`

数値の増減を常に10進数として行い、英字も増減できるようにします。
デフォルトは `octal,hex` です。

### `set virtualedit+=block`

矩形選択で行末にテキストがなくてもカーソルを移動できるようにします。

https://vim-jp.org/vim-users-jp/2010/02/17/Hack-125.html

## Display

GUI固有ではない画面表示に関する設定です。

### `set number`

行番号を表示します。

### `set relativenumber`

キャレット位置を基準として行番号を表示します。

### `set ruler`

ルーラーを表示します。

### `set list`

タブや行末の半角スペース、改行などを可視化します。

### `set listchars=tab:>.,trail:-,extends:>,precedes:<`

どの文字でタブや改行などを可視化するかを設定します。
私はタブを `>.` 、行末の半角スペースを `-` 、省略を `<` `>` で可視化しています。

### `set wrap`

長い行を折り返して表示します。

### `set laststatus=2`

常にステータス行を表示します。

### `set cmdheight=2`

コマンドラインの行数です。
Windows用gvim使用時は `.gvimrc` を編集します。

### `set showcmd`

コマンドをステータス行に表示します。

### `set title`

タイトルバーにファイル名を表示します。

### `set cursorline`

カーソルがある行の背景色を変えます。

### `set cursorcolumn`

カーソルがある列の背景色を変えます。
半角文字と全角文字が混在していると見づらいので、私は設定していません。

### `set colorcolumn=80`

指定した列に色を付けます。
私は80列目に色を付けていますが、半角文字と全角文字が混在していると見づらいので、設定するか悩んでいます。

### `set foldmethod=marker`

`{{{` と `}}}` で括られた箇所を折りたたむようにします。
デフォルトは `manual` （手動）です。

### `set pumheight=10`

補完メニューの高さです。
デフォルトは0（無制限）です。

## Font

文字に関する設定です。

### `set ambiwidth=double`

幅が曖昧な文字をすべて全角で表示します。

今まで `double` にしていましたが、レイアウトが崩れるので何も設定しないようにしました。
https://twitter.com/the_uhooi/status/1560449279407587328

## Cursor

カーソルに関する設定です。

### `set whichwrap=b,s,h,l`

`h` や `l` によるカーソル移動で行をまたぐようにします。
デフォルトは `b,s` です。

### `set scrolloff=15`

スクロールを開始する行数です。
デフォルトは0です。

## Mouse

マウスに関する設定です。

### `set mouse=a`

マウス操作を有効にします。

https://yskwkzhr.blogspot.com/2013/02/use-mouse-on-terminal-vim.html

## File

ファイルに関する設定です。

### `set writebackup`

TBD

### `set nobackup`

バックアップファイルを作成しません。

### `set noswapfile`

スワップファイルを作成しません。
私は設定していません。

### `set noundofile`

アンドゥファイルを作成しません。
私は設定していません。

### `set undodir=~/.vim/undo`

アンドゥファイルの保存先です。
私は `~/.vim/undo` を指定しています。

## おまけ

### 設定をOFFにする

設定の先頭に `no` を付けると、設定をOFFにできます。
例: `set nonumber`

### 設定を確認する

設定の末尾に `?` を付けると、設定を確認できます。
例: `:set number?`

## おわりに

これでVimを自分好みの設定にカスタマイズしましょう！

## 参考リンク

- https://github.com/lighttiger2505/.dotfiles/blob/master/.vim/rc/options.rc.vim
- [Vimでファイルを開き直してもUndoができるように正しく設定する - Qiita](https://qiita.com/tamanobi/items/8f013cce36881af8cee3)