「vimrc おすすめ」などで検索してもあまりヒットしないけど、個人的に便利な設定をまとめました。参考になれば嬉しいです。
プラグインについては触れません(また別の記事に書こうと思っています)。
Options
mapleader
letg:mapleader="\<Space>"
<Leader>
にはスペースキーを設定しています。一番押しやすい位置だと思うので、よく使うコマンドを登録するのにうってつけです。
clipboard
set clipboard=unnamed
無名レジスタとクリップボードを共有します。これはメジャーですね。
termguicolors
set termguicolors
True Color(24bit)表示に対応します。使っているターミナルアプリがTrue Colorに対応している必要があります(macOS標準のターミナル.appは対応していません。iTermやHyperは対応しています)。
noshowmode
set noshowmode
左下の「-- Insert --」のような表示をオフにします。vim-airline
やlightline.vim
でステータスラインを設定している人に有効です。
noshowcmd
set noshowcmd
右下にy$
やdd
などの入力中のコマンドが表示されないようにします。鬱陶しいと思っていた人はぜひ。
textwidth
set textwidth=0
勝手に改行されるのを防ぎます。
breakindent
set breakindent
wrap
で折り返された行を、同じインデントで表示します。nowrap
を設定している人には必要ないですね。
matchpairs
Vimでは括弧にカーソルをあわせると対応する括弧をハイライトしてくれますが、標準では対応していない括弧もハイライトできるようにします。
set matchpairs+=<:>,(:),「:」,『:』,[:],【:】,〈:〉,《:》,{:},〔:〕
spelllang
set spelllang+=cjk
Vimでset spell
をすると、日本語がスペルミス扱いされて残念なことになるのですが、それを回避できるオプションです。
signcolumn
set signcolumn=yes
ale
やvim-gitgutter
を使っていると行番号の左側がガタガタしてアレなんですが、これを設定するとおとなしくなります。
splitbelow
splitright
set splitbelow
set splitright
split
やvsplit
を実行したときに画面のどちら側に新規ペインを開くかどうかを設定できます。
splitbelow
で新規ペインを下に、splitright
で新規ペインを右に作成するようにしています。好みの分かれる設定だと思うので、あくまで参考までに。
lazyredraw
ttyfast
set lazyredraw
set ttyfast
描画速度が速くなります。
inccommand
(Neovimのみ)
if has('nvim')set inccommand=split
endif
Neovimにのみ用意されているオプションです(そのため、has('nvim')
でNeovimの場合のみ実行するようにしています)。
:%s/.../...
などで置換するときに、置換後の文字列をインクリメンタルに表示してくれます。文字だと説明しづらいので、↓の動画を見ると分かりやすいです。
Neovim: incremental substitution ('inccommand') - YouTube
Keymappings
nnoremap <silent><ESC><ESC>:set nopaste \|nohlsearch<CR>
nnoremap Y y$
キーマップはあまり設定していなくて、上記の2つだけです。
nnoremap <silent><ESC><ESC>:set nopaste \|nohlsearch<CR>
ノーマルモードで<ESC>
を入力したときに、検索結果のハイライトとペーストモードを解除します。
<silent>
を設定しているのは、実行時に:set nopaste | nohlsearch
が表示されるのを防ぐためです。
nnoremap Y y$
D
やC
は現在位置から行末までのモーションになっていますが、Y
だけはyy
と同じ動作になっていて一貫性がありません(歴史的な事情とのことです)。
y$
と2文字の打つのは辛いので、Y
にマッピングしています。