2010-02-02 12 views
65

Esiste un modo per far sì che Vim/gVim evidenzi il margine destro nel documento corrente? Ho appena iniziato a lavorare con Vim per un po 'e ho trovato seccato senza diritto margine dalla colonna 80.Margine destro in Vim

+0

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

+0

È possibile definire il textwidth e anche impostare nowrap, se si vuole. – pavium

+10

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

risposta

103

Vim 7.3 introdotto colorcolumn.

:set colorcolumn=80 

Potrebbe essere più facile per te ricordare il modulo breve.

:set cc=80 
+2

Dai un'occhiata alla seconda risposta qui: http://stackoverflow.com/questions/235439/vim-80-column-layout-concerns per un miglioramento della compatibilità. – mgold

+1

@ mgold non fa mai riferimento a una risposta per numero. L'ordine cambia in base ai voti. Utilizzare sempre il link di condivisione. –

+1

5 mesi più tardi ho fatto su Google per questo ancora e ancora trovato il collegamento sopra per essere fastidioso. Ecco la risposta che sta parlando di http://stackoverflow.com/a/3765575/117471 che mostra come rendere vimrc compatibile con entrambi vim> = 7.3 e <7.3 –

19

Non c'è un modo semplice per visualizzare bordo verticale della textwidth -margin (in Vim 7.2 e precedenti). Tuttavia, è possibile evidenziare tutti i caratteri oltre il limite di 80 colonne utilizzando il comando :match.

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

Quindi, la soluzione generale è utilizzare il seguente comando automatico.

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

Ho scritto una funzione di vimscript nel mio Vimrc per alternare colorcolumn quando si preme, 8 (virgola seguita da 8, in cui virgola è il leader definito per i comandi definiti dall'utente, e otto è la mia chiave mnemonica per 'mostrare un margine la colonna 80th):

" 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

Perché non un semplice liner: ': nnoremap 8 & cc? ': Let & cc = 0 ': ': let & cc = 80 ' ' –

+0

Dr Beco: Molto meglio, grazie! –

2

ho riscritto the answer di Jonathan Hartley per le vecchie versioni di Vim come 7.2 in quanto non v'è alcuna colorcolumn in Vims più anziani.

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> 
Problemi correlati