2016-06-15 23 views
0

Ich bin colorcolumn in Vim, in der 90. Spalte, aber gleichzeitig möchte ich Text-Wrapping-Funktionalität beibehalten.Farbsäule und Text gleichzeitig in Vim wickeln

Deshalb, um die farbige Säule auf die umschlossene Zeilen zu halten und haben keine Pausen, muss ich wie in meinem .vimrc etwas setzen:

let col_no=90 
if ((longest_line_size/90) >= 2) 
    for i in range(2, (longest_line_size/90)) 
    let col_no=col_no . "," . ((90*i) + (&columns - 91)) 
    endfor 
endif 
execute 'set colorcolumn=' . col_no 

Das Problem ist, dass, wenn ich die Größe des Fensters (oder der Puffer), die farbige Spalte auf den umhüllten Zeilen ist nicht ausgerichtet. Eine Lösung wäre, die Funktion erneut auszuführen, wenn die Größe des Puffers geändert wird.

Ist das möglich? Andere Lösungen/Vorschläge sind ebenfalls willkommen.

Antwort

2

Sie können eine Funktion jedes Mal, wenn die Fenstergröße ändert den folgenden automatischen Befehl

augroup Resize 
    autocmd! 
    autocmd VimResized * :call YourFunctionName<cr> 
augroup END 

die Datei auf Ihrer vimrc hinzufügen verwenden. Um es mit Ihrem Code zu verwenden, müssen Sie den Code in eine Funktion einbinden.

function YourFunctionName 
    #your code goes here 
endfunction 

Beachten Sie, dass der Funktionsname mit einem Großbuchstaben beginnen muss.

+0

Danke, das ist richtig. Um den Algorithmus zu vervollständigen, muss ich auch die Anzahl der Spalten im aktuellen Puffer kennen (& Spalten ist die Anzahl der Spalten im gesamten Fenster). Weißt du, wie das erreicht werden kann? Vielen Dank! – jackgu1988

+1

Es sieht so aus http://stackoverflow.com/questions/26315925/get-usable-window-width-in-vim-script sollte Ihre Frage beantworten. Wenn Ihnen meine Antwort gefallen hat, würde ich mich über eine positive Bewertung freuen. Vielen Dank! – lwassink

+0

Vielen Dank! Ich würde gerne upvoten, aber mein Ruf erlaubt mir das noch nicht. Ich werde zurückkommen, wenn ich genug Punkte gesammelt habe. – jackgu1988