Bewegen Sie den Cursor in vim zum Dateiende


409

Wenn der Cursor in Vim zum Ende der Datei (dh zum Ende der letzten Zeile) in Vim gehen soll, muss ich sechs Tastenanschläge eingeben:

<ESC>G$a- was übersetzt ESC+ Shiftg+ Shift4+ aauf meinem Tastatur - Layout.

Wie kann ich das effizienter machen?

Da ich regelmäßig auf vielen verschiedenen Computern arbeite, kann ich .vimrc nicht immer ändern. Daher suche ich nach Antworten, ohne diese Datei bearbeiten oder erstellen zu müssen.


8
Ich möchte nur darauf hinweisen, dass die angezeigten Befehle wie folgt dargestellt werden sollten: <esc>G$aSie zeigen die Verschiebung, indem Sie den Buchstaben in Großbuchstaben schreiben. Und Sie zeigen eine $anstelle von Umschalt + 4, da sich die Funktion dieser Taste ( $) unabhängig von der Tastatur nicht ändert. Wenn Sie jedoch + 4 umschalten, kann sich die Bedeutung ändern. :)
Greduan

3
@Eduan Ich stimme im Allgemeinen zu, aber in diesem Fall sind auch tatsächliche Tastendrücke relevant. Ich habe beide hinzugefügt :-)
timss

@Eduan Für die Frage der Effizienz spielen die tatsächlichen Befehle keine Rolle. Die Tastenanschläge tun es. Und da es große Unterschiede im Tastaturlayout zwischen den Sprachen gibt, weiß ich nicht, wo sich die $Tastatur auf einer US-Tastatur befindet, und es kann durchaus sein, dass für Amerikaner die Eingabe des Befehls $nur ein Tastendruck ist. Ich wollte ausdrücklich zeigen, dass es für mich (mit einer deutschen Tastatur) zwei Tastenanschläge sind.

1
@ was IC. Ich kann das verstehen. Ich wollte nur darauf hinweisen, dass Sie es in Zukunft wissen. :)
Greduan

Antworten:


410

Keine Notwendigkeit, ausdrücklich auf das Ende der Zeile zu gehen , bevor tun a, verwenden A;
Fügen Sie am Ende der Zeile [Anzahl] mal Text hinzu

<ESC>GA


3
Wenn Sie im normalen Modus bleiben möchten, versuchen Sie es G)(oder <ESC>G)wenn Sie sich im Einfügemodus befinden und über das letzte Zeichen im normalen Modus enden möchten). Gleiche Anzahl von Tastenanschlägen, jedoch im normalen Modus anstelle des Einfügemodus. Ich finde dies gelegentlich nützlich, wenn ich einen normalen Befehl für das letzte Wort anstelle eines Befehls zum Einfügen oder Bearbeiten ausführen möchte.
Alejandro

1
@Alejandro Während nützlich, )bewegt sich [count]Sätze vorwärts und geht daher nicht zum Zeilenende, wenn zum Beispiel die letzte Zeile ist This is a test. Foo bar.. Es wird jedoch für eine Menge Code funktionieren, der oft nicht als Sätze betrachtet wird und daher sowieso bis zum Ende geht.
Timss

Wenn Sie vorhaben, die nächste Zeile zu schreiben, <ESC> G oführen Sie den Wagenrücklauf durch und versetzen Sie in der nächsten Zeile (am Ende der Datei) in den Einfügemodus, wobei Sie einige weitere Tastenanschläge speichern.
broc.seib

1
Auch wenn Sie nicht in den Einfügemodus wechseln möchten, verwenden Sie G$.
BladeMight

498

Das geht schneller. Verwenden Sie einfach diese

:$

16
Dies bewegt sich nicht zur letzten Spalte nur zur letzten Zeile
Rajeshwar

6
Wenn Sie nur schnell zum Dateiende gehen möchten und Ihre Tastaturkürzel durcheinander sind, ist dies der richtige Befehl. Vielen Dank!
Joemar.ct

9
: $ + End würde es in diesem Fall tun.
Karthik

1
Dies erfordert <ENTER> am Ende sowie immer noch das Ende der Zeile, was es nicht schneller macht.
Alejandro

1
: $ macht den Trick! Gehen Sie zum Ende der Datei, wenn die Frage gestellt wird! danke
Sijan Shrestha

130

Hit Escund drücken Sie dann: Shift+G


3
Dies geht zum Anfang der letzten Zeile, nicht zum Ende der Datei.
Jordan läuft

5
Dies geht für mich bis zum Ende der Datei und ist auch eine schöne einfache Tastenkombination
Jacob Garby

G behält die Spaltennummer bei (falls möglich) und wechselt zur letzten Zeile. Jacob war wahrscheinlich am Ende der Linie und Jordan an der Spitze, als er das Kommando ausführte.
run_the_race

39

Für den Anfang besteht keine Notwendigkeit für die Rückgabe. G$Wird besorgt. Und Sie werden durch Zählen <Esc>und ain der Länge eines normalen Modusbefehls irreführend .

Sie können jedoch Ctrl+ verwenden, Endwenn Sie möchten.


8
Es istCtrl-END
Zmo

Ich habe keinen EndSchlüssel auf meiner Tastatur (wenn du das meinst).

Eigentlich ist die Antwort von TIMSS zeigt , dass ich gut habe zu zählen <ESC>und a, weil er oder sie einen Weg wußte zu ersetzen Shift+$, amit A.

1
@Was die meisten Laptoptastaturen heutzutage zusammen mit Fn Home / End in Up / Down / Left / Right haben, wenn sie keine dedizierten Home / End-Tasten haben
phuclv

22

Ich dachte, die Frage wäre "Cursor zum Ende der Datei in vim bewegen"?

Dateiende: Esc+ G
Dateianfang Esc+ g(oder ggwenn Sie sich bereits im Befehlsbereich befinden)


21

Der beste Weg, um zur letzten Zeile der Datei zu gelangen, ist mit G . Dadurch wird der Cursor in die letzte Zeile der Datei bewegt.

Der beste Weg, um zur letzten Spalte in der Zeile zu gelangen, ist mit $ . Dadurch wird der Cursor in die letzte Spalte der aktuellen Zeile bewegt.

Wenn G$Sie dies tun , gelangen Sie zum Ende der Datei und zur letzten Zeile.

Und wenn Sie am Ende der Datei in den Einfügemodus wechseln möchten, tun Sie dies einfach GA. Auf diese Weise gelangen Sie in die letzte Zeile der Datei und wechseln in den Einfügemodus, indem Sie an die letzte Spalte anhängen. :) :)


13

Nach oben gehen - verdoppeln g

Gehe nach unten - Shift+g


1
Ausgezeichnet. Funktioniert auch auf dem Mac.
Bishwas Mishra

11

Wenn Sie vorhaben, die nächste Zeile zu schreiben, ESCGoführen Sie den Wagenrücklauf durch und versetzen Sie in der nächsten Zeile (am Ende der Datei) in den Einfügemodus, wobei Sie einige weitere Tastenanschläge speichern.


6
  • Ctrl + Home = Zum Dateianfang springen
  • Ctrl + End = Zum Ende der Datei springen

3

Das geht schneller:

<ESC>GA

5
Warum eine doppelte Antwort posten, besonders wenn sie nicht erklärt wird A?
Timss

3

Sie können es einem Schlüssel zuordnen, z. B. F3 in .vimrc

inoremap <F3> <Esc>GA

2
Dies ist zwar möglich, aber im Allgemeinen eine schlechte Idee. Streben Sie stattdessen nach Muskelgedächtnis und verwenden Sie GAoder G$.
Timss

Ich gewinne immer noch mit einem Tastendruck :) Wenn Sie wirklich etwas schnelles in vim brauchen, ist es nützlich zu lernen, wie man .vimrc macht.
Tim

Es wäre auch gut, ein vollständiges Kartenbeispiel zu haben, anstatt dem OP zu sagen, dass es nachschlagen soll. Denn wenn Sie es nicht finden können, wie soll das OP sein?
FDinoff

1
Sie "gewinnen" nichts, da Sie sich von Ihrem Homerow entfernen müssten. Darüber hinaus können Sie dies nicht für andere Konfigurationen oder sogar für vi verwenden, wenn Sie es zufällig verwenden. Sie sparen wirklich keine Zeit. Wenn überhaupt, verwenden Sie C-endwie von Hobbs erwähnt.
Timss

Ich stimme den Kommentaren hier zu, habe aber das Mapping für Sie bereinigt
D. Ben Knoble

0

Ich habe nach einer Möglichkeit gesucht, den Cursor an das Ende einer Zeile zu bewegen und dann auf einem Mac-Terminal zu bearbeiten. So hat es bei mir funktioniert. Verlassen Sie den Bearbeitungsmodus, geben Sie g_ ein (das ist 'g' und unterstreichen Sie dann ohne Doppelpunkt vorne), und drücken Sie dann einfach die Taste 'a', damit Sie Ihren Skripten Code "hinzufügen" können


Hast du vielleicht gesucht A?
D. Ben Knoble

Ich habe A ausprobiert, aber es hat nicht ganz funktioniert
Xinyi Xiang

das ist seltsam, Aist im Grunde gleichbedeutend mit$a
D. Ben Knoble

0

Eine andere Alternative:

:call cursor('.',strwidth(getline('.')))

Dies kann nützlich sein, wenn Sie eine Funktion schreiben. Eine andere Situation wäre, wenn ich eine bestimmte Vorlage öffnen und zum Ende der ersten Zeile springen muss. Ich kann Folgendes tun:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

Das obige könnte auch mit gemacht werden

vi +"execute ':normal! $'" notetaking_template.txt

Siehe auch:

vim - Liefert die Länge der aktuellen Zeile


0

Wenn Sie am Ende des Dateityps Inhalte aus der Zwischenablage einfügen möchten:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.