Penso che sarebbe utile avere la possibilità di scambiare true
e false
valori nel codice rapidamente, con la combinazione ctrl+ ao ctrl+ x. C'è qualche plugin per questo o qualcos'altro?
Penso che sarebbe utile avere la possibilità di scambiare true
e false
valori nel codice rapidamente, con la combinazione ctrl+ ao ctrl+ x. C'è qualche plugin per questo o qualcos'altro?
Risposte:
Ho scritto un plugin ( toggle-bool ) per attivare / disattivare i valori booleani che puoi provare. Supporta i seguenti valori booleani:
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
C'è switch.vim ed è personalizzabile.
Il punto di ingresso principale del plugin è un singolo comando,
:Switch
. Quando viene eseguito il comando, il plug-in cerca uno dei pochi pattern specifici sotto il cursore ed esegue una sottostazione in base al modello.
Ad esempio se il cursore si trova sul true
nel seguente codice:
flag = true
poi dopo l'esecuzione :Switch
, true
si trasformerà in false
.
Commutazione true
/ false
e simili è stata implementata da molti autori di plugin. Due di questi sono già stati menzionati:
Altri sono a levetta da Timo Teifel ( # 895 ), lunedi da Stefan Karlsson ( # 1046 ), toggle_words da Vincent Wang ( # 1676 ), toggle_word da Alexandru Ungur ( # 1748 ), incbool.vim da Dmitry Petrov ( # 4361 , GitHub ) , nextval di Michael Arlt ( # 4536 , github ).
Nel caso in cui desideri aumentare i numeri in base a una serie personalizzata, ad esempio la serie Fibonacci, dai un'occhiata a Nexus di Barry Arthur ( github ).
Ctrl-A/X
Tuttavia, non tutti seguono per impostazione predefinita l'idea di estendere Ctrl-A/X
ma definiscono un nuovo comando e / o una nuova mappatura (incl. Switch.vim e toggle-bool ). Voglio evidenziare quei plug-in che "ricaricano" Ctrl-A/X
immediatamente e quindi forniscono di default ciò che l'OP ha chiesto:
Un plugin correlato che si estende anche Ctrl-A/X
sta accelerando la data di Tim Pope ( # 2120 , github ) che consente di aumentare le date.
Alcuni plug-in consentono di combinare un secondo Ctrl-A/X
plug-in incrementatore come fallback, ad es
SwapIt di Michael Brown:
nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
ciclo di bootleq:
map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
switch.vim di Andrew Radev:
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>
Nota
Se si utilizza il comportamento di ricerca dell'integrato Ctrl-A/X
(trovare il prossimo valore possibile in linea per incrementare), il loro sovraccarico può interferire.
cambiare la mappatura su ciò che si desidera utilizzare
l'annullamento è nel caso in cui lo usi sopra uno spazio, dal momento che ciw modificherà lo spazio anziché la parola (e non esiste un modo semplice per ottenere la parola giusta in modo affidabile)
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
nota anche che ^ M deve essere <C-V><Enter>
, non letteralmente ^ M
<C-a>
e <C-x>
quando la parola corrente non è un valore booleano, in questo modo OP sarebbe davvero in grado di utilizzare questi mapping. Inoltre puoi usare <CR>
invece che ^M
nella tua mappatura, ed è di solito una buona pratica fornire una modalità al tuo map
comando, qui nnoremap
sarebbe più appropriato di noremap
.