+ または+の組み合わせで、コード内の値true
とfalse
値をすばやくスワップできる可能性があると便利です。そのためのプラグインはありますか?ctrlactrlx
+ または+の組み合わせで、コード内の値true
とfalse
値をすばやくスワップできる可能性があると便利です。そのためのプラグインはありますか?ctrlactrlx
回答:
私はあなたがそれを試すことができるブール値を切り替えるためのプラグイン(toggle-bool)を書きました。次のブール値をサポートしています。
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
switch.vimがあり、カスタマイズ可能です。
プラグインの主なエントリポイントは、単一のコマンドです
:Switch
。コマンドが実行されると、プラグインはカーソルの下にあるいくつかの特定のパターンの1つを探し、パターンに応じて置換を実行します。
たとえば、カーソルがtrue
次のコードのにある場合:
flag = true
実行する:Switch
と、true
はに変わりfalse
ます。
true
/ false
などの切り替えは、多くのプラグイン作成者によって実装されています。それらの2つはすでに言及されています。
その他は、トグルティモTeifelによって(#895)、月曜日ステファン・カールソン(による#1046)、toggle_wordsヴィンセント王(で#1676)、toggle_wordアレクサンドルUngur(による#1748)、incbool.vimドミトリー・ペトロフ(で#4361、githubの) 、NEXTVALマイケル・アルルト(で#4536、githubの)。
フィボナッチシリーズなどのカスタムシリーズに従って数値を増やしたい場合に備えて、Barry Arthurによるネクサス(github)をチェックしてください。
Ctrl-A/X
ただし、それらすべてがデフォルトで拡張するという考えに従うわけではありませんCtrl-A/X
が、新しいコマンドや新しいマッピング(switch.vimやtoggle-boolを含む)を定義します。私Ctrl-A/X
はすぐに「スーパーチャージ」するプラグインを強調表示したいので、デフォルトでOPが要求したものを提供します。
同じく拡張されてCtrl-A/X
いる関連プラグインは、日付を増やすことができるTim Pope(#2120、github)による高速化です。
一部のプラグインでは、2番目のCtrl-A/X
インクリメンタープラグインをフォールバックとして組み合わせることができます。
Michael BrownによるSwapIt:
nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
bootleqによるサイクル:
map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
Andrew Radevによるswitch.vim:
nnoremap <c-a> :if !switch#Switch()<bar>call speeddating#increment()<bar>endif<cr>
nnoremap <c-x> :if !switch#Switch({'reverse': 1})<bar>call speeddating#decrement()<bar>endif<cr>
注
ビルトインのシーク動作を使用する場合Ctrl-A/X
(次の可能な値をインクリメントして見つける)、それらをスーパーチャージすると干渉する可能性があります。
マッピングを使用したいものに変更します
元に戻すは、スペースの上で使用する場合です。ciwは単語の代わりにスペースを編集するためです(そして、正しい単語に確実に到達する簡単な方法はありません)。
function SwapBool ()
let s:w = expand("<cword>")
if s:w == "false"
normal ciwtrue
if expand("<cword>") != "true"
normal u
endif
elseif s:w == "true"
normal ciwfalse
if expand("<cword>") != "false"
normal u
endif
endif
endfunction
noremap <C-F> :call SwapBool()^M
また、^ Mはである必要があること<C-V><Enter>
に注意してください。
<C-a>
し、<C-x>
現在の単語がないブールあるとき、このようOPは本当にこれらのマッピングを使用することができるだろう。また、マッピングでの<CR>
代わりにを使用することもできます。^M
通常、map
コマンドにモードを提供することがベストプラクティスnnoremap
ですnoremap
。