Візуалізуйте правильне поле у ​​Vim


77

Чи є спосіб зробити так, щоб Vim / gVim виділяв право поле поточного буфера? Я щойно почав працювати з Vim, і мене дратує, якщо не відображається правильне поле (у стовпці 80).



Ви можете визначити ширину тексту і навіть встановити зараз, якщо хочете.
pavium

11
Нове в Vim 7.3: :set cc=81або щодо TextWidth: :set cc=+1.
Нефрубир,

Відповіді:


121

Vim 7.3 представив кольорову колонку.

:set colorcolumn=80

Можливо, вам буде легше запам’ятати коротку форму.

:set cc=80

2
Погляньте на другу відповідь тут: stackoverflow.com/questions/235439/… для покращення сумісності.
mgold

1
@mgold ніколи не посилається на відповідь за номером. Порядок змінюється на основі голосів. Завжди використовуйте посилання для спільного доступу.
Бруно Броноскі

1
Через 5 місяців я знову погуглив і знову виявив, що посилання вище дратує. Ось відповідь, про яку він говорить, про stackoverflow.com/a/3765575/117471, яка показує, як зробити ваш vimrc сумісним як з vim> = 7,3, так і <7,3
Бруно Броноскі

19

Немає простого способу візуалізації вертикального ребра для textwidth-поля у Vim 7.2 або раніше; починаючи з версії 7.3, є спеціальна colorcolumnопція. Однак за допомогою :matchкоманди можна виділити всі символи, що перевищують обмеження в 80 стовпців :

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

Все, що нам потрібно, щоб зробити це загальним рішенням, - це побудувати шаблон збігу на льоту, щоб замінити правильне значення textwidth опції:

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

7

Я написав функцію vimscript у своєму .vimrc для перемикання колонки при натисканні, 8 (кома, за якою слідує 8, де кома - це визначений лідер для визначених користувачем команд, а вісім - мій мнемонічний ключ для 'show margin at 80-а колонка):

" 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
Чому б не простий :nnoremap <expr> <leader>8 &cc?':let &cc=0<CR>':':let &cc=80<CR>'
однокласний

2

Я ніколи переписаний відповідь на Джонатан Хартлі для старих версій Vim як 7.2 так як немає colorcolumnв старих ВІМСе.

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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.