Vimで括弧の補完とそのトグル
Vimのmapについて調べると
下記の括弧保管をよく見かけます。
便利な時もありますが
ターミナルにコピペするときなどは邪魔です
(クリップボードと連携取ればいいんだろうけど…)
使いやすいようにスクリプトを書いてコマンドで切り替えられるようにしました。
AutoPairは標準でOffにしてます。
書いてからなんだけどそこまで便利でもないかな…
下記の括弧保管をよく見かけます。
(* → ()*
() → (*)
※アスタリスクはカーソル位置便利な時もありますが
ターミナルにコピペするときなどは邪魔です
(クリップボードと連携取ればいいんだろうけど…)
使いやすいようにスクリプトを書いてコマンドで切り替えられるようにしました。
" 自動で括弧内に移動を切り替え
function! g:toggleAutoBack()
if(0 == g:autoBackState)
inoremap {} {}<Left>
inoremap [] []<Left>
inoremap () ()<Left>
inoremap "" ""<Left>
inoremap '' ''<Left>
inoremap <> <><Left>
if !has('vim_starting')
echo "AutoBack is ON"
endif
let g:autoBackState = 1
else
iunmap {}
iunmap []
iunmap ()
iunmap ""
iunmap ''
iunmap <>
if !has('vim_starting')
echo "AutoBack is OFF"
endif
let g:autoBackState = 0
endif
endfunction
" 起動時のみ自動実行
if !exists("g:autoBackState")
" 初期値
let g:autoBackState = 0
call g:toggleAutoBack()
endif
" 括弧移動切り替え
nnoremap taub :call g:toggleAutoBack()<Return>
" 自動で括弧を閉じる
function! g:toggleAutoPair()
" 重くなるだけなのでOFF
if(1 == g:autoBackState)
call g:toggleAutoBack()
endif
if(0 == g:autoPairState)
inoremap { {}
inoremap [ []
inoremap ( ()
inoremap " ""
inoremap ' ''
inoremap < <>
if !has('vim_starting')
echo "AutoPair is ON"
endif
let g:autoPairState = 1
else
iunmap {
iunmap [
iunmap (
iunmap "
iunmap '
iunmap <
if !has('vim_starting')
echo "AutoPair is OFF"
endif
let g:autoPairState = 0
endif
endfunction
" 起動時のみ自動実行
if !exists("g:autoPairState")
" 初期値
let g:autoPairState = 0
" call g:toggleAutoPair()
endif
" 自動括弧閉じ切り替え
nnoremap taup :call g:toggleAutoPair()<Return>
AutoPairは標準でOffにしてます。
書いてからなんだけどそこまで便利でもないかな…
コメント
コメントを投稿