Visualisieren Sie den rechten Rand in Vim

77

Gibt es eine Möglichkeit, Vim / gVim dazu zu bringen, den rechten Rand des aktuellen Puffers hervorzuheben? Ich habe gerade angefangen, eine Weile mit Vim zu arbeiten, und ich finde es ärgerlich, nicht den rechten Rand sichtbar zu haben (in Spalte 80).

Ha-Duong Nguyen
quelle
Sie können die Textbreite definieren und jetzt sogar Nowrap festlegen, wenn Sie möchten.
Pavium
11
Neu in Vim 7.3: :set cc=81oder relativ zur Textbreite : :set cc=+1.
Nefrubyr

Antworten:

121

In Vim 7.3 wurde die Farbsäule eingeführt.

:set colorcolumn=80

Es kann für Sie einfacher sein, sich an die Kurzform zu erinnern.

:set cc=80
wilhelmtell
quelle
2
Schauen Sie sich die zweite Antwort hier an: stackoverflow.com/questions/235439/… für eine Verbesserung der Kompatibilität.
mgold
1
@mgold verweist niemals auf eine Antwort nach Nummer. Die Reihenfolge ändert sich basierend auf den Stimmen. Verwenden Sie immer den Share-Link.
Bruno Bronosky
1
5 Monate später habe ich immer wieder dafür gegoogelt und fand den obigen Link immer wieder nervig. Hier ist die Antwort, die er über stackoverflow.com/a/3765575/117471 spricht, die zeigt, wie Sie Ihr vimrc mit vim> = 7.3 und <7.3 kompatibel machen können
Bruno Bronosky
19

Es gibt keine einfache Möglichkeit, eine vertikale Kante für den textwidthRand in Vim 7.2 oder früher zu visualisieren . Ab Version 7.3 gibt es eine spezielle colorcolumnOption. Mit dem folgenden :matchBefehl können jedoch alle Zeichen jenseits der 80-Spalten-Grenze hervorgehoben werden :

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

Alles, was wir brauchen, um eine allgemeine Lösung zu finden, ist, das Übereinstimmungsmuster im laufenden Betrieb zu erstellen, um den korrekten Wert der textwidth Option zu ersetzen :

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

Ich habe eine Vimscript-Funktion in meine .vimrc geschrieben, um die Farbspalte umzuschalten, wenn ich 8 drücke (Komma gefolgt von 8, wobei Komma die definierte Führungslinie für benutzerdefinierte Befehle ist und 8 meine Mnemonik-Taste für 'Zeige einen Rand am 80. Spalte):

" 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>
Jonathan Hartley
quelle
1
Warum nicht ein einfacher :nnoremap <expr> <leader>8 &cc?':let &cc=0<CR>':':let &cc=80<CR>'
Einzeiler
2

Ich habe die Antwort von Jonathan Hartley für die älteren Vim-Versionen wie 7.2 umgeschrieben, da es colorcolumnin älteren Vims keine gibt.

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>
Mateusz Piotrowski
quelle