In Vim (effizient) vertikal bewegen

27

Wenn ich einen bestimmten Teil eines Wortes in Vim (horizontal) erreichen möchte, drücke ich einfach w, b, f oder t (etwas). Gibt es eine gute Möglichkeit, dies vertikal zu tun? Zum Beispiel möchte ich zu einem bestimmten Wort oder Buchstaben einer Zeile gelangen, die unter oder über der Zeile liegt, in der ich mich gerade befinde.

PS: Ohne zu benutzen: (Zeilennummer)

janoChen
quelle

Antworten:

29

H, Mund Lbewegen den Cursor zum oberen, mittleren bzw. unteren Bildschirmrand. Anschließend können Sie zzden Bildschirm auf die Zeile zentrieren, auf der sich der Cursor befindet.

Alison R.
quelle
5
Und zb und zt bewegen Bildschirm unten und oben
Jani Hartikainen
11
  • Sie können den Aufwärts- / Abwärtspfeil verwenden, um eine Zeile zu verschieben
  • Sie können eine Zahl eingeben und dann mit dem Aufwärts- / Abwärtspfeil so viele Zeilen nach oben / unten bewegen
  • kleine gSprünge zur ersten Zeile des Dokuments
  • Groß- und GKleinschreibung springt zur letzten Zeile des Dokuments
  • etc.

Es gibt eine Unmenge anderer Möglichkeiten, vim ist in dieser Hinsicht sehr flexibel. Ich würde empfehlen, zuerst ein vim-Spickzettel für grundlegende Befehle zu erhalten und dann, wenn Sie Zeit haben, die vim-Dokumentation zu diesem Thema durchzuarbeiten.

Link zu einem Spickzettel: Spickzettel

Ebenfalls:

  • /+ string + (Enter)sucht nach dem nächsten Vorkommen von string vom Cursor bis zum Ende des Dokuments
  • ? - macht dasselbe, aber vom Cursor zurück zum Anfang des Dokuments

quelle
6

Ich springe herum, indem ich nach einzigartigen Saiten suche, zu denen ich gehen möchte. In Vim können Sie dies tun mit:

/Suchbegriff

Normalerweise scrolle ich mit n und N vorwärts und rückwärts, sobald ich eine Suche eingegeben habe.

Ich scrolle auch mit Strg-F und Strg-B, um schnell durch den Code zu blättern. Aber ich benutze den Suchtrick am häufigsten. Manchmal kann es vorkommen, dass Sie sich beim Durchsuchen der Suchergebnisse mit n und N verirren. Ein guter Befehl zur Orientierung ist Strg-G, das am unteren Rand des Vim-Bildschirms etwa Folgendes ausgibt:

"script.pl" Zeile 219 von 328 - 66% - Spalte 19-23

James Thompson
quelle
+1 für <CTRL> -F und <CTRL> -B, obwohl ich dazu neige, zu "schummeln" und fast genauso oft <PgUp> und <PgDown> zu verwenden!
Technomalogical
4

versuchen Sie:: er motion.txt und: er up-down-Bewegungen

Es hat die ganze Liste der möglichen Bewegungen nach oben nach unten

michael
quelle
3

Sie können auch zu einer bestimmten Zeile im Dokument springen, indem Sie Ngg eingeben, wobei Nes sich um die Zeilennummer handelt, zu der Sie springen möchten.

mloskot
quelle
1
Sie meinen NG...
Peter
1
Ich benutze Nggauch (beide Varianten funktionieren)
Soulmerge
1
Sowie:N
Viraptor
3

Probieren Sie das Easymotion-Plugin von Lokaltog aus : http://www.vim.org/scripts/script.php?script_id=3526

Easymotion Plugin bei der Arbeit

f3lix
quelle
easymotion ist wirklich gut, aber ich weiß nicht, warum es für den Teil oberhalb des Cursors funktionieren soll. Es wird nur der unter dem Cursor hervorgehoben.
nXqd
2

wie bereits erwähnt H, M, L (wie in Hoch, Mittel, Niedrig), Kleinbuchstaben hjkl sind die typischen Konsolenspielbefehle für Links, Runter, Hoch, Rechts und funktionieren in vi (j, k funktionieren in Google Mail, wenn Sie dies aktivieren Tastaturbefehle)


quelle
1

<Ctrl>+D - Nieder

<Ctrl>+U - auf

sml
quelle
Das ist eine halbe Seite blättern. Verwenden Sie <c-f>und<c-b>
Al.G.
1

Zusätzlich zu den regulären vertikalen Bewegungen verwende ich eine modifizierte Version von /programming/4946421/vim-moving-with-hjkl-in-long-lines-screen-lines . Ich bewege mich normalerweise mit den Pfeiltasten, nicht mit hjkl (lange Zeit Benutzer anderer Editoren, bevor ich Vim gefunden habe, zu gewöhnt, um mit arrows / Home / end / PgUp / PgDn zu wechseln, auch nach mehr als 5 Jahren exklusiver Vim-Nutzung).

function! ScreenMovement(movement)
   if &wrap
      return "g" . a:movement
   else
      return a:movement
   endif
endfunction
map <expr> <C-Down> ScreenMovement("j")
map <expr> <C-Up> ScreenMovement("k")
map <expr> <C-Home> ScreenMovement("0")
map <expr> <C-End> ScreenMovement("$")

Wenn Sie die Strg-Taste gedrückt halten, kann ich visuell zum Anfang / Ende oder Auf / Ab der Anzeigezeilen wechseln. Für mich ist das zumindest effizienter als die Alternativen.

Fast vergessen: Ich musste .Xdefaults ändern, damit es in spezifisch urxvt funktioniert, aber das ist wahrscheinlich ein nicht thematisches Problem (mit Antworten auf Google).

Daniel Andersson
quelle