2009-04-17 10 views
13

Qualcuno sa di un modo per ottenere vim per racchiudere lunghe righe di testo in modo tale che la posizione del testo avvolto sia basata sul rientro della riga corrente? Non voglio riformattare il mio codice, solo perché venga visualizzato graziosamente.Come faccio a rendere l'intestazione del testo corrispondente al livello di indentazione corrente in vim?

Per esempio, se ho impostato le mie impostazioni in modo che la linea:

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

viene visualizzato quando avvolto come:

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

quindi se scrivo un blocco di codice come questo:

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

si adatta a qualcosa di simile:

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

preferirei per essere visualizzato come:

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

Edit: dopo aver letto la risposta di Don Werve, sembra che sto davvero cercando l'opzione breakindent, ma l'opzione è ancora in l'elenco "In attesa di patch aggiornate" (vedere Vim TODO). Quindi quello che mi piacerebbe sapere è qual è il modo più semplice per ottenere funzionare con breakindent? (Non mi interessa quale versione di vim devo usare.)

risposta

3

Siete alla ricerca di breakindent

Si consiglia di consultare anche this thread.

+1

Per gli aggiornamenti recenti della patch breakindent, vedere qui: https://retracile.net/wiki/VimBreakIndent – talljosh

-1

Penso che set textwidth = 80 dovrebbe farlo.

+0

Questo non è in realtà quello che la domanda stava ponendo - il punto era come Vim visualizza il codice quando deve essere avvolto per adattarsi alla finestra di visualizzazione. – talljosh

1

Consiglio questo vimscript:

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

"Questo script di rientro per Python cerca di far corrispondere più da vicino ciò che viene suggerito nel PEP 8 (http://www.python.org/peps/pep-0008.html) In particolare, gestisce linee di continuazione implicite da open (. parentesi), [parentesi] e {parentesi graffe} correttamente e indenta le istruzioni multilinea if/for/while in modo diverso. "

+0

Questo è sicuramente uno script utile, ma non sembra fare ciò che stavo effettivamente chiedendo. Voglio qualcosa che aiuti con la posizione visiva delle lunghe file piuttosto che con la posizione di indentazione automatica. – talljosh

+0

Questo script aggiungerà anche le nuove righe e il rientro corretto delle righe lunghe, in modo che diventino linee ben formattate con una lunghezza di 80 caratteri. –

-1

Per il controllo dell'indentazione del codice Python, vedere :h ft-python-indent. Questo per esempio renderà Vim rientro due volte la shiftwidth se si fa un ritorno a capo, mentre c'è una parentesi non chiuse:

let g:pyindent_open_paren = '&sw * 2' 

Tuttavia &sw * 2 è il default, quindi non so perché non funziona per voi. Funziona per me con newline manuali o con newline textwidth.

L'impostazione sopra deve essere in .vimrc o deve essere impostata in qualche modo prima che Vim entri in modalità Python. Assicurati di :setf python o che tu sia altrimenti in modalità Python.

7

ho chiesto al same question on SuperUser, finalmente ha trovato questa domanda, ha trovato la patch, e updated the patch di lavorare con Vim 7.2.148 da Fedora 11.

È possibile utilizzare yumdownloader --source vim per ottenere l'RPM sorgente.Quindi aggiungere una riga Patch3312: e una riga %patch3012 -p1 al file spec e creare il numero di giri.

+0

Siccome Fedora rilascia aggiornamenti a vim, sto aggiornando la patch. Vedi https://retracile.net/wiki/VimBreakIndent per l'ultimo. – retracile

+0

Grazie per aver mantenuto la patch. Sono stato in grado di applicare con successo la versione 7.3 su Ubuntu. – JaseAnderson

+0

Ho provato a scaricare la patch, ma non esiste alcun collegamento. Dove posso trovarlo? Questa è probabilmente l'unica cosa che voglio di più adesso. – puk

Problemi correlati