Gehen Sie zum Zeilenanfang, ohne eine neue Zeile in VI zu öffnen

228

Seit Ewigkeiten benutze ich SHIFTOund SHIFT$gehe zum Anfang und Ende einer Zeile in vi.

Dies SHIFTOist jedoch mehr zum Öffnen einer neuen Zeile über dem Cursor.

Gibt es einen Befehl, der Sie nur zum Anfang einer Zeile führt?

rix
quelle
9
Geben Sie zusätzlich zu den folgenden Antworten Folgendes ein: help left-right-motions in Vim, um zahlreiche Informationen zu erhalten.
ngm
ein gutes buch für vim: üben in vim. ^ 0
23.

Antworten:

425

Sie können ^oder 0(Null) im normalen Modus verwenden, um zum Zeilenanfang zu gelangen.

^bewegt den Cursor auf das erste nicht leere Zeichen einer Zeile
0bewegt den Cursor immer auf die "erste Spalte"

Sie können auch Shiftiverschieben und in den Einfügemodus wechseln.

Xavier T.
quelle
5
Auch Shift + A und Shift + I gehen zum Ende bzw. Anfang der Zeile und
wechseln
7
Drücken ^ist für mich normalerweise nicht so einfach wie Drücken 0und wnacheinander.
DXDXY
33

Ein einfaches 0bringt Sie zum Anfang einer Zeile.

:help 0 für mehr Informationen

Fredrik Pihl
quelle
25

Probieren Sie diese Vi / Vim-Cheatsheet- Lösung für viele Probleme aus.

Für den normalen Modus:
0- [Null] bis zum Zeilenanfang, erste Spalte.
$- bis zum Zeilenende

neugierigMonkey
quelle
12

Sie können 0oder verwenden ^, um zum Zeilenanfang zu gelangen.
Mit Shift+ können Sie Izum Anfang wechseln und in den Bearbeitungsmodus wechseln ( Einfügen ).

a8m
quelle
Ihre Antwort ist größtenteils richtig, aber es gibt eine kleine Einschränkung. Shift+Ioder ^bewegt den Cursor an den Anfang des Textes in der Zeile. Wenn die Zeile nam Anfang Tabulatoren enthält, bewegt sie den Cursor in die n*tabstop + 1Spalte. Während 0bewegt den Cursor zur allerersten Spalte der Zeile.
Narendra-Choudhary
10

Es geht auch anders:

|

Das ist die "Pipe" - das Symbol, das sich im ANSI-Layout unter der Rücktaste befindet .

Vim quickref ( :help quickref) beschreibt es als:

N      |      to column N (default: 1)

Was ist mit umbrochenen Linien?

Wenn Sie Zeilenumbrüche aktiviert haben 0und |nicht mehr zum Anfang der Bildschirmzeile gelangen. In diesem Fall verwenden Sie:

g0

Wieder vim quickref doc:

 g0   to first character in screen line (differs from "0"
      when lines wrap)
Andriy Drozdyuk
quelle
Jetzt sehe ich, warum es funktioniert. Vielen Dank. Ich habe mich gewundert. Ich denke es ist besser als 0weil |und $sind auf dem gleichen Schlüssel.
WesternGun
7

Geben Sie "^" ein. Und hol dir ein gutes "Vi" Tutorial :)

Skippy Fastol
quelle
6

Bewegen Sie den Cursor zum Anfang oder Ende mit dem Einfügemodus

  • I - Bewegt den Cursor auf das erste nicht leere Zeichen in der aktuellen Zeile und aktiviert den Einfügemodus.
  • A - Bewegt den Cursor zum letzten Zeichen in der aktuellen Zeile und aktiviert den Einfügemodus.

Hier Ientspricht ^+ i. Ähnlich Aist $+ äquivalent a.

Bewegen Sie den Cursor einfach zum Anfang oder Ende

  • ^ - Bewegt den Cursor auf das erste nicht leere Zeichen in der aktuellen Zeile
  • 0 - Bewegt den Cursor auf das erste Zeichen in der aktuellen Zeile
  • $ - Bewegt den Cursor zum letzten Zeichen in der aktuellen Zeile
Rashok
quelle
5

Ich habe gerade 0 (Null) gefunden und Shift + 0 funktioniert auf vim.

brian_wang
quelle
5
shift+0Das )ist der nächste Satz
Mihai
Shift+0ist besser, ^zeigt den Charakter und das ist nervig. Danke
Calbertts
1

0 Bringt Sie zum Anfang der Zeile

Shift 0 Bringt Sie zum Ende der Linie

Sagar Jain
quelle
Shift-0 (')') bringt Sie nicht zum Anfang der Zeile
Boris Churzin
@Devenv: Das stimmt! 0 wird
Sagar Jain
1
Shift-0 (")") ist "Satz vorwärts", nicht "Zeilenende" (das habe ich gemeint)
Boris Churzin