内容
コードを書いている時にtrue/falseを書き直すのが面倒なので、Vim scriptの勉強として作ってみた。
コード
function! BooleanToggle()
let l:word = expand("<cword>")
let l:bool = {'true': 'false', 'false': 'true'}
if has_key(l:bool, l:word)
let l:tmp = @a
let @a = l:bool[l:word]
execute 'normal "_diw'
execute 'normal "aP'
let @a = l:tmp
endif
endfunction
nnoremap <silent> <LEADER>+ :call BooleanToggle()<CR>
コード説明
expand("<cword>")
でカーソルの単語をローカル変数に格納true/false
の辞書型変数を作成- カーソルの単語が
true/false
だったらレジスタをローカル変数に退避させ、レジスタに値を格納 - レジスタを上書きしないようにブラックホールレジスタでカーソルの単語を削除
- レジスタに格納した論理値をペースト
- 退避させたレジスタを元のレジスタに格納
<LEADER>+
で論理値を切り替えるように設定
その他
AndrewRadev/switch.vimというプラグインがあるみたい。