¿Cómo mostrar una línea vertical para envolver la línea en Vim?

116

Estoy interesado en encontrar una manera de mostrar una línea vertical en la columna 80 en Vim (no GVim).

He usado set wrap, pero solo quiero mostrar una línea vertical para poder envolver la línea larga yo mismo.

Jennifer
fuente
Posible duplicado de las preocupaciones sobre el diseño de la columna
Trevor Boyd Smith

Respuestas:

15

Editar: Para Vim> = 7.3, consulte la respuesta a continuación .

Desafortunadamente, vim no tiene ningún mecanismo para mostrar una línea vertical después de una columna como desea (a diferencia de, por ejemplo, TextMate). Sin embargo, existen indicadores visuales alternativos que puede utilizar para mostrar que una línea es demasiado larga.

Esto es lo que uso (puedes poner esto en tu .vimrc):

nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr>
hi OverLength ctermbg=none cterm=none
match OverLength /\%>80v/
fun! s:LongLineHLToggle()
 if !exists('w:longlinehl')
  let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0)
  echo "Long lines highlighted"
 else
  call matchdelete(w:longlinehl)
  unl w:longlinehl
  echo "Long lines unhighlighted"
 endif
endfunction

Entonces puede usar <Leader>Hpara alternar columnas más de 80 resaltadas.

Sam
fuente
Representación del script vim de la clave principal. Consulte Mostrar configuración de la tecla <leader> actual
Rod
@Will, Learn Vimscript the Hard Way es un buen recurso para aprender sobre la madriguera del conejo vim.
jazzabeanie
310

Nuevo en Vim 7.3:

'colorcolumn' es una lista separada por comas de columnas de pantalla que están resaltadas con ColorColumn. Útil para alinear texto. Hará que el redibujado de la pantalla sea más lento. La columna de la pantalla puede ser un número absoluto, o un número precedido de '+' o '-', que se suma o se resta de 'textwidth'.

Ejemplo de los documentos:

:set colorcolumn=+1        " highlight column after 'textwidth'
:set colorcolumn=+1,+2,+3  " highlight three columns after 'textwidth'
:highlight ColorColumn ctermbg=lightgrey guibg=lightgrey

También puede usar números absolutos:

:set colorcolumn=80
TíoZeiv
fuente
4
Creo que es bueno tener en cuenta que el color lo determina automáticamente el color de resaltado a menos que lo configure manualmente como en el ejemplo.
Alex Hart
Tenga en cuenta que la highlightconfiguración debe establecerse después de cualquier colorschemecomando, ya que anularía el color de resaltado.
C4urself
7
Fui con un rojo brillante que quema tu cerebro ... porque ya sabes ... longitud de línea
Ron Dahlgren
¿Conoce alguna forma de tener dos colores diferentes para la columna de colores? Me gustaría tener dos: uno simple con 80 caracteres para el código y uno muy tenue con 72 caracteres para el flujo de texto / comentarios.
Alice
Sería bueno mencionar que textwidthtambién hace que vim se ajuste cuando está escribiendo.
pollitos
6

Yo uso match ErrorMsg '\%>80v.\+'que resaltará cualquier cosa con más de 80 caracteres con rojo.

Puse ese comando en mi python.vim y ruby.vim en ~ / .vim / after / ftplugin /.

Pierre-Antoine LaFayette
fuente