2010-02-02 26 views
65

¿Hay alguna manera de hacer que Vim/gVim destaque el margen derecho en el documento actual? He comenzado a trabajar con Vim por un tiempo y me pareció molesto sin el derecho de margen en la columna 80.Margen derecho en Vim

+0

http://stackoverflow.com/questions/235439/vim-80-column-layout-concerns –

+0

Se puede definir el textwidth e incluso establecer nowrap si quieres. – pavium

+10

Nuevo en Vim 7.3: ': set cc = 81', o relativo a textwidth:': set cc = + 1'. – Nefrubyr

Respuesta

103

Vim 7.3 presentó colorcolumn.

:set colorcolumn=80 

Puede que le resulte más fácil recordar el breve formulario.

:set cc=80 
+2

Eche un vistazo a la segunda respuesta aquí: http://stackoverflow.com/questions/235439/vim-80-column-layout-concerns para una mejora de compatibilidad. – mgold

+1

@mgold nunca referencia una respuesta por número. El orden cambia según los votos. Siempre usa el enlace para compartir. –

+1

5 meses después, busqué en Google esto una y otra vez, encontré que el enlace anterior era molesto. Aquí está la respuesta de la que está hablando http://stackoverflow.com/a/3765575/117471 que muestra cómo hacer que tu vimrc sea compatible con vim> = 7.3 y <7.3 –

19

No hay una forma sencilla de visualizar borde vertical de la textwidth -margin (en Vim 7.2 y anteriores) Sin embargo, se pueden resaltar todos los caracteres más allá de el límite de 80 columnas con el comando :match.

:match ErrorMsg /\%>80v.\+/ 

Por lo tanto, la solución general es utilizar el siguiente auto-comando.

:autocmd BufWinEnter * call matchadd('ErrorMsg', '\%>'.&l:textwidth.'v.\+', -1) 
7

He escrito una función Vimscript en mi .vimrc para alternar colorcolumn cuando pulso, 8 (coma seguido por 8, en donde la coma es el líder definido para los comandos definidos por el usuario, y ocho es mi clave mnemotécnica para 'mostrar un margen, en la columna 80a):

" toggle colored right border after 80 chars 
set colorcolumn=81 
let s:color_column_old = 0 

function! s:ToggleColorColumn() 
    if s:color_column_old == 0 
     let s:color_column_old = &colorcolumn 
     windo let &colorcolumn = 0 
    else 
     windo let &colorcolumn=s:color_column_old 
     let s:color_column_old = 0 
    endif 
endfunction 

nnoremap <Leader>8 :call <SID>ToggleColorColumn()<cr> 
+1

¿Por qué no un sencillo delineador: ': nnoremap 8 & cc? ': Let & cc = 0 ': ': let & cc = 80 ' ' –

+0

Dr. Beco: Mucho mejor, gracias! –

2

he reescrito the answer de Jonathan Hartley para las versiones más antiguas como Vim 7.2 ya que no hay colorcolumn en VIMS mayores.

highlight OverLength ctermbg=red ctermfg=white guibg=#592929 

let s:OverLengthToggleVariable=0 

function! ToggleOverLength() 
     if s:OverLengthToggleVariable == 0 
       match OverLength /\%81v.\+/ 
       let s:OverLengthToggleVariable=1 
     else 
       match OverLength // 
       let s:OverLengthToggleVariable=0 
     endif 
endfunction 

" I like <leader>h since highlight starts with h.                  
nnoremap <leader>h :call ToggleOverLength()<cr> 
Cuestiones relacionadas