2009-04-17 10 views
13

Kennt jemand eine Möglichkeit, wie vim lange Textzeilen umbrechen kann, so dass die Position des umbrochenen Textes auf der Einrückung der aktuellen Zeile basiert? Ich möchte meinen Code nicht umformatieren, nur damit er hübsch dargestellt wird.Wie führe ich das Umbrechen von Text zum aktuellen Einzug in vim?

Zum Beispiel, wenn ich meine Einstellungen so eingestellt, dass die Zeile:

print 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message) 

angezeigt wird, wenn gewickelt, wie:

print 'ProcessorError(%r, %r, %r)' % (self.file, self.index, 
    self.message) 

dann, wenn ich einen Block von Code wie folgt schreiben:

def __repr__(self): 
     return 'ProcessorError(%r, %r, %r)' % (self.file, self.index, self.message) 

es wraps zu etwas wie diesem:

def __repr__(self): 
     return 'ProcessorError(%r, %r, %r)' % (self.file, self.index, 
    self.message) 

ich es vorziehen würde angezeigt werden, wie:

def __repr__(self): 
     return 'ProcessorError(%r, %r, %r)' % (self.file, self.index, 
      self.message) 

Edit: nach Don Werve Antwort zu lesen, scheint es, dass ich in der Tat für die breakindent Option suchen, aber die Möglichkeit ist immer noch auf die Liste "Warten auf aktualisierte Patches" (siehe Vim TODO). Also, was ich gerne wissen würde, ist das einfachste Weg Vim arbeiten mit breakindent? (Es ist mir egal, welche Version von vim ich verwenden muss.)

Antwort

3

Sie suchen breakindent

Sie wollen auch können this thread verweisen.

+1

Aktuelle Updates zum Breakdent-Patch finden Sie hier: https://retracile.net/wiki/VimBreakIndent – talljosh

-1

Ich denke set textwidth = 80 sollte es tun.

+0

Das ist eigentlich nicht die Frage, die gestellt wurde - der Punkt war, wie Vim den Code anzeigt, wenn er umgebrochen werden muss, um in das Sichtfenster zu passen. – talljosh

1

Ich empfehle dieses vimscript:

http://www.vim.org/scripts/script.php?script_id=974

„Diese Vertiefung Skript für Python versucht, näher zu entsprechen, was in PEP 8 vorgeschlagen wird (http://www.python.org/peps/pep-0008.html) Insbesondere ist es Fortsetzung Linien angedeutet durch offene Griffe (. Klammern), [eckige Klammern] und {geschweifte Klammern} korrekt und es werden mehrzeilige if/for/while-Anweisungen anders eingezeichnet. "

+0

Das ist sicherlich ein nützliches Skript, aber es scheint nicht zu tun, was ich eigentlich gefragt habe. Ich möchte etwas mit der visuellen Position von langen Linien und nicht mit der Position der automatischen Einrückung helfen. – talljosh

+0

Dieses Skript fügt auch Zeilenumbrüche und lange Zeilen korrekt ein, so dass sie zu formatierten Zeilen mit weniger als 80 Zeichen werden. –

-1

Informationen zum Steuern des Einzugs von Python-Code finden Sie unter :h ft-python-indent. Dies wird zum Beispiel machen Vim Einzug zweimal die shiftwidth, wenn Sie eine neue Zeile zu tun, während es eine nicht geschlossene paren ist:

let g:pyindent_open_paren = '&sw * 2' 

jedoch &sw * 2 der Standard ist, so dass nicht sicher, warum es nicht für Sie arbeiten. Es funktioniert bei mir mit manuellen Zeilenumbrüchen oder mit textwidth -induzierten Zeilenumbrüchen.

Die obige Einstellung muss in .vimrc sein oder muss irgendwie festgelegt werden, bevor Vim in den Python-Modus wechselt. Achten Sie darauf, :setf python oder dass Sie sonst im Python-Modus sind.

7

Ich fragte den same question on SuperUser, schließlich diese Frage gefunden, fand den Patch, und updated the patch mit Vim 7.2.148 von Fedora zu arbeiten 11.

Sie yumdownloader --source vim die Source-RPM bekommen verwenden können.Fügen Sie dann eine Patch3312: Zeile und eine %patch3012 -p1 Zeile zur Spezifikationsdatei hinzu und erstellen Sie die RPM.

+0

Da Fedora Updates für vim veröffentlicht, aktualisiere ich den Patch. Aktuelle Informationen finden Sie unter https://retracile.net/wiki/VimBreakIndent. – retracile

+0

Danke für die Pflege des Patches. Ich konnte die Version 7.3 unter Ubuntu erfolgreich anwenden. – JaseAnderson

+0

Ich habe versucht, den Patch herunterzuladen, aber es gibt keinen Link dafür. Wo kann ich es finden? Das ist wahrscheinlich die eine Sache, die ich gerade jetzt möchte. – puk

Verwandte Themen