2009-06-12 13 views
102

Quiero usar la capacidad de soft wrap de Vim (:set wrap) para ajustar el código a 80 caracteres, independientemente del ancho de mi ventana real.Envoltura suave a 80 caracteres en Vim en ventana de ancho arbitrario

no he sido capaz de encontrar una manera de hacer esto con todo - todo el envoltorio blando parece ligada a la anchura de la ventana

  • textwidth y wrapmargin son tanto para envolver duro (que inserte caracteres de nueva línea en el archivo)
  • división vertical en varias ventanas y usando :vertical resize 80 (posiblemente con :set breakat= para permitir interrupciones en cualquier carácter) en una de ellas tipo de obras (aunque es un poco hackish), pero se rompe cuando usa :set number como la línea los números ocupan un número variable de columnas (según la longitud del archivo) y estos son parte de los 80.

¿Hay alguna manera de hacer esto en vim? It doesn't look promising, according to other sources.

Ahora mi aproximación es solo tener /^.\{80}\zs.\+ como mi búsqueda predeterminada por lo que al menos está resaltada. Pensé en agregarle un elemento :syntax, pero se rompió cuando superponía otros elementos de sintaxis, por lo que descarté esa idea.

+0

En realidad, ¿cómo configuró una búsqueda predeterminada? – thethinman

+2

¿Has encontrado alguna respuesta? Tengo el mismo problema. –

+1

¿Encontraste una respuesta? fue el siguiente seleccionado lo que funcionó? – Angela

Respuesta

32

Puede establecer un ancho mínimo grande para la columna de números de línea a través de :set numberwidth=6 y luego puede :set columns=86 o cambiar el tamaño de su ventana al tamaño adecuado. Si edita un archivo con un millón de líneas, puede tener problemas, pero eso es poco probable. También desperdicia 6 columnas de propiedades inmobiliarias de pantalla. Entonces todavía hay todo tipo de problemas.

Puede resaltar más allá de la columna 80 usando :match como dice here y here.

Más allá de eso no veo ninguna manera de hacer esto. Parece que sería una buena característica.

+0

Desafortunadamente vim no mantiene la configuración de las columnas si se cambia el tamaño de la ventana. Esto lleva a una situación desafortunada con los administradores de ventanas de mosaico, donde no hay una buena manera de ajustar a 80 columnas si la ventana es demasiado ancha. – gravitation

+0

Esto funciona, pero no es pegajoso. Supongo que el siguiente paso es configurar un autocmd para mantener las columnas en el nuevo tamaño deseado para los tipos de archivos que desee. – xer0x

1

¿Has probado 'linebreak'?

 *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 
    'linebreak' 'lbr' boolean (default off) 
     local to window 
     {not in Vi} 
     {not available when compiled without the |+linebreak| 
     feature} 
If on Vim will wrap long lines at a character in 'breakat' rather 
than at the last character that fits on the screen. Unlike 
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, 
it only affects the way the file is displayed, not its contents. The 
value of 'showbreak' is used to put in front of wrapped lines. 
This option is not used when the 'wrap' option is off or 'list' is on. 
Note that <Tab> characters after an <EOL> are mostly not displayed 
with the right amount of white space. 
+1

Hmm ... pero 'breakat' es solo un patrón (no una longitud), así que no veo cómo podría usar esto para forzar la envoltura suave a 80 ... – rampion

+0

Hmmm, me pregunto si es posible hacer una expresión regular que coincidirá con las palabras cuya longitud total (más el espacio en blanco en el medio) es menor o igual que n caracteres. –

+0

@ ShaneCreighton-Young: '^. {, 80} \ b' serviría para las personas que usan pestañas suaves/expandibles. Tenga en cuenta que es perl regex, no vim regex. –

15

no tengo una solución a la envoltura suave, pero como para marcar una columna, a partir de Vim 7.3 (Lanzado 2010-08-15) :set colorcolumn=80 pondrá de relieve la columna 80. El color dependerá de su archivo de sintaxis

Ver Vim 80 column layout concerns, :h colorcolumn.

+0

Las cotizaciones no son URL válidas, por lo que tiene sentido. El nombre del anclaje no debe contener caracteres URL no válidos, por lo que no debería corregir los errores de otros desarrolladores del sitio. –

+1

Shadow Wizard se refiere a una revisión anterior de mi respuesta en la que me pregunto cómo colocar comillas simples en las URL usando Markdown. Luego [ib sugirió] (http://stackoverflow.com/revisions/6322217/2) usando% 27, que funcionó. Gracias, ib. – ftvs

+0

Recientemente se descubrió cómo resaltar solo columnas pasadas de 80 ~ ': let w: eighty_column_match = matchadd ('ColorColumn', '\% 81v. \ +', 100)' – rampion

10

Prueba esto:

set columns=80 
autocmd VimResized * if (&columns > 80) | set columns=80 | endif 
set wrap 
set linebreak 
set showbreak=+++ 

Se puede quitar el if (&columns > 80) | si siempre quieren 80 columnas.

Cuestiones relacionadas