Eu acho que seria útil ter a possibilidade de trocar true
e false
valores no código rapidamente, com a combinação ctrl+ aou ctrl+ x. Existe algum plugin para isso ou algo mais?
Eu acho que seria útil ter a possibilidade de trocar true
e false
valores no código rapidamente, com a combinação ctrl+ aou ctrl+ x. Existe algum plugin para isso ou algo mais?
Respostas:
Eu escrevi um plugin ( toggle-bool ) para alternar os valores booleanos que você pode experimentá-lo. Ele suporta os seguintes valores booleanos:
true
<-> false
yes
<-> no
on
<-> off
0
<-> 1
Há switch.vim , e é personalizável.
O principal ponto de entrada do plug-in é um único comando
:Switch
,. Quando o comando é executado, o plug-in procura um dos poucos padrões específicos sob o cursor e executa uma subestação, dependendo do padrão.
Por exemplo, se o cursor estiver no true
código a seguir:
flag = true
depois de executar :Switch
, o true
irá se transformar false
.
A alternância true
/ false
e similar foi implementada por muitos autores de plugins. Dois deles já foram mencionados:
Outros são alternados por Timo Teifel ( # 895 ), segunda-feira por 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 ).
Caso você queira aumentar os números de acordo com uma série personalizada, por exemplo, a série Fibonacci, consulte o nexus de Barry Arthur ( github ).
Ctrl-A/X
No entanto, nem todos eles seguem por padrão a idéia de estender, Ctrl-A/X
mas definem um novo comando e / ou um novo mapeamento (incluindo switch.vim e toggle-bool ). Quero destacar os plugins que 'sobrecarregam' imediatamente Ctrl-A/X
e, portanto, fornecem por padrão o que o OP pediu:
Um plugin relacionado que também se estende Ctrl-A/X
é a speeddating de Tim Pope ( # 2120 , github ) que permite aumentar as datas.
Alguns plug-ins permitem combinar um segundo Ctrl-A/X
plug-in incrementador como substituto, por exemplo
SwapIt de 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
Se você usar o comportamento de busca do builtin Ctrl-A/X
(encontre o próximo valor possível na linha para incrementar), sobrecarregá-los pode interferir.
altere o mapeamento para o que você deseja usar
o desfazer é no caso de você usá-lo em cima de um espaço, pois o ciw editará o espaço em vez da palavra (e não há uma maneira fácil de obter a palavra certa de maneira confiável)
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
observe também que ^ M precisa ser <C-V><Enter>
, não literalmente ^ M
<C-a>
e, <C-x>
quando a palavra atual não for booleana, dessa forma, o OP seria realmente capaz de usar esses mapeamentos. Além disso, você pode usar em <CR>
vez de ^M
no seu mapeamento, e geralmente é uma prática recomendada fornecer um modo ao seu map
comando, aqui nnoremap
seria mais apropriado do que noremap
.