Wie bewege ich den Cursor auf eine bestimmte Zeile und Spalte?

77

:30 bewegt meinen Cursor an den Anfang von Zeile 30.

Wie kann ich Vim anweisen, den Cursor auf Zeile y, Spalte x zu setzen? Ist dies möglich , ohne mit den Pfeiltasten oder h, j,k , lTasten?

Ich verwende Vim Version 7.3.429.

pacv
quelle

Antworten:

122

Versuchen Sie eine Zahl gefolgt von einer Pipe, um zur angegebenen Spalte in dieser Zeile zu gelangen.

80| sollte Sie auf Position 80 in dieser Zeile bringen.

EDIT: Wenn Sie zu einer bestimmten x, y-Position gehen möchten, bin ich mir bei dieser nicht sicher.

WebDevNewbie
quelle
Vielen Dank, ich habe vergessen, das auch hinzuzufügen, wenn ich Ihren Vorschlag verwende. Ich erhalte E16: Ungültiger Bereich> wc temp.txt 3 80 454 temp.txt
pacv
60
Er meint 80|im normalen Modus nicht :80|. Wenn Sie also eine X-, Y-Koordinate (z. B. 42,80) erhalten möchten, können Sie dies tun 42G80|. Wenn Sie dies über den Befehlszeilenmodus tun möchten, können Sie dies tun :norm 42G80|.
Conner
Danke, Conner. Ich war mir auch nicht sicher, wie ich genau X, Y machen sollte!
WebDevNewbie
@Conner Ich mag Ihren Kommentar. Können Sie Ihren Kommentar in eine Antwort umwandeln, damit ich besser sichtbar bin?
SebMa
84

Ich bin mir nicht sicher, ob es in irgendeiner Weise bequemer ist, aber Sie können die cursorFunktion direkt aufrufen :

:cal cursor(30, 5)

springt zu Zeile 30, Spalte 5.

Jeen Broekstra
quelle
4
mehr Tastenanschläge als: 30 <CR> 80 |, aber cool zu wissen, dass es eine Cursorfunktion gibt!
Larry
2
Diese Lösung eignet sich besonders in Kombination mit der +...Befehlszeilenoption: Sie ermöglicht es einem Skript, das in vim aufruft, den Cursor präzise zu positionieren.
cmaster - wieder einsetzen Monica
Dies ist besonders hilfreich beim Schreiben von Vim-Skripten.
11.
25

Im Befehlsmodus:

Geben Sie eine Zahl gefolgt von G (Großbuchstaben) ein, um zu dieser Zeilennummer zu gelangen.
Beispiel: 30G geht zu Zeile 30.
Beispiel: G geht zur letzten Zeile des Puffers.

Geben Sie eine Zahl gefolgt von | ein (Pipe), um zu dieser Spalte in der aktuellen Zeile zu gelangen.
Beispiel: 80 | geht zu Spalte 80.

Also: 30G80 | geht zu Zeile 30, Spalte 80.

user910028
quelle
1

Eine weitere Option mit execute <line_num>. Zum Beispiel,

function GotoLine(line)
     execute a:line
endfunction
plafratt
quelle