¿Cómo configurar un marcador de longitud de línea en vim / gvim?

75

Algunos editores de texto GUI tienen una línea vertical que sirve como marcador de longitud de línea (ayuda a mantener líneas de menos de 80 caracteres en los archivos de código fuente).

¿Es posible tener algo similar en vim / gvim? Sé sobre la opción de regla vim, pero no es muy útil seguirla visualmente en una pantalla grande.

Editar: cuando busco en Google "colorcolumn" para obtener más información, descubrí que esta pregunta es un duplicado de https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns

vtest
fuente
duplicar en otro sitio ... stackoverflow.com/questions/235439/…
Trevor Boyd Smith

Respuestas:

131

Solo ejecuta esto

:set colorcolumn=72

También puede anteponer el argumento con -o +para colocar el marcador en el que se encuentran muchas columnas a la izquierda o la derecha textwidth, y acepta una lista de columnas separadas por comas. Creo que la colorcolumnopción solo está en Vim 7.3. Ver

:help colorcolumn
garyjohn
fuente
8
Wow, ¡vim nunca deja de sorprenderme!
Peter Nore
44
¡Agradable! También es útil cuando columns=80, wrapse establece y colorcolumn=81,161,241,321,401,481,561,641,721,801- muestra hasta 10 líneas ajustadas con la primera columna resaltada.
Amir
20

De la charla "Más instantáneamente mejor Vim" de Damian Conway en OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

Esto da como resultado que el carácter se resalte en magenta (la captura de pantalla está activada DarkCyan) cuando la línea supera el máximo de 80 caracteres.

vim con resaltado habilitado

Para gVim: es mejor mover esas 2 líneas a la última parte de su .vimrcarchivo para asegurarse de que funcione.

Isxek
fuente
Huh Acabo de responder tu pregunta muy similar sobre este ... ¡pequeño mundo! superuser.com/questions/771558/...
lornix
Puse esta respuesta, luego recordé que no podía hacerlo en gVim, así que pregunté. ;)
Isxek
Wow, esto es realmente genial! Este es el tipo de característica que ni siquiera sabría buscar. Estoy usando el patrón '\$81v\S'que coincide solo con caracteres que no son espacios en blanco. Esto significa que lo más destacado no se mostrará cuando la línea tenga exactamente 80 caracteres de largo (que es algo que realmente me molestó). Consulte esto para obtener más información stackoverflow.com/questions/12985042/…
fvgs
1
Quiero hacer un par de correcciones a mi comentario anterior. El $debería haber sido a %. Del mismo modo, ahora uso el patrón, \%81v.ya que esto garantiza que la columna 81 se resaltará para cualquier carácter en la columna 81, que es probablemente lo que desea.
fvgs
2

Podrías probar esto:

grep '.\{81\}' file

o

set colorcolumn=80

(o el equivalente de taquigrafía)

set cc=80

o como se mencionó anteriormente:

match ErrorMsg '\%>80v.\+'
Gabriel Zalles
fuente
0

A continuación se muestra un truco torpe de Hacking Vim: un libro de cocina para sacar el máximo provecho del último editor de Vim por Kim Schultz.

Destaca con ErrorMsg(generalmente rojo brillante) cualquier línea que supere los 80 caracteres. Funciona bien para mi

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction
unperson325680
fuente
¿Qué se supone que debo hacer con este fragmento? ¿Solo pegarlo en .vimrc?
vtest
Intentar primero simplemente llamando :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)basta. Pero ya no recomendaría esto ya que @garyjohn sabía algo mejor
unperson325680