Role a tela, não o cursor, ao usar a roda de rolagem


18

Como estou usando o Vim em um terminal, a rolagem com a roda de rolagem usa a sintaxe \e[Ae \e[B(onde \esimboliza \x1bou escape).

No entanto, o Vim interpreta isso movendo o cursor para cima ou para baixo em uma linha. O comportamento desejado é que a tela é movida para cima ou para baixo, como <C-e>e <C-y>fazer.

Como posso dizer ao Vim para mover a tela quando usei minha roda de rolagem, mantendo o cursor na mesma linha? Isso deve funcionar em todos os modos comuns (inserção, normal, seleção visual).

Eu já tentei, por exemplo, :nnoremap <esc>[A <C-e>(substituir <esc>por um caractere de escape literal inserido por Ctrl+V Esc), mas isso provou ser inútil.

Estou usando o Vim 7.4.52 no Ubuntu 14.04 com GNOME.


Você poderia limitar a pergunta a um sistema operacional ou ambiente de janela?
200_success

@ 200_success Tudo bem, eu editei meu ambiente na pergunta.
Maçaneta da porta

Eu acho que essa pergunta também deve ser marcada como 'terminal'. Não é editável porque foi respondida?
precisa saber é o seguinte

Respostas:


12

Como o @Doorknob disse em seu comentário, :set mouse=acorrige o problema.


1
Existe uma maneira de fazer isso sem definir mouse=a? Não quero cliques acidentais que atrapalhem meu fluxo de edição.
precisa saber é

o aem mouse=asignifica all(não anexado). from :help mouse: "o mouse pode ser ativado para diferentes modos ... Normalmente, você habilitaria o mouse nos quatro modos com:: set mouse = a" pelo menos no meu vim quando eu habilitei que ele não mexia na troca de modo (apenas permitiu a rolagem - e "clique para ir para a linha")
Fawix

2
Embora esse tópico seja antigo, quem quiser, set mouse=asem cliques acidentais, atrapalha o fluxo, :map <LeftMouse> <nop>faria o truque.
Sunny Pun

0

O comportamento que você quer é o que acontece no meu vim. Não consigo encontrar uma configuração que a ligue / desligue. Talvez verifique o : ajuda rolagem ? scrolloffpode estar envolvido.

Você também pode considerar o uso de marcas como solução alternativa.

  1. ma (marca de referência 'a')
  2. role a tela como quiser
  3. `a (envie o cursor para marcar 'a')

Eu recebo esse comportamento mesmo sem carregar meu vimrc ( vim -u NONE). Este é o Vim 7.4 no Ubuntu 14.04 com GNOME.
Doorknob

@ Doorknob E eu recebo a janela em vez do cursor se mover sem o meu .vimrc(apenas set mouse=a). :help scrollingdiz que o comportamento de rolagem é específico da plataforma. Estou usando o vim no iterm2 no OSX.
precisa saber é o seguinte

Aha! :set mouse=acorrigiu o problema para mim. Edite isso na sua resposta, e eu aceito. Obrigado!
Doorknob
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.