Wie gehe ich mit sehr langen Textzeilen um (mehr als 500 Zeichen)?


19

Bei einigen Textformaten sind Zeilenumbrüche wichtig.

Zum Beispiel verwende ich Vim oft, um MediaWiki-Dokumente zu schreiben, bei denen Sie nicht einfach irgendwo einen Zeilenumbruch setzen können (im Gegensatz zu Markdown). Also bin ich gezwungen, Zeilen mit vielen Zeichen zu schreiben.

Dies kann zu langen (mehr als 200 Zeichen) oder sogar sehr langen (mehr als 1000 Zeichen) Zeilen führen. Ich finde es sehr umständlich, das in Vim zu verwenden. Wenn ich beispielsweise etwas in der Mitte der 1000-Zeichen-Zeile bearbeiten möchte, muss ich meinen Cursor 500-mal bewegen.

Dies kann mit woder etwas schneller gemacht werden /, ist aber immer noch umständlich.

Gibt es bessere Möglichkeiten, damit umzugehen? Bessere Bewegungstasten? Irgendeine Art von "Fake Wrapping" (Text verhält sich so als ob tw=80, aber nein \nin der Datei) oder was anderes?


1
Möglicherweise möchten Sie auch display = lastline festlegen , um leere @ -Zeilen am Ende des Bildschirms zu vermeiden.
Random832

Antworten:


21

Sie können eine gReihe von Befehlen verwenden, um an die Grenzen des sichtbaren Bildschirmbereichs zu gelangen. Bewegt sich zum Beispiel g$zum rechten Rand des Bildschirms (der nicht unbedingt das Ende der Zeile ist). gjBewegt den Cursor eine Zeile nach unten, wie er auf Ihrem Bildschirm angezeigt wird (was nicht unbedingt eine logische Zeile nach unten ist).

Vielleicht könnten Sie die Pfeiltasten neu binden:

nnoremap <Up> gk
nnoremap <Down> gj

Oder manche Leute binden auch direkt nach kund j:

nnoremap k gk
nnoremap j gj

Für den Einfügemodus können Sie Folgendes verwenden:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

Oder:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

Wenn Sie :set wrapVim verwenden , werden die Zeilen umbrochen, sodass Sie die gesamte Zeile sehen können. Sie können auch set showsbreak=+ein +anzeigen, um anzuzeigen, dass Vim das Wrappen ausführt.


Mit dem |Befehl können Sie zu bestimmten Spaltenpositionen springen . Beispiel: 200|Wechselt zur Spaltenposition 200.


1
... und g5jwie immer 5 nach unten springen.
Du

1
@yo 'Ich denke du meinst5gj
Martin Tournoij

1
@Carpetsmoker Seltsam; Bei den meisten Befehlen spielt es keine Rolle, in welcher Reihenfolge Sie die Präfixe und die Zahlen eingeben, solange der Befehl selbst der letzte ist. Hier ist es nicht: - /
yo '

@yo‘, na ja, in g5j, g5wird zuerst gesehen , die auf die nächste gerade springt , 5bevor Sie die Anwendung j. Deshalb kann es nicht tun, was es 5gjtut.
Shahbaz

3

Vim unterstützt Soft Wrapping, nur set wrapum es zu aktivieren, und es wird lange Zeilen umbrechen, die über den sichtbaren Bildschirm hinausgehen. Sie können gj& verwenden gk, um über solche umbrochenen Zeilen nach oben bzw. unten zu fahren.


2

Wenn ich mit sehr langen Linien zu tun habe, hat der größte Schmerzpunkt mit unterschiedlichen Linienlängen zu tun. Wenn Sie sich also in der Nähe der Zeilenenden nach oben oder unten bewegen, wird das Fenster ganz nach links oder rechts verschoben.

Dies kann vermieden werden, indem Sie festlegen virtualedit=all, dass Sie den Cursor lange nach den Zeilenenden in die Leerstelle bewegen können.


1

Wie andere gesagt haben, können Sie g+ etwas verwenden, um sich zu bewegen. Wenn Sie jedoch extrem lange Zeilen haben, gjist es nicht ergonomisch , mehrmals zu drücken , um nach unten zu gelangen. Ich habe das Folgende in meinem .vimrc, um das viel einfacher zu machen:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

Auf einem Mac kann ich damit j, k, $, 0 und ^ in Anzeigezeilen verwenden, indem ich die Befehlstaste gedrückt halte. Auf anderen Systemen können Sie stattdessen oder für Alt oder für Control Dversuchen .MAC

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.