#1
今日は昨日書いたVim scriptを読みやすくした。
優先事項があるので後回しにする、と言いつつも気になってしまって修正した。
" / を入力した際の挙動を条件によって変更する
function! s:get_smart_very_magic() abort
if getcmdtype() != ':'
return '/'
endif
let cmd = getcmdline()
let pos = getcmdpos()
if
\ (cmd ==# 's' && pos == 2) ||
\ (cmd ==# '%s' && pos == 3) ||
\ (cmd ==# "'<,'>s" && pos == 7)
" :s/ と入力したら :s/\v にする
return '/\v'
elseif
\ (cmd ==# 's/\v' && pos == 5) ||
\ (cmd ==# '%s/\v' && pos == 6) ||
\ (cmd ==# "'<,'>s/\v" && pos == 10)
" :s// と入力したら :s/\v/ から :s// にする
return "\<BS>\<BS>/"
endif
return '/'
endfunction
" very magicをonにする
cnoremap <expr> / <SID>get_smart_very_magic()
昨日のスクリプトよりは保守しやすくなったと思う。
スクリプトローカルな関数はmap系関数に指定できないのか、と思って諦めかけていたが、調べてみたら可能だった1のでそのように書いた。<SID>
はこういう時に使うんだな。