Creo que sería útil tener la posibilidad de intercambiar true
y false
valores en el código rápidamente, con la combinación ctrl+ ao ctrl+ x. ¿Hay algún complemento para eso o algo más?
Creo que sería útil tener la posibilidad de intercambiar true
y false
valores en el código rápidamente, con la combinación ctrl+ ao ctrl+ x. ¿Hay algún complemento para eso o algo más?
Respuestas:
Escribí un complemento ( toggle-bool ) para alternar los valores booleanos, puedes probarlo. Admite los siguientes valores booleanos:
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
Hay switch.vim , y es personalizable.
El punto de entrada principal del plugin es un solo comando,
:Switch
. Cuando se ejecuta el comando, el complemento busca uno de los pocos patrones específicos debajo del cursor y realiza una subposición según el patrón.
Por ejemplo, si el cursor está true
en el siguiente código:
flag = true
luego, al ejecutar :Switch
, true
se convertirá en false
.
La alternancia true
/ false
y similar ha sido implementada por muchos autores de complementos Dos de ellos ya han sido mencionados:
Otros son de palanca de Timo Teifel ( # 895 ), Lunes de Stefan Karlsson ( # 1046 ), toggle_words por Vincent Wang ( # 1676 ), toggle_word por Alexandru Ungur ( # 1748 ), incbool.vim por Dmitry Petrov ( # 4361 , github ) , nextval por Michael Arlt ( # 4536 , github ).
En caso de que desee aumentar los números de acuerdo con una serie personalizada, por ejemplo, la serie Fibonacci, consulte el nexo de Barry Arthur ( github ).
Ctrl-A/X
Sin embargo, no todos ellos siguen de manera predeterminada la idea de extender, Ctrl-A/X
sino que definen un nuevo comando y / o una nueva asignación (incluido. Switch.vim y toggle-bool ). Quiero resaltar aquellos complementos que se 'sobrecargan' Ctrl-A/X
de fábrica y, por lo tanto, proporcionar de forma predeterminada lo que ha pedido el OP:
Un plugin relacionado que también se extiende Ctrl-A/X
es la fecha rápida de Tim Pope ( # 2120 , github ) que le permite incrementar las fechas.
Algunos complementos permiten combinar un segundo Ctrl-A/X
incremento o complemento como respaldo, p. Ej.
SwapIt por Michael Brown:
nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
ciclo por bootleq:
map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
switch.vim por 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
Si usa el comportamiento de búsqueda de la función integrada Ctrl-A/X
(encuentre el siguiente valor posible en la línea para aumentar), la sobrealimentación puede interferir.
cambie la asignación a lo que desea usar
el deshacer es en caso de que lo use en la parte superior de un espacio, ya que ciw editará el espacio en lugar de la palabra (y no hay una manera fácil de llegar a la palabra correcta de manera confiable)
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
También tenga en cuenta que ^ M debe ser <C-V><Enter>
, no literalmente ^ M
<C-a>
y <C-x>
cuando la palabra actual no sea booleana, de esta manera OP realmente podría usar estas asignaciones. También puede usar en <CR>
lugar de ^M
en su mapeo, y generalmente es una mejor práctica proporcionar un modo a su map
comando, aquí nnoremap
sería más apropiado que noremap
.