Je pense qu'il serait utile d'avoir la possibilité d'échanger true
et de false
valeurs dans le code rapidement, avec combinaison ctrl+ aou ctrl+ x. Y a-t-il un plugin pour ça ou autre chose?
Je pense qu'il serait utile d'avoir la possibilité d'échanger true
et de false
valeurs dans le code rapidement, avec combinaison ctrl+ aou ctrl+ x. Y a-t-il un plugin pour ça ou autre chose?
Réponses:
J'ai écrit un plugin ( toggle-bool ) pour basculer les valeurs booléennes que vous pouvez essayer. Il prend en charge les valeurs booléennes suivantes:
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
Il y a switch.vim , et il est personnalisable.
Le point d'entrée du module d' extension est une commande unique,
:Switch
. Lorsque la commande est exécutée, le plugin recherche l'un des quelques modèles spécifiques sous le curseur et effectue une sous-station en fonction du modèle.
Par exemple, si le curseur se trouve sur le true
dans le code suivant:
flag = true
puis lors de l'exécution :Switch
, le true
deviendra false
.
Le basculement true
/ false
similaire a été implémenté par de nombreux auteurs de plugins. Deux d'entre eux ont déjà été mentionnés:
D' autres sont à bascule par Timo Teifel ( # 895 ), lundi par Stefan Karlsson ( # 1046 ), toggle_words par Vincent Wang ( # 1676 ), toggle_word par Alexandru Ungur ( # 1748 ), incbool.vim par Dmitry Petrov ( # 4361 , github ) , nextval de Michael Arlt ( # 4536 , github ).
Juste au cas où vous voudriez augmenter les nombres selon une série personnalisée, par exemple la série Fibonacci, consultez nexus de Barry Arthur ( github ).
Ctrl-A/X
Cependant, tous ne suivent pas par défaut l'idée d'étendre Ctrl-A/X
mais définissent une nouvelle commande et / ou un nouveau mappage (y compris switch.vim et toggle-bool ). Je veux mettre en évidence les plugins qui `` suralimentent '' Ctrl-A/X
et, par conséquent, fournissent par défaut ce que l'OP a demandé:
Un plugin connexe qui s'étend également Ctrl-A/X
est la datation rapide par Tim Pope ( # 2120 , github ) qui vous permet d'incrémenter les dates.
Certains plugins permettent de combiner un deuxième Ctrl-A/X
plugin incrémenteur comme solution de rechange, par exemple
SwapIt par Michael Brown:
nmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
nmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
vmap <Plug>SwapItFallbackIncrement <Plug>SpeedDatingUp
vmap <Plug>SwapItFallbackDecrement <Plug>SpeedDatingDown
cycle par bootleq:
map <silent> <Plug>CycleFallbackNext <Plug>SpeedDatingUp
map <silent> <Plug>CycleFallbackPrev <Plug>SpeedDatingDown
switch.vim par 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>
Remarque
Si vous utilisez le comportement de recherche de la fonction intégrée Ctrl-A/X
(recherchez la prochaine valeur possible dans la ligne à incrémenter), leur suralimentation peut interférer.
changez le mappage en ce que vous voulez utiliser
l'annulation est dans le cas où vous l'utilisez au-dessus d'un espace, car ciw modifiera l'espace au lieu du mot (et il n'y a pas de moyen facile d'obtenir le bon mot de manière fiable)
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
notez également que ^ M doit être <C-V><Enter>
, pas littéralement ^ M
<C-a>
et <C-x>
lorsque le mot actuel n'est pas un booléen, de cette façon OP serait vraiment capable d'utiliser ces mappages. Vous pouvez également utiliser <CR>
au lieu de ^M
dans votre mappage, et il est généralement préférable de fournir un mode à votre map
commande, ici nnoremap
serait plus approprié que noremap
.