Como incrementar no vim no windows (onde CTRL-A não funciona…)
-
09-06-2019 - |
Pergunta
Enquanto CtrlX funciona bem no vim no Windows, CtrlA seleciona tudo (duh).
Existe uma maneira de incrementar um número pressionando uma tecla no Windows?
Solução
Tente Ctrl-NumPad +?
(daqui)
Outras dicas
Você pode fazer CtrlA para incrementar no Windows abrindo o arquivo 'mswin.vim' em seu diretório vim e encontrando a seção semelhante a:
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Comente todas essas linhas da seguinte maneira:
" CTRL-A is Select all
"noremap <C-A> gggH<C-O>G
"inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
"cnoremap <C-A> <C-C>gggH<C-O>G
"onoremap <C-A> <C-C>gggH<C-O>G
"snoremap <C-A> <C-C>gggH<C-O>G
"xnoremap <C-A> <C-C>ggVG
e a CtrlA o pressionamento de tecla aumentará.
Esta é uma opção muito boa quando o teclado não possui um teclado numérico real.
Sei que esta é uma pergunta antiga, mas hoje me deparei com outra opção com base na seguinte pergunta.Fazer o gvim agir como no Linux permitirá que o CTRL-A funcione como você espera:
como fazer o gvim no Windows se comportar exatamente como o console do Linux vim?
Há uma seção do _vimrc que contém os seguintes itens.Isso faz com que muitos dos caracteres de controle atuem como no Windows.
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
Eu comentei (com "
) as linhas mswin e o set nocompatible
linha.A partir daí, adicionei set compatible
.Isso faz com que o gvim aja como no Linux.Assim, o meu se parece com:
set compatible
source $VIMRUNTIME/vimrc_example.vim
"set nocompatible
"source $VIMRUNTIME/mswin.vim
"behave mswin
Acabei de aprender esse truque hoje, então se não estiver totalmente correto em minhas informações, por favor me avise.
Modifiquei a solução do TMealy para que CtrlA ainda seleciona tudo (acho isso útil), enquanto CtrlEU incrementos (também úteis).
noremap <C-I> <C-A>
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Um problema semelhante ocorre no GNU/Linux ao usar o Vim com mswin.vim
.Remapeamento Alt.+X para Ctrl+A antes de evocar mswin.vim
resolveu meu problema.
execute "set <A-x>=\ex"
noremap <A-x> <C-A>
source $VIMRUNTIME/mswin.vim
behave mswin
Agora, Alt.+X e Ctrl+X respectivamente aumentar e diminuir os números no Vim.
Mapeando para Alt. as combinações de teclas geralmente não são evidentes no Vim;leia mais sobre isso aqui.
Estou usando o terminal + tela cygwin, então <c-a> é capturado pelo multiplexador de terminal.Eu usei este mapeamento:
:noremap <ci> <c-a>
Parece que o CtrlA foi mapeado em algum lugar na inicialização.Como sugerido anteriormente, use:
desmapear <c-x>
Eu usaria unmap, não nunmap.