2009-04-17 8 views
13

Czy ktoś wie, w jaki sposób uzyskać vim, aby zawijał długie wiersze tekstu, tak aby pozycja zawijanego tekstu opierała się na wcięciu aktualnej linii? Nie chcę ponownie formatować mojego kodu, tylko po to, by był ładnie wyświetlany.Jak sprawić, aby zawijanie tekstu pasowało do bieżącego wcięcia w vim?

Na przykład, jeśli mogę ustawić swoje ustawienia tak, że linia:

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

jest wyświetlany, gdy owinięty jak:

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

następnie, jeśli piszę blok kodu tak:

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

to zawodzi do czegoś takiego:

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

Wolałbym za to ma być wyświetlany jako:

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

Edit: po przeczytaniu odpowiedzi Ks Werve, wydaje, że jestem rzeczywiście szukają opcji breakindent, ale opcja jest nadal lista "Oczekiwanie na zaktualizowane łaty" (patrz Vim TODO). Więc chciałbym się dowiedzieć, jaki jest najłatwiejszy sposób, aby uzyskać vima z? (Nie obchodzi mnie, jakiej wersji vima muszę użyć.)

Odpowiedz

3

Szukacie breakindent

Być może chcą również odnosić się do this thread.

+1

Najnowsze aktualizacje łaty breakindentowej można znaleźć tutaj: https://retracile.net/wiki/VimBreakIndent – talljosh

-1

Myślę, że należy ustawić ustawienie textwidth = 80.

+0

To nie jest pytanie zadane przez Vima - chodziło o to, w jaki sposób Vim wyświetla kod, gdy ma być zawinięty, aby zmieścił się w oknie podglądu. – talljosh

1

Polecam ten vimscript:

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

„Ten skrypt wcięcie dla Pythona próbuje dopasować dokładniej co jest sugerowane w PEP 8 (http://www.python.org/peps/pep-0008.html) W szczególności, obsługuje linie kontynuacji implikowane przez otwarte (. nawiasy), [nawiasy klamrowe] i {nawiasy klamrowe} poprawnie i wcina multiline instrukcje if/for/while inaczej. "

+0

To z pewnością przydatny skrypt, ale nie wydaje się, aby to, o co właściwie pytałem. Chcę czegoś, co pomoże w wizualnej pozycji długich linii, a nie w pozycji automatycznego wcięcia. – talljosh

+0

Skrypt ten doda również znaki nowej linii i odpowiednio wcięć długie wiersze, więc staną się ładnie sformatowanymi liniami o długości poniżej 80 znaków. –

-1

Aby kontrolować wcięcie kodu Pythona, zobacz :h ft-python-indent. Pozwoli to na przykład Vim wcięcia dwa razy shiftwidth jeśli zrobisz przełamane podczas Tam jest niezamknięte paren:

let g:pyindent_open_paren = '&sw * 2' 

Jednak &sw * 2 jest domyślna, więc nie wiem, dlaczego to nie działa dla Ciebie. Działa to dla mnie z ręcznymi znakami nowej linii lub z nowymi liniami indukowanymi textwidth.

Powyższe ustawienie musi znajdować się w .vimrc lub musi być ustawione w jakiś sposób, zanim Vim wejdzie w tryb Python. Pamiętaj, aby :setf python lub jesteś w inny sposób w trybie Python.

7

Poprosiłem same question on SuperUser, w końcu znaleźliśmy to pytanie znaleźć łatkę, a updated the patch pracować z Vim 7.2.148 z Fedory 11.

Można użyć yumdownloader --source vim uzyskać RPM źródłowego.Następnie dodaj linię Patch3312: i %patch3012 -p1 do pliku spec i zbuduj rpm.

+0

Gdy Fedora wydaje aktualizacje vimowi, aktualizuję łatkę. Zobacz https://retracile.net/wiki/VimBreakIndent na najnowszą. – retracile

+0

Dzięki za utrzymanie poprawki. Udało mi się z powodzeniem zastosować wersję 7.3 na Ubuntu. – JaseAnderson

+0

Próbowałem pobrać łatkę, ale nie ma dla niej łącza. Gdzie mogę to znaleźć? Jest to prawdopodobnie jedna rzecz, której najbardziej pragnę teraz. – puk

Powiązane problemy