Hoe het scherm verplaatsen zonder de cursor in Vim te verplaatsen?

Ik heb onlangs de sneltoetsen Ctrl+Een Ctrl+Yvoor Vim ontdekt die respectievelijk het scherm omhoog bewegen en omlaag met een stap van één regel, zonder de cursor te verplaatsen.

Ken je een commando dat de cursor laat waar hij is, maar het scherm verplaatst zodat de regel met de cursor de eerste regel wordt? (een commando voor de laatste regel zou een leuke bonus zijn).

Ik kan dit bereiken door handmatig op Ctrl+E(of Ctrl+Y) het juiste nummer te drukken maar het zou fijn zijn om een ​​commando te hebben dat dit op de een of andere manier direct doet.

Enig idee?


Antwoord 1, autoriteit 100%

  • zz– huidige regel naar het midden verplaatsen
    van het scherm
    (Pas op met zz, als u per ongeluk Caps Lockheeft ingeschakeld, bespaart u en verlaat vim!)
  • zt– huidige regel verplaatsen
    naar de bovenkant van het scherm
  • zb– move
    huidige regel naar de onderkant van de
    scherm

Antwoord 2, autoriteit 70%

Aanvullend:

  • CtrlyVerplaatst scherm één regel omhoog
  • CtrleVerplaatst scherm één regel omlaag
  • CtrluVerplaatst cursor & scherm omhoog ½ pagina
  • CtrldVerplaatst cursor & scherm omlaag ½ pagina
  • CtrlbVerplaatst scherm één pagina omhoog, cursor naar laatste regel
  • CtrlfVerplaatst scherm één pagina omlaag, cursor naar eerste regel

Ctrlyen Ctrlewijzigen alleen de cursorpositie als deze van het scherm zou worden verplaatst .

Met dank aan www.lagmonster. org/docs/vi2.html


Antwoord 3, autoriteit 4%

Vim vereist dat de cursor te allen tijde in het huidige scherm staat, maar je kunt de huidige positie als bladwijzer rondscrollen en dan terugkeren naar waar je was.

mg  # This book marks the current position as g (this can be any letter)
<scroll around>
`g  # return to g

Antwoord 4, autoriteit 2%

Het verbaast me dat niemand de optie Scrolloffgebruikt die de cursor in het midden van de pagina houdt.
Probeer het met:

:set so=999

Het is de eerste aanbevolen methode op de Vim-wiki en werkt goed.


Antwoord 5, autoriteit 2%

Hier is mijn oplossing in vimrc:

"keep cursor in the middle all the time :)
nnoremap k kzz
nnoremap j jzz
nnoremap p pzz
nnoremap P Pzz
nnoremap G Gzz
nnoremap x xzz
inoremap <ESC> <ESC>zz
nnoremap <ENTER> <ENTER>zz
inoremap <ENTER> <ENTER><ESC>zzi
nnoremap o o<ESC>zza
nnoremap O O<ESC>zza
nnoremap a a<ESC>zza

Zodat de cursor in het midden van het scherm blijft en het scherm omhoog of omlaag beweegt.


Antwoord 6, autoriteit 2%

Om de cursor in dezelfde kolom te laten staan ​​wanneer u Ctrl+D, Ctrl+Fgebruikt, Ctrl+B, Ctrl+U, G, H< /kbd>, M, L, gg

u moet de volgende optie definiëren:

:set nostartofline

7

U kunt uw cursor verplaatsen opdrachten met een nummer wijzigen en dat zal die opdracht vaak herhalen

1 0 CTRL + E WORDT CTRL + E 10 keer in plaats van één.


8

Z Voer precies waar deze vraag om vraagt.

Het werkt waar vreemd lid Z Z zou niet werken (vim 7.4.1689 op ubuntu 2016.04 LTS zonder speciale .vimrc)


9

U kunt antwoorden vinden op "scrollende vim ten opzichte van de cursor, aangepaste mapping "handig.

U kunt ScrollToPercent(0)van die vraag gebruiken om dit te doen.


10

Soms is het handig om door de tekst te bladeren met de toetsen K en J , dus ik heb deze "scroll-modus" -functie in mijn .vimrc (ook gebonden aan < KBD>Z S ).

Zie scroll_mode.vim .


11

Ik schreef een plug-in waarmee ik het bestand kan navigeren zonder de cursorpositie te verplaatsen. Het is gebaseerd op het vouwen van de lijnen tussen uw positie en uw doelpositie en vervolgens over de vouw springen of het afbreken en helemaal niet beweegt.

Het is ook eenvoudig om snel te slopen tussen de cursor op de eerste regel, de laatste regel en cursor in het midden door te klikken op J , K of L Wanneer u in de modus van de plug-in bent.

Ik denk dat het hier een goede pasvorm zou zijn.

Other episodes