2009-06-12 2 views
102

Ich möchte Vim soft wrap Fähigkeit (:set wrap) verwenden, um Code mit 80 Zeichen zu umbrechen, unabhängig von meiner tatsächlichen Fensterbreite.Soft-Wrap mit 80 Zeichen in Vim in Fenster beliebiger Breite

Ich habe nicht in der Lage gewesen, einen Weg zu finden, dies noch zu tun - all die weiche Umhüllung auf die Breite des Fensters

  • textwidth und wrapmargin sind sowohl für harte Hülle gebunden scheint (sie einfügen Zeilenumbrüche in die Datei)
  • vertikale Aufteilung in mehrere Fenster und mit :vertical resize 80 (möglicherweise mit :set breakat=, um Pausen auf jedes Zeichen zu ermöglichen) auf einer von ihnen funktioniert (obwohl es ein bisschen hackish ist), aber bricht bei der Verwendung :set number als die Linie Zahlen nehmen eine variable Anzahl von Spalten auf (abhängig von der Dateilänge) und Diese sind Teil der 80.

Gibt es eine Möglichkeit, dies in vim zu tun? It doesn't look promising, according to other sources.

Im Moment ist meine Annäherung nur /^.\{80}\zs.\+ als meine Standard-Suche, so dass es zumindest hervorgehoben ist. Ich dachte darüber nach, einen :syntax-Eintrag hinzuzufügen, aber das ging kaputt, als es andere Syntaxelemente überlappte, also ließ ich diese Idee fallen.

+0

Wie haben Sie eigentlich eine Standardsuche eingerichtet? – thethinman

+2

Haben Sie eine Antwort gefunden? Ich habe das gleiche Problem. –

+1

hast du eine Antwort gefunden? War das unten ausgewählt was funktioniert? – Angela

Antwort

32

Sie könnten eine große minimale Breite für die Zeilennummern Spalte über :set numberwidth=6 setzen und dann könnten Sie :set columns=86 oder anders Größe Ihres Fensters auf die richtige Größe. Wenn Sie eine Datei mit einer Million Zeilen darin bearbeiten, haben Sie möglicherweise Probleme, aber das ist unwahrscheinlich. Sie verschwenden auch 6 Spalten Bildschirm Immobilien auf diese Weise. Es gibt also immer noch alle möglichen Probleme.

Sie können hinter der 80. Spalte mit :match wie es here und here sagt hervorheben.

Darüber hinaus kann ich keinen Weg sehen, dies zu tun. Es scheint, als wäre es ein nettes Feature.

+0

Leider behält Vim die Spalteneinstellung nicht bei, wenn die Größe des Fensters geändert wird. Dies führt zu einer unglücklichen Situation mit Fenstermanager, wo es keinen guten Weg gibt, um zu 80 Spalten zu weichen, wenn das Fenster zu breit ist. – gravitation

+0

Das funktioniert, aber es ist nicht klebrig. Ich denke, der nächste Schritt besteht darin, ein autocmd einzurichten, um die Spalten in der neuen gewünschten Größe für die gewünschten Dateitypen zu halten. – xer0x

1

Haben Sie versucht 'linebreak'?

 *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 
    'linebreak' 'lbr' boolean (default off) 
     local to window 
     {not in Vi} 
     {not available when compiled without the |+linebreak| 
     feature} 
If on Vim will wrap long lines at a character in 'breakat' rather 
than at the last character that fits on the screen. Unlike 
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, 
it only affects the way the file is displayed, not its contents. The 
value of 'showbreak' is used to put in front of wrapped lines. 
This option is not used when the 'wrap' option is off or 'list' is on. 
Note that <Tab> characters after an <EOL> are mostly not displayed 
with the right amount of white space. 
+1

Hmm ... aber "breakat" ist nur ein Muster (keine Länge), also sehe ich nicht, wie ich das verwenden könnte, um weiche Wrap bei 80 .... – rampion

+0

Hmmm, ich frage mich, ob es möglich ist, zu machen Eine Regex, die Wörtern entspricht, deren Gesamtlänge (plus Leerzeichen dazwischen) kleiner oder gleich n Zeichen ist. –

+0

@ ShaneCreighton-Young: '^. {, 80} \ b' würde für Leute, die weiche/erweitern Tabs verwenden. Beachten Sie, dass Perl Regex, nicht Vim Regex ist. –

15

Ich habe keine Lösung für den weichen Wickel habe, aber wie für eine Spalte markiert, wie von Vim 7.3 (veröffentlicht 2010-08-15) :set colorcolumn=80 wird Spalte markieren 80. Die Farbe hängt von Ihrer Syntaxdatei.

Siehe Vim 80 column layout concerns, :h colorcolumn.

+0

Zitate sind keine gültige URL, daher ist es sinnvoll. Der Ankername darf keine ungültigen URL-Zeichen enthalten. SO sollte Fehler anderer Website-Entwickler nicht beheben. –

+1

Shadow Wizard bezieht sich auf eine vorherige Überarbeitung meiner Antwort, in der ich mich frage, wie Sie einfache Anführungszeichen in URLs setzen, die Markdown verwenden. Dann [ib vorgeschlagen] (http://stackoverflow.com/revisions/6322217/2) mit% 27, die funktionierte. Danke, ib. – ftvs

+0

Kürzlich entdeckt, wie man nur Spalten über 80 ~ 'hervorhebt: lasst w: achtzig_spalten_match = matchadd ('ColorColumn', '\% 81v. \ +', 100)' – rampion

10

Try this:

set columns=80 
autocmd VimResized * if (&columns > 80) | set columns=80 | endif 
set wrap 
set linebreak 
set showbreak=+++ 

Sie entfernen die if (&columns > 80) | wenn Sie immer wollen 80 Spalten.