¿Cómo hago que el ajuste de texto coincida con el nivel de sangría actual en vim?

¿Alguien sabe de una manera de hacer que vim envuelva largas líneas de texto de manera que la posición del texto ajustado se base en la sangría de la línea actual? No quiero reformatear mi código, solo para que se muestre de forma bonita.

Por ejemplo, si configuro mi configuración para que la línea:

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

se muestra 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) 

Preferiría que se muestre como:

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

Edición: después de leer la respuesta de Don Werve, parece que estoy buscando la opción de breakindent , pero la opción aún está en la lista “En espera de parches actualizados” (consulte Vim TODO ). Entonces, ¿qué me gustaría saber es cuál es la forma más fácil de hacer que vim trabaje con breakindent ? (No me importa qué versión de vim tengo que usar).

Estas buscando breakindent

Es posible que desee hacer referencia también a este hilo .

Hice la misma pregunta en el Superusuario , finalmente encontré esta pregunta, encontré el parche y actualicé el parche para trabajar con Vim 7.2.148 de Fedora 11.

Puede usar yumdownloader --source vim para obtener el RPM de origen. Luego, agregue una línea Patch3312: y una línea %patch3012 -p1 al archivo de especificaciones, y %patch3012 -p1 las rpm.

Recomiendo este vimscript:

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

“Esta secuencia de comandos de sangría para python intenta coincidir más estrechamente con lo que se sugiere en PEP 8 ( http://www.python.org/peps/pep-0008.html ). En particular, maneja las líneas de continuación implícitas por abrir (paréntesis) , [corchetes] y {llaves} correctamente y sangra en multilínea if / for / while en forma diferente “.

Para controlar la sangría del código Python, consulte :h ft-python-indent . Esto, por ejemplo, hará que Vim tenga sangría dos veces el shiftwidth si haces una nueva línea mientras hay un parén no cerrado:

 let g:pyindent_open_paren = '&sw * 2' 

Sin embargo, &sw * 2 es el valor predeterminado, así que no estoy seguro de por qué no funciona para ti. Funciona para mí con líneas nuevas manuales o con textwidth inducidas por ancho de texto.

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

Creo que set textwidth = 80 debería hacerlo.