2010-02-17 19 views
172

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

+5

Für Klarheit: Sie mögen, dass die langen Linien über mehr als eine Terminallinie angezeigt werden; magst du nicht, dass vim Zeilenumbrüche in deinen Text einfügt? Wenn ja, dann ist ': set nowrap' das Gegenteil von dem, was Sie wollen :(. –

+0

@Andrew: ja Ihre Zusammenfassung ist genau was ich will –

Antwort

213

Verwenden

:set wrap 

Linien visuell zu wickeln, das heißt die Linie noch eine Textzeile, aber Vim zeigt sie auf mehreren Leitungen.

Verwenden

:set nowrap 

langen Linien als nur eine Zeile anzuzeigen (d.h. man einen horizontalen Bildlauf die gesamte Linie zu sehen).

+7

Sie haben Recht. Ich habe die Abstimmung abgelehnt, weil ich die Frage über Zeilenumbrüche im Text verstand Nicht angezeigte Zeilen im Editor – orip

+1

Danke für die Tipps, die Sie Jungs.Ich ging mit: set nowrap und: set textwidth = 0 funktioniert gut –

+3

Wenn ich tippe ich möchte immer noch "visuelle" 80 Spalte Grenze sehen und ich möchte nicht vim um Zeilenumbruch automatisch hinzuzufügen, wenn ich nach dem 80. colomn schreibe Wie geht das? –

23

Ich bin mir nicht sicher, ob ich das komplett verstehe, aber Sie suchen vielleicht nach der Konfigurationsoption 'formatoptions'. Versuchen Sie etwas wie :set formatoptions-=t. Die Option t fügt Zeilenumbrüche ein, um den Zeilenumbruch in der von textwidth festgelegten Breite vorzunehmen. Sie können diesen Befehl auch in Ihre .vimrc setzen, entfernen Sie einfach den Doppelpunkt (:).

+0

Dies scheint mir die beste Option zu sein, um dem Wunsch des OP zu entsprechen. Ich mag die Tatsache, dass Vim immer noch eine vertikale Linie bei 'tw' zeigt. – mitchus

153

Hier ist, was Sie wollen:

" this enables "visual" wrapping 
set wrap 

" this turns off physical line wrapping (ie: automatic insertion of newlines) 
set textwidth=0 wrapmargin=0 
+1

Danke, genau wonach ich gesucht habe :-) – Etienne

+1

Danke! 'set textwidth = 0 wrappmargin = 0' funktioniert, aber wenn ich es in' .vimrc' lege, hat es keinen Effekt zum Beispiel für reine Textdateien. Wie finde ich das Überschreiben heraus und beseitige es? – qubodup

+3

@qubodup Sie können testen, ob etwas Ihre .vimrc-Einstellung überschreibt, indem Sie eine Datei öffnen, in der Sie das Problem sehen und ': verbose set textwidth eingeben. Wrapmargin? '. Dies sagt ihnen ihre aktuellen Werte und auch wo sie eingestellt wurden. Es ist möglich, dass Sie ein Plugin haben, das sie außer Kraft setzt. In diesem Fall können Sie das Plugin entweder deinstallieren oder versuchen, die Plugin-Einstellung später in Ihrem Laufzeitpfad (zB: '~/.vim/after') oder mit Ihrem eigenen Autokommando zu überschreiben. Der richtige Ansatz hängt davon ab, wo und wie er zurückgesetzt wird. –

20

Verwenden :set nowrap .. wie ein Zauber funktioniert!

+8

Außer, dass es das Gegenteil von dem tut, was das OP als gewolltes Verhalten definiert ...: P – Morlock

+2

@Morlock, aber beantwortet die Frage, die ich hatte und führte mich hier google :) –

+0

gibt es dafür Tastaturkürzel? –

20

:set tw=0

VIM wird nicht auto-Insert Zeilenumbrüche, wird aber Zeilenumbrüche halten.

+2

Ich will genau das Gegenteil ... es, wenn ich tippe ich möchte immer noch "visuelle" 80 Spalte Grenze sehen, und ich möchte nicht vim automatisch Zeilenvorschub hinzufügen, wenn ich nach dem 80. colomn. Wie mache ich? –

13

Sie können set lbr nützlich finden; mit set wrap auf diesem wird aber nur die Zeile auf Whitespace und nicht in der Mitte eines Wortes umbrechen.

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 
4

Seine seltsam, dass eine solche einfache Einstellung würde diese Menge an ‚Hokuspokus‘ erfordern zu arbeiten.

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

:set wrap linebreak nolist 

(diese bestehenden Linien zu verhindern scheint bricht, nur wickeln.)

UND

(dies verhindert, dass neue/bearbeitete Zeilen brechen, während + = tut es nicht für mich, da andere Einstellungen/Plugins Platz zu finden scheinen und ihre eigenen Optionen hinzufügen, die überschreiben von mir.)

+0

'set formatoptions = l' hat mein Leben verändert **'; ^) '** –

4

Wenn, wie ich, du bist gVim auf Windows dann .vimrc Datei ausführen kann ein anderes ‚Beispiel‘ Vimscript Datei werden Sourcing, die automatisch textwidth setzt (in meinem Fall 78) für Textdateien.

My answer auf eine ähnliche Frage wie dieser - How to stop gVim wrapping text at column 80 - auf the Vi and Vim Stack Exchange site:

In meinem Fall Vitor's comment schlug ich laufen die folgenden:

:verbose set tw? 

Doing so gab mir die folgende Ausgabe:

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

In vimrc_example.vim, fand ich die entsprechenden Zeilen:

" 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 fand, dass mein .vimrc diese Datei wird Sourcing:

source $VIMRUNTIME/vimrc_example.vim 

In meinem Fall, ich will nicht textwidth für alle Dateien eingestellt werden, so habe ich gerade die entsprechende Zeile in vimrc_example.vim auskommentiert.

+1

Anstatt die Datei vimrc_example.vim zu editieren, habe ich einfach' autocmd FileType text setlocal textwidth = 0' in die vimrc Datei eingefügt und das Problem behoben wenn andere vorgeschlagene Lösungen dies nicht taten. – GrandAdmiral

3

Es ist richtig, dass Satz nowrap ermöglicht es Ihnen, ohne vi/vim Zugabe von Zeilenumbrüchen in einer langen Reihe einzufügen, aber dann wird die Zeile nicht visuell für eine einfache Lesung gewickelt. Es ist stattdessen nur eine lange Zeile, die Sie scrollen müssen.

die Linie visuell wickeln haben, aber nicht die Neue-Zeile-Zeichen in sie eingeführt haben, haben Satz Wickel und set textwidth = 0 (die wahrscheinlich nicht so eingestellt benötigt Standard). Bei einigen Systemen ist die Einstellung textwidth = 0 standardmäßig eingestellt. Wenn dies nicht der Fall ist, fügen Sie set textwidth = 0 zu Ihrer .exrc-Datei hinzu, so dass es zum Standard für alle vi/vim-Sitzungen Ihres Benutzers wird.

5

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

+0

Danke! Das war das einzige, was für mich funktionierte. – user

Verwandte Themen