Eu descobri recentemente Ctrl+ Ee Ctrl+ Yatalhos para Vim que respectivamente mover a tela para cima e para baixo com um passo uma linha, sem mover o cursor .
Você conhece algum comando que deixa o cursor onde está, mas move a tela para que a linha que contém o cursor se torne a primeira linha? (Ter um comando para a última linha seria um bom bônus).
Eu posso conseguir isso pressionando manualmente Ctrl+ E(ou Ctrl+ Y) o número adequado de vezes, mas ter um comando que de alguma forma faça isso diretamente seria bom.
Alguma ideia?
vim
scroll
cursor-position
ereOn
fonte
fonte
Respostas:
( cuidado comzz , se você tiver uma Caps Lockligação acidental, salvará e sairá
vim
!)fonte
xdotool
outriggerhappy
. Finalmente, mostrar seus Caps Lock estado (não pode ser feito em Vimscript.) ...xev -q
,cat /proc/bus/input/devices
para encontrar o dispositivo para consultar e /evtest
outhd ... --dump /dev/input/event<#>
verificar o estado, etc. Se você absolutamente precisar fazer um remapeamento em todo o sistema, pelo menos troque dois bloqueios como caps <--> num - mas a questão é mais esquecê-la, porque se você a quisesse antes, continuará usando-a, seja qual for o mapa. Risco de quebrar o Vim antes dos arquivos / usuário / sistema.confirm()
. Além disso, em vez de mapear caps lock para ctrl, você pode mapeá-lo para uma chave ou combinação entendida, mas não mapeada pelo Vim, e então emular caps lock exclusivamente no modo de inserção / substituição, manualmente ou por algo como github.com/tpope/ vim-capslock . Você provavelmente não vai precisar dele fora do Vim, mas se o fizer, escrever um roteiro xmodmap para reverter as alterações, ou ver se os apoios do programa mapeamentos de seus próprios (e fazer anotações.)Além disso:
Ctrl- ye Ctrl- eapenas altere a posição do cursor se for retirado da tela.
Cortesia de http://www.lagmonster.org/docs/vi2.html
fonte
:help CTRL-E
dizMnemonic: Extra lines.
O Vim exige que o cursor esteja na tela atual o tempo todo; no entanto, você pode marcar a posição atual como favorito e rolar para onde você estava.
fonte
Ctrl-O
para outro realmente ótimo, e "backtick, period" coloca você de volta ao local da última edição.mg
, role ao redor, vá para marcar com'g
e pronto. Agora você pode chamar a tecla configurável para dar a volta e parecerá que o cursor nunca saiu da posição atual. Voilá!Aqui está a minha solução no vimrc:
Para que o cursor fique no meio da tela e a tela se mova para cima ou para baixo.
fonte
Para deixar o cursor na mesma coluna quando você usa Ctrl+ D, Ctrl+ F, Ctrl+ B, Ctrl+ U, G, H, M, L,gg
você deve definir a seguinte opção:
fonte
Estou surpreso que ninguém esteja usando a
Scrolloff
opção que mantém o cursor no meio da página. Experimente com:É o primeiro método recomendado no wiki do Vim e funciona bem.
fonte
:set scrolloff=4
exigirá que o cursor esteja sempre a pelo menos 4 linhas da parte superior ou inferior da janela, para que você tenha sempre pelo menos um pouco de contexto.Eu usei esses atalhos no passado ( nota: pressionamentos de teclas separados, por exemplo, toque em z , solte, toque na tecla subseqüente):
z enter -> move a linha atual para o topo da tela
z . -> move a linha atual para o centro da tela
z - -> move a linha atual para baixo
Se não for óbvio:
entersignifica a tecla Returnou Enter.
.significa a tecla DOT ou "ponto final" (
.
).-significa a tecla HYPHEN (
-
)Pelo que vale, z.evita o risco de salvar e fechar o Vi digitando acidentalmente ZZse o caps-lock estiver ativado.
fonte
Você pode prefixar o cursor mover comandos com um número e isso repetirá esse comando muitas vezes
10Ctrl+ Efará Ctrl+ E10 vezes em vez de uma.
fonte
zEnter faz exatamente o que essa pergunta pede.
Funciona onde estranhamente zznão funcionaria (vim 7.4.1689 no Ubuntu 2016.04 LTS sem .vimrc especial)
fonte
Você pode encontrar respostas para " Rolagem do Vim em relação ao cursor, mapeamento personalizado " útil.
Você pode usar
ScrollToPercent(0)
dessa pergunta para fazer isso.fonte
Às vezes, é útil rolar o texto com as teclas Ke J, portanto, tenho essa função "modo de rolagem" no meu arquivo .vimrc (também vinculado azs ).
Consulte scroll_mode.vim .
fonte
meu mnemônico para rolar ...
Ao adicionar outras respostas, preste atenção também
ze
ezs
, significando: mova a tela para a esquerda / direita do cursor (sem mover o cursor)observe também a posição de
h
el
et
eb
e (com o teclado qwertz)c-e
ec-y
(também o "y" de alguma forma aponta para o fundo) no teclado para lembrar para onde a tela está se movendo.fonte
Eu escrevi um plugin que me permite navegar no arquivo sem mover a posição do cursor. É baseado em dobrar as linhas entre a sua posição e a posição alvo e, em seguida, pular a dobra, ou abortá-la e não se mover.
É também fácil de fast-chave entre o cursor na primeira linha, a última linha e cursor no meio clicando apenas j, koul quando você está no modo do plugin.
Eu acho que seria um bom ajuste aqui.
fonte
Digite vim e digite:
:help z
zé o comando vim para redesenhar, portanto, redesenha o arquivo em relação a onde você posiciona o cursor. As opções que você tem são as seguintes:
z+- Redesenha o arquivo com o cursor na parte superior da janela e no primeiro caractere não em branco da sua linha.
z-- Redesenha o arquivo com o cursor na parte inferior da janela e no primeiro caractere não em branco da sua linha.
z.- Redesenha o arquivo com o cursor no centro da janela e no primeiro caractere não em branco da sua linha.
zt- Redesenha o arquivo com o cursor na parte superior da janela.
zb- Redesenha o arquivo com o cursor na parte inferior da janela.
zz- Redesenha o arquivo com o cursor no centro da janela.
fonte