はじめに
- vimrcでfor文をうまく使う方法が調べてもすぐにでてこなかったのでまとめました。
- 筆者は駆け出しのVimmerですので、よりよい方法等ございましたらご指摘いただけますと幸いです。
本記事の対象者
- Vimmer
.vimrc
(orinit.vim
)の書き方がある程度わかるひと(noremapがわかる人であれば読めます)
先に結論
ciw
とかのi
を省略できるようにしたいとき、(もとのcw
機能はce
で代用できる)
for文を使わないと…
nnoremap cw ciw
nnoremap vw viw
nnoremap dw diw
nnoremap yw yiw
nnoremap c" ci"
nnoremap v" vi"
nnoremap d" di"
nnoremap y" yi"
nnoremap c' ci'
nnoremap v' vi'
nnoremap d' di'
nnoremap y' yi'
nnoremap c( ci(
nnoremap v(vi(
nnoremap d(di(
nnoremap y( yi(" (以下略)
for文を使うと
for each_surround in['w','t','"',"'",'(','{',"`"]for each_command in['c','d','v','y']
execute 'nnoremap '. each_command . each_surround .' '. each_command .'i'. each_surround
endforendfor
解説
vimscriptでのfor文の使い方
最近の言語と同じ感覚で使うことができます。
簡単な例
foriin[1,2,3]
echo iendfor
結果
1
2
3
文字列と変数を連結
.
で連結することができます。
簡単な例
let editor ='Vim'
echo 'Hello, '. editor .'!'
結果
Hello, Vim!
文字列をコマンドとして実行
execute
を使います
簡単な例
let message ='I use Vim.'
execute 'echo message'
結果
I use Vim.
最後に
vimrc
の行数が多い ≒ vimの熟練度が高い
という風潮がある気がします。それでも、DRYに書いて行数が減らせると見やすいし少ない変更箇所で編集できるのでおすすめです。