Ich habe das:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
Und ich möchte das bekommen:
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
Gibt es eine Möglichkeit, dies mithilfe von Tastaturkürzeln schnell zu tun?
git config --global core.editor <whatever>
oder für viele Dinge gleichzeitig (einschließlich Git) konfigurieren , indem Sie ihnexport EDITOR=<whatever>
in Ihren.bashrc
.Antworten:
Geben Sie
ddp
im Befehlsmodus ein, um die aktuelle Zeile durch die nächste zu ersetzen.quelle
ddp
. Wenn Sie sich noch nicht im Befehlsmodus befinden, drücken SieEsc
, um in den Befehlsmodus zu gelangen.dd
löscht die aktuelle Zeile nach dem Kopieren in ein "Register".p
kopiert ("setzt") den Inhalt des Registers nach der aktuellen Zeile in Ihren Puffer . Ebenso können Sie zwei Zeichen mitxp
oder zwei Wörter mit austauschendwwP
.dwwP
dies nicht auf die gleiche Weise funktioniert, wenn sich die beiden Wörter am Ende einer Zeile befinden? (Und das Tauschen des letzten Wortes in einer Zeile mit dem ersten Wort in der folgenden Zeile ist noch schwieriger.)dd
löscht die aktuelle Zeile, dann können Sie die entfernte Zeile mit einfügenp
. Es gibt aber auch einen anderen Wegm
. Mit könnenm
Sie Linien bewegen, dh:m 1
verschiebt die aktuelle Zeile nach Zeile 1:m 0
verschiebt die aktuelle Zeile nach oben:m $
verschiebt die aktuelle Zeile nach untenPlatzieren Sie in Ihrem Beispiel den Cursor in der ersten Zeile und geben Sie ein
:m $
Weitere Informationen: http://vim.wikia.com/wiki/Moving_lines_up_or_down
quelle
Trotz der Tatsache , dass diese Frage ist ziemlich alt und als beantwortet markiert, würde Ich mag die Antwort zu erweitern , indem er sagte , dass Sie normalen Modus Befehle verwenden können, die von bereitgestellt wurden Sven Marnach mit
nnoremap
etwa so:Auf diese Weise können Sie Zeilen mit Ctrl+ Upund Ctrl+ Downin Ihrer Datei verschieben. Dies überschreibt jedoch das
@"
Register, in dem Ihre zuletzt kopierte Zeichenfolge / Wort / Buchstabe / etc. Gespeichert wird. Durch Hinzufügen von "(reg) beforedd
undp
Befehlen können wir dies beheben:Hier fügen wir
"a
vor dem Löschen Befehle hinzu und fügen sie ein, um unsere Zeile im@a
Register zu speichern , damit Ihr Standardkopierregister nicht überschrieben wird. Es kann jedoch sein, dass es den Inhalt des@a
Registers überschreibt (wer weiß, aber Sie können es für etwas Wichtiges in Ihrem Anwendungsfall verwenden, aber dieser Schritt ist etwas paranoid, Sie können es überspringen, wenn Sie möchten). Lassen Sie uns das auch beheben:(
<silent>
Wird benötigt, um zu verhindern, dass unsere Befehle in der Nachrichtenzeile unten wiedergegeben werden.)Jetzt haben wir zwei Zuordnungen, mit denen wir Zeilen innerhalb der Datei mit Tastaturkürzeln verschieben können. Sie können Schaltflächen neu definieren, ich benutze Alt+ j/ k, was wäre
<A-j>
und<A-k>
für diese Befehle. Allerdings unterstützen nicht alle Terminalemulatoren die Alt-Tastenzuordnungen AFAIK.quelle
Beispiel:
mit
:m-2
, Schalter (aktuelle Zeile - 2)mit
:m+1
Schalter (aktuelle Leitung + 1)Sie können dies zuordnen, wenn Sie möchten.
quelle