envoltura de línea vim con sangría


20

Vim / gvim envolverá líneas largas como esta:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

¿Hay alguna manera de hacer que Vim ajuste esas líneas de esta manera?

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

Quiero que la línea ajustada comience un poco más allá de la sangría de donde comenzó esa línea. (Solo para ser claros, estoy hablando de ajuste, no de ancho de texto).

Quiero que se considere la sangría de la línea en el ajuste de esa línea para que la estructura del código no esté oculta por las líneas ajustadas.

Respuestas:


17

ACTUALIZACIÓN: Esta funcionalidad aterrizó en vim 7.4.338, aunque querrás 7.4.354 o posterior .


Entonces aparentemente esto requiere un parche para Vim . Hay un parche de Vaclav Smilauer de 2007. Actualicé el parche para que funcione con Vim 7.2.148 de Fedora 11. Pero parece hacer el trabajo.


1
A medida que Fedora lanza actualizaciones a Vim, estoy actualizando el parche. Ver retracile.net/wiki/VimBreakIndent para lo último.
retroceder

Bonus señala a alguien que puede explicar cómo hacer que esto funcione con MacVim.
donut

¿Dónde está el parche? Ese sitio no enlaza con ninguno que pueda ver
puk

@puk: Lo sentimos, una importante actualización de software había cambiado algunas ubicaciones de enlaces. Ya los arreglé.
retroceder

1
A partir de hoy (25 de junio de 2014), el parche decisivo es oficialmente parte de Vim 7.4 - se agrega en el parche 338 y 345.
Heptita

14

En tu .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

O simplemente escriba :set showbreak=----->cualquier sesión.

Como referencia, mi rastro de investigación (Vim 6.2): :help 'wrap'-> :help 'linebreak'-> ( :help 'showbreak'-> :help 'cpoptions', :help 'breakat')


Muy guay, pero no es realmente lo que quise decir. Lo tomaste un poco más literalmente de lo que pretendía, así que es mi culpa. Veré si puedo aclarar.
retroceder

1

La solución a su pregunta se puede lograr estableciendo dos parámetros en su vimrc:

Para romper las líneas con la misma sangría: set breakindent

Y un espacio para sangrar líneas suaves: let &showbreak=' '

Funcionará de esta manera:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

No es la respuesta perfecta que estás buscando, pero esto es lo que hago para evitar la falta de sangría adecuada de vim.

Primero, descargue la guía de sangría de Nathanael Kane (opcional), ya que indica mejor el nivel de sangría en el que se encuentra, incluso hasta el punto en que puede configurar el ancho de tabulación en solo 2 espacios.

En segundo lugar, asigne una combinación de teclas para alternar el ajuste de palabras. Tengo el mío configurado en 'r' para 'envolver' ('w' es para guardar) así

:noremap <leader>r :set nowrap! <CR>

Luego, siempre tengo un resumen de palabras, ya que es más estéticamente agradable, y lo activo rápidamente si necesito editar la línea.


0

La "solución" asquerosa que uso actualmente es tener una sangría fija pero grande en el prefijo. Se ve bien, siempre que esta sangría fija sea mayor que la sangría de la línea ajustada, que es el caso la mayor parte del tiempo.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.