So stoppen Sie das Brechen von Zeilen in vim

257

Mir gefällt, dass die langen Zeilen über mehr als eine Endleitung angezeigt werden. Ich mag es nicht, dass vim Zeilenumbrüche in meinen eigentlichen Text einfügt. Welchen Teil von .vimrc sollte ich ändern?

Haiyuan Zhang
quelle
7
Zur Verdeutlichung: Sie möchten, dass die langen Zeilen über mehr als eine Endleitung angezeigt werden. Sie mögen es nicht, dass vim Zeilenumbrüche in Ihren eigentlichen Text einfügt? Wenn ja, dann :set nowrapist das Gegenteil von dem, was Sie wollen :(.
Andrew Aylett
@ Andrew: Ja, Ihre Zusammenfassung ist genau das, was ich will
Haiyuan Zhang

Antworten:

304

Verwenden

:set wrap

Um Zeilen visuell zu umbrechen, dh die Zeile ist immer noch eine Textzeile, aber Vim zeigt sie in mehreren Zeilen an.

Verwenden

:set nowrap

Um lange Zeilen als nur eine Zeile anzuzeigen (dh Sie müssen horizontal scrollen, um die gesamte Zeile zu sehen).

Brian Rasmussen
quelle
3
Danke für die Tipps, Leute. Ich ging mit: set nowrap und: set textwidth = 0 funktioniert super
Robert Beltran
5
Wenn ich tippe, möchte ich immer noch das "visuelle" Limit von 80 Spalten sehen und ich möchte nicht, dass vim automatisch Zeilenvorschub hinzufügt, wenn ich nach der 80. Spalte tippe. Wie mache ich?
Olivier Pons
7
Dies ist genau die Antwort, nach der ich gesucht habe, aber es ist nicht die Antwort auf die Frage von OP. Es ist etwas irreführend, dies als Top-Antwort zu haben. Ich weiß nicht, wie ich diese Situation beheben soll. Ich würde nur Ihre Antwort bearbeiten, um auch die ursprüngliche Frage zu beantworten. Aber es gibt bereits eine richtige Antwort, die fast genauso hoch gewählt wird. Also habe ich nur dafür gestimmt, die beiden Antworten zu wechseln.
Daniel Darabos
3
Dies ist genau die Antwort, nach der ich nicht gesucht habe, und es ist nicht die Antwort auf die Frage des OP.
Peeol
Dies ist keine Antwort auf die Frage.
194

Mir gefällt, dass die langen Zeilen über mehr als eine Endleitung angezeigt werden

Diese Art des visuellen / virtuellen Zeilenumbruchs wird mit der wrapFensteroption aktiviert :

set wrap

Ich mag es nicht, dass vim Zeilenumbrüche in meinen eigentlichen Text einfügt.

Deaktivieren Sie zum Deaktivieren des physischen Zeilenumbruchs die Optionen textwidthund und wrapmarginPuffer:

set textwidth=0 wrapmargin=0
Laurence Gonsalves
quelle
1
Vielen Dank! set textwidth=0 wrapmargin=0funktioniert, aber wenn ich es einfüge .vimrc, hat es keine Auswirkung, zum Beispiel für reine Textdateien. Wie finde ich das Überschreiben heraus und eliminiere es?
Qubodup
7
@qubodup Sie können testen, ob etwas Ihre .vimrc-Einstellung überschreibt, indem Sie eine Datei öffnen, in der Sie das Problem sehen und eingeben :verbose set textwidth? wrapmargin?. Dies zeigt Ihnen ihre aktuellen Werte und auch, wo sie eingestellt wurden. Möglicherweise haben Sie ein Plugin, das diese überschreibt. In diesem Fall können Sie dieses Plugin entweder deinstallieren oder versuchen, die Plugin-Einstellung später in Ihrem Laufzeitpfad (z. B. :) ~/.vim/afteroder mit Ihrem eigenen automatischen Befehl zu überschreiben . Der richtige Ansatz hängt davon ab, wo / wie er zurückgesetzt wird.
Laurence Gonsalves
set wrapund set linebreakwas hat es für mich getan.
Ilia Choly
36

Ich bin mir nicht sicher, ob ich das vollständig verstehe, aber Sie suchen möglicherweise nach der Konfigurationseinstellung "Formatoptionen". Versuchen Sie etwas wie :set formatoptions-=t. Mit dieser tOption werden Zeilenumbrüche eingefügt, damit der Text in der durch festgelegten Breite umbrochen wird textwidth. Sie können diesen Befehl auch in Ihren Befehl einfügen .vimrc. Entfernen Sie einfach den Doppelpunkt ( :).

Erik Hesselink
quelle
3
Dies scheint mir die beste Option zu sein, um den Wunsch des OP zu erfüllen. Ich mag die Tatsache, dass vim immer noch eine vertikale Linie bei zeigt tw.
Mitchus
3
Dies ist die einzige Antwort, die sich tatsächlich mit der Frage von OP befasst. Die meisten anderen machen das Gegenteil. OP möchte weiterhin, dass lange Zeilen umbrochen angezeigt werden, aber für vim werden Zeilenumbrüche nicht automatisch eingefügt.
Sebastian
33

Verwenden Sie :set nowrap.. funktioniert wie ein Zauber!

Vatsala
quelle
10
Nur dass es das Gegenteil von dem tut, was das OP als gewünschtes Verhalten definiert ...: P
Morlock
5
@ Morlock, aber beantwortet die Frage, die ich hatte und Google führte mich hierher :)
Ben Usman
Gibt es dafür eine Tastenkombination?
Pini Cheyni
@PiniCheyni, fügen Sie Ihrer .vimrc-Datei Folgendes hinzu: nnoremap <Cw>: set invwrap <CR> Dann können Sie mit Strg + W den Textumbruch umschalten.
reas0n
30

:set tw=0

VIM fügt Zeilenumbrüche nicht automatisch ein, sondern umschließt den Zeilenumbruch.

orip
quelle
3
Ich möchte genau das Gegenteil ... wenn ich tippe, möchte ich immer noch das "visuelle" Limit von 80 Spalten sehen und ich möchte nicht, dass vim automatisch Zeilenvorschub hinzufügt, wenn ich nach der 80. Spalte tippe. Wie mache ich?
Olivier Pons
16

Sie können set lbrnützlich finden ; mit set wrapon wird umbrochen, aber nur die Linie auf Leerzeichen und nicht in der Mitte eines Wortes geschnitten.

z.B

without lbr the li
ne can be split on
a word

und

with lbr on the
line will be
split on 
whitespace only
Davetapley
quelle
Es wird dringend empfohlen, Abkürzungsoptionen zu vermeiden, da Sie in Zukunft eine Suche im Hilfesystem durchführen müssen, um zu verstehen, was Sie festgelegt haben. Verwenden Sie also set nolinebreakstattdessenset lbr
SergioAraujo
12

set formatoptions-=t Behält die visuelle Textbreite bei, fügt jedoch im Einfügemodus keine neue Zeile hinzu.

Jimmy Tran
quelle
4

Es ist seltsam, dass eine so einfache Einstellung diese Menge an 'Hokuspokus' erfordert, um zu funktionieren.

Um Ihre Frage jetzt zu beantworten, schien es für mich mit der Kombination der folgenden zu funktionieren:

:set wrap linebreak nolist

(Dies scheint zu verhindern, dass vorhandene Linien brechen. Wickeln Sie sie einfach ein.)

UND

set formatoptions=l

(Dies verhindert, dass neue / bearbeitete Zeilen unterbrochen werden, während + = dies für mich nicht tut, da andere Einstellungen / Plugins anscheinend Platz finden und ihre eigenen Optionen hinzufügen, die meine überschreiben.)

Petroslamb
quelle
4

Wenn Sie wie ich gVim unter Windows ausführen , bezieht Ihre .vimrc- Datei möglicherweise eine andere 'Beispiel'-Vimscript-Datei, die automatisch festgelegt wird textwidth(in meinem Fall auf78 ) Textdateien .

Meine Antwort auf eine ähnliche Frage wie diese - So stoppen Sie das Umschließen von gVim-Text in Spalte 80 - auf der Website von Vi und Vim Stack Exchange :

In meinem Fall schlug Vitors Kommentar vor, Folgendes auszuführen:

:verbose set tw?

Dadurch erhielt ich die folgende Ausgabe:

textwidth=78
      Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim

In vimrc_example.vim habe ich die relevanten Zeilen gefunden:

" Only do this part when compiled with support for autocommands.
if has("autocmd")

  ...

  " For all text files set 'textwidth' to 78 characters.
  autocmd FileType text setlocal textwidth=78

  ...

Und ich habe festgestellt, dass meine .vimrc diese Datei bezieht :

source $VIMRUNTIME/vimrc_example.vim

In meinem Fall will ich nicht textwidth für Dateien festgelegt werden, daher habe ich nur die entsprechende Zeile in vimrc_example.vim auskommentiert .

Kenny Evitt
quelle
1
Anstatt die Datei vimrc_example.vim zu bearbeiten, habe ich sie nur autocmd FileType text setlocal textwidth=0zur Datei vimrc hinzugefügt. Dadurch wurde das Problem behoben, wenn andere Lösungsvorschläge dies nicht taten.
GrandAdmiral
3

Es ist richtig, dass jetztrap gesetzt eine lange Zeile einfügen können, ohne dass vi / vim neue Zeilen hinzufügt, aber dann wird die Zeile zum einfachen Lesen nicht visuell umbrochen. Es ist stattdessen nur eine lange Zeile, durch die Sie scrollen müssen.

Um die Zeile visuell umbrechen zu lassen, aber keine Zeilenumbruchzeichen einzufügen, setzen Sie umbrechen (was wahrscheinlich die Standardeinstellung ist und daher nicht festgelegt werden muss) und setzen Sie textwidth = 0 .

Auf einigen Systemen ist die Einstellung von Textbreite = 0 Standard. Wenn dies nicht der Fall ist, fügen Sie Ihrer EXRC-Datei set textwidth = 0 hinzu, damit sie für alle vi / vim-Sitzungen zum Standard Ihres Benutzers wird.

Cruciverbalist
quelle