Gibt es einen Befehl zum Teilen von Zeilen in Vim?


15

In Vim verbindet der JSchlüssel zwei Zeilen miteinander. Gibt es eine ähnliche integrierte Tastenkombination zum Teilen von Zeilen mit einer neuen Zeile (an der Cursorposition oder ähnlich)?

Was wäre alternativ die robusteste Methode, um eine Tastenkombination zu definieren, um dies zu tun (im normalen Modus, nicht im Einfügemodus)?


Antworten:


16

Nein, dafür gibt es keinen eingebauten Befehl.

Wenn ich mich auf einem trennen will <Space>, tue ich das r<CR>.

--- BEARBEITEN ---

Der Kommentar von @ keith-nicholas erinnerte mich an diese Frage. FWIW In der Zwischenzeit habe ich mir eine hoffentlich "universelle" Methode ausgedacht:

function! BreakHere()
    s/^\(\s*\)\(.\{-}\)\(\s*\)\(\%#\)\(\s*\)\(.*\)/\1\2\r\1\4\6
    call histdel("/", -1)
endfunction

nnoremap <key> :<C-u>call BreakHere()<CR>

4
Verwenden r<CR>ist einfach klug! Vielen Dank!
Marcelo

1
das ist großartig! Super nervig beim Einfügen, um Zeilen einzufügen
Keith Nicholas

Ich fand, s<CR>hält Einrückung, wohingegen r<CR>nicht.
Toxefa

5

a Enter Escrechts vom Cursor oder i Enter Esclinks teilen.


1
Das ist es. Fügen Sie einfach einen einzelnen Zeilenumbruch ein. Alternativ: Verwenden Sie r + <return>, um das Zeichen unter dem Cursor durch eine neue Zeile zu ersetzen. Es wäre schön, einen einzigen Buchstabenbefehl dafür zu haben, aber soweit ich weiß, gibt es keinen.
Tonny

2

Der einfachste Weg, Linien in Vim zu teilen, ist der Befehl im normalen Modus gq(geben Sie beide Buchstaben im normalen oder visuellen Modus schnell hintereinander ein):

  • Im visuellen Modus wird alles geteilt, was ausgewählt ist.
  • Im normalen Modus folgen Sie gqmit einer Bewegung.

Teilt beispielsweise gqleine Zeile auf die aktuell eingestellte Breite. Sie können festlegen, dass die Breite der Trennlinien von Ihrer aktuellen Einstellung abweicht

:set textwidth=<n>

Wobei n = Anzahl der Zeichen, die Sie in einer Zeile haben möchten, z. B. 10, und nach Abschluss wieder auf Ihre normale Breite zurückkehren.

Diese Informationen stammen aus einem Youtube-Video von Kholidfu, das zeigt, wie Linien im normalen Modus mithilfe einer Bewegung verbunden und geteilt werden: Vim Tutorial - Linien verbinden und teilen .


1

Sie können Ihre eigene Karte definieren. So definieren Sie z als Befehl:

:map z i<CTRL+m>

0

Sie können ein Makro aufzeichnen:

Geben Sie im normalen Modus "q +" ein, um die Aufzeichnung zu starten. Drücken Sie "i", das Makro, das Sie aufnehmen möchten. Drücken Sie dann erneut "q", um die Aufnahme zu beenden.

Um das Makro zu verwenden, gehen Sie in den normalen Modus und geben Sie "@ + Buchstabe" ein.

In meinem Fall habe ich das "b" verwendet, um dieses Makro zu verwenden: um den Typ im normalen Modus aufzuzeichnen "qbiq", um den Typ im normalen Modus zu verwenden "@b"

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.