戻る

vimrc解説

Dec 14, 2019

.vimrcとはvimの設定ファイルでここに自分の好きな設定を記述することになる. neovimならinit.vimに記述する. 私は以下の設定にしている.


set number
set autoindent
set tabstop=2
set shiftwidth=2
set expandtab
set clipboard=unnamed
set hls
set smarttab
set smartindent
set clipboard+=unnamedplus
"makefileの時はtabのままにする
let _curfile = expand("%:t")
if _curfile =~ "Makefile" || _curfile =~ "makefile" || _curfile =~ ".*\.mk"
  set noexpandtab
endif
imap <C-b> <Left>
imap <C-f> <Right>
"no highlight esc x 2
nnoremap <silent><ESC><ESC> :nohl<CR>
"一見意味ないような設定だがcohama/leximal.vimは<BS>を使って設定されているので
"<C-h>もそれと同じように機能させる. inoremapでなくimapでないと機能しない
imap <C-h> <BS>
"()の対応を表示する機能が見づらすぎるので切る(terminal上で)
if !has('gui_running')
  let g:loaded_matchparen = 1
endif
"マウスのミドルクリックによる貼り付けは大体不意なのでやめる
map <MiddleMouse> <Nop>
map <2-MiddleMouse> <Nop>
map <3-MiddleMouse> <Nop>
map <4-MiddleMouse> <Nop>
imap <MiddleMouse> <Nop>
imap <2-MiddleMouse> <Nop>
imap <3-MiddleMouse> <Nop>
imap <4-MiddleMouse> <Nop>
"w!!でsudoで保存
cabbr w!! w !sudo tee > /dev/null %
" SwapファイルやBackupファイルは前時代的すぎるので全て無効化する
set nowritebackup
set nobackup
set noswapfile
" 一文字消すだけなのに無名レジスタを上書きされるのは嫌なのでブラックホールレジスタに入れる
nnoremap x "_x
nnoremap X "_X

nnoremap j gj
nnoremap k gk


置換について

vimは置換時に&をエスケープしなくてはならない, 記号が色々混じってエスケープがわかりにくいときは:%sno/search_string/replace_string/gで置換するのが良い. 例: :%sno/</&lt/gc

この例は今まさにhtmlを書くときにこれを使って置換している. 私はgの後にcも入力して確認を入れることが多い. 参考記事

バイナリ編集

バイナリを操作することもできる. バイナリダンプ自体はshellコマンドのhexdumpだとかxxdだとかを使えばいいが, vimでは編集もできる. https://rdera.hatenadiary.org/entry/20081022/1224682665 がわかりやすい. vimscriptの勉強にもなる. 以下の様に設定した. 説明は先のリンクにあるので略.


autocmd  FileType help setlocal number
augroup BinaryXXD
  autocmd!
  autocmd BufReadPre *.bin let &binary =1
  " -g 1で1byte表示, defaultは2byte
  autocmd BufReadPost * if &binary | silent %!xxd -g 1
  autocmd BufReadPost * set ft=xxd | endif
  autocmd BufWritePre * if &binary | %!xxd -r | endif
  autocmd BufWritePost * if &binary | silent %!xxd -g 1
  autocmd BufWritePost * set nomod | endif
augroup END

vimリンク集

https://qiita.com/nab/items/0deb466575a8cf88b522#_reference-d9e966e6eebd1e4ffedb