Warum brauche ich sowohl einen vimrc als auch einen gvimrc?

38

Es scheint zwei Möglichkeiten zu geben, um Einstellungen für gvim zu speichern:

  1. Behalten Sie eine .vimrcDatei für vim und eine .gvimrcDatei für gvim-spezifische Ergänzungen.

  2. Behalten Sie alle Einstellungen bei .vimrcund binden Sie gvim-spezifische Einstellungen in eine Funktionserkennungsbedingung ein:

    if has('gui_running')
        " gvim specific settings here
    endif
    

Warum sollte ich angesichts der letztgenannten Option jemals eine .gvimrcDatei benötigen ?

Caleb
quelle
Ein spezielles Beispiel, das ich nützlich finde, ist winposdas Ändern der Position des von gvim verwendeten Fensters. Dies hat keine Auswirkungen (und macht keinen Sinn) innerhalb ~/.vimrc, es in sein muss~/.gvimrc
jalanb

Antworten:

29

Beim Start der GUI werden einige Einstellungen zurückgesetzt und dann .gvimrcverarbeitet.

Wenn Sie einen anderen Wert als den Standardwert für eine dieser Einstellungen festlegen möchten, müssen Sie diesen in a festlegen .gvimrc. Das Testen des GUI-Modus in .vimrcwird nicht funktionieren.

Eine solche Einstellung ist t_vbder Terminalcode, der für die visuelle Klingel verwendet wird. Tatsächlich werden alle Terminaloptionen auf die Standardeinstellungen für den GUI-Modus zurückgesetzt (siehe :help terminal-options).

Zusätzlich werden eine Reihe von GUI-Einstellungen und Menüanpassungen vorgenommen. Wenn Sie irgendetwas davon optimieren möchten, möchten Sie, dass in a .gvimrcoder es keine Auswirkungen hat.

Das Durchlesen :help gvimrcbietet einen guten Überblick über Dinge, die sich zwischen der Beschaffung Ihrer Produkte .vimrcund der .gvimrcNeueinstellung Ihrer Produkte auf Sie auswirken können.


quelle
3
IIRC Sie können den :guiBefehl ( has("gui_running")natürlich innerhalb ) verwenden, um die GUI-Startsequenz zu erzwingen, bevor nachfolgende VIMRC-Befehle ausgeführt werden. Mein .vimrc verwendet dies, um zu ermöglichen, dass die Standardeinstellung für die Helligkeit / Dunkelheit des Hintergrunds basierend auf der tatsächlichen GUI-Hintergrundfarbe festgelegt wird.
Random832