2009-04-17 12 views
13

¿Alguien sabe de una manera de obtener vim para envolver largas líneas de texto de modo que la posición del texto ajustado se base en la sangría de la línea actual? No quiero volver a formatear mi código, solo para que se muestre bellamente.¿Cómo puedo hacer que el ajuste de texto coincida con el nivel de sangría actual en vim?

Por ejemplo, si fijo mi configuración de modo que la línea:

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

se visualiza cuando se envuelve como:

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

entonces si escribo un bloque de código como este:

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

se envuelve a algo como esto:

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

yo preferiría para que se muestre como:

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

Editar: después de leer la respuesta de Don Werve, parece que de hecho estoy buscando la opción breakindent, pero la opción está todavía en la lista "En espera de revisiones actualizadas" (consulte Vim TODO). Entonces, ¿qué me gustaría saber es cuál es la forma más fácil de obtener para obtener vim trabajando con breakindent? (No me importa qué versión de vim tengo que usar.)

Respuesta

3

Usted está buscando breakindent

Es posible que desee hacer referencia también a this thread.

+1

Para obtener actualizaciones recientes del parche breakindent, consulte aquí: https://retracile.net/wiki/VimBreakIndent – talljosh

-1

Creo que establecer textwidth = 80 debería hacerlo.

+0

Esto no es realmente lo que la pregunta estaba haciendo - el punto era cómo Vim muestra el código cuando tiene que ser envuelto para caber en la ventana de visualización. – talljosh

1

Recomiendo este Vimscript:

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

"Este script sangría para pitón intenta aproximarse más a lo que se sugiere en el PEP 8 (http://www.python.org/peps/pep-0008.html) En particular, se encarga de las líneas de continuación que implica abierto (. paréntesis), [corchetes] y {corchetes} correctamente y sangra varias declaraciones if/for/while de manera diferente. "

+0

Sin duda es un script útil, pero no parece hacer lo que en realidad estaba pidiendo. Quiero algo que me ayude con la posición visual de las líneas largas en lugar de con la posición de sangría automática. – talljosh

+0

Esa secuencia de comandos también agregará nuevas líneas e insertará correctamente líneas largas, por lo que se convertirán en líneas con un formato agradable de menos de 80 caracteres. –

-1

Para controlar la sangría del código de Python, consulte :h ft-python-indent. Esto, por ejemplo, hará que Vim guión dos veces el shiftwidth si lo hace un salto de línea, mientras que hay una paren sin cerrar:

let g:pyindent_open_paren = '&sw * 2' 

Sin embargo &sw * 2 es el valor por defecto, así que no sé por qué no está trabajando para usted. Funciona para mí con nuevas líneas manuales o con textwidth-newline inducidas.

La configuración anterior debe estar en .vimrc o debe establecerse de alguna manera antes de que Vim entre en el modo Python. Asegúrese de :setf python o de que, de lo contrario, se encuentra en modo Python.

7

me preguntó al same question on SuperUser, finalmente encontraron esta cuestión, se encontró el parche, y updated the patch trabajar con Vim 7.2.148 desde Fedora 11.

Puede utilizar yumdownloader --source vim para obtener el RPM fuente.A continuación, agregue una línea Patch3312: y una línea %patch3012 -p1 en el archivo de especificaciones, y cree las rpm.

+0

Cuando Fedora lanza actualizaciones a vim, estoy actualizando el parche. Consulte https://retracile.net/wiki/VimBreakIndent para obtener la última información. – retracile

+0

Gracias por mantener el parche. Pude aplicar con éxito la versión 7.3 en Ubuntu. – JaseAnderson

+0

He intentado descargar el parche, pero no hay ningún enlace para él. ¿Dónde puedo encontrarlo? Esta es probablemente la única cosa que quiero más ahora mismo. – puk

Cuestiones relacionadas