Como incrementar no vim no windows (onde CTRL-A não funciona…)

StackOverflow https://stackoverflow.com/questions/66919

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top