Gibt es eine Möglichkeit, eine separate vimrc-Datei nur für eine Sitzung bereitzustellen?

Gibt es eine Möglichkeit, eine separate vimrc-Datei nur für eine Sitzung bereitzustellen?

Ich würde gerne wissen, ob es in vim/vi eine Möglichkeit gibt, eine andere vimrc-Datei bereitzustellen. Ich möchte 2 verschiedene vimrc-Dateien verwalten. Für die Inhalte, die ich in der Versionskontrolle auschecke/einchecke, möchte ich einen anderen Befehlssatz verwenden und nicht den normalen in meiner .vimrcDatei

Zum Beispiel.

Meine .vimrcDatei enthält einen Befehl zum automatischen Löschen von Leerzeichen am Ende einer Datei beim Speichern. Ich möchte diese Funktion jedoch nicht für bestimmte Dateien aktivieren.

Gibt es also eine Möglichkeit, eine andere vimrc-Datei bereitzustellen (vielleicht in der Befehlszeile, indem man sie jedes Mal als Parameter angibt, z. B. vim --vimrc=somefile file-to-open)?

Antwort1

Siehe die Manpage:

-u {vimrc} Benutzt die Befehle in der Datei {vimrc} für Initialisierungen. Alle anderen Initialisierungen werden übersprungen. Verwenden Sie dies, um eine spezielle Art von Dateien zu bearbeiten. Es kann auch verwendet werden, um alle Initialisierungen zu überspringen, indem Sie den Namen "NONE" angeben. Weitere Einzelheiten finden Sie unter ":help initialization" in vim.

Antwort2

Gibt es also eine Möglichkeit, eine andere vimrc-Datei bereitzustellen (vielleicht in der Befehlszeile, indem man sie jedes Mal als Parameter angibt, z. B. vim --vimrc=somefile file-to-open)?

Ja, verwenden Sie den -uParameter:

vim -u ~/.my-custom-vimrc

Aus man vim:

   -u {vimrc}  Use  the  commands in the file {vimrc} for initializations.
               All the other initializations are  skipped.   Use  this  to
               edit  a special kind of files.  It can also be used to skip
               all initializations by giving the name "NONE".  See  ":help
               initialization" within vim for more details.

Meine .vimrc-Datei enthält einen Befehl zum automatischen Löschen von Leerzeichen am Ende einer Datei beim Speichern. Ich möchte diese Funktion jedoch nicht für bestimmte Dateien aktivieren.

Wenn Sie für einige bekannte Dateitypen eine spezielle Behandlung benötigen, gibt es eine andere Lösung. Verwenden Sie den autocmdBefehl in Ihrer vimrc. Dies ist beispielsweise meine dateitypabhängige Konfiguration:

" Mapping of filetypes to options
au FileType freerad      setl noexpandtab sts=0 sw=8
au FileType make         setl noexpandtab sts=0
au FileType php          let php_sql_query=1
au FileType php          let php_htmlInStrings=1
au FileType python       setl shiftwidth=2 expandtab
au FileType sql          setl noexpandtab sts=0 sw=8
" global options I do not want any filetype to override
au FileType *            setl formatoptions-=ro " don't continue comments

Wenn Sie Optionen auf etwas anwenden müssen, dem vim nicht automatisch einen bestimmten Dateityp zuweist, können Sie Ihre eigene Zuordnung hinzufügen (tun Sie das, bevor Sie den autocmdBefehl verwenden):

" mapping of filenames to filetypes
au FileReadPost,BufReadPost,BufNewFile /etc/freeradius/* setl ft=freerad
au FileReadPost,BufReadPost,BufNewFile *.xt              setl ft=xt

Antwort3

Sie können set exrcin Ihrer Haupt-.vimrc auch veranlassen, dass vim automatisch eine .vimrc aus dem aktuellen Verzeichnis lädt.

Antwort4

Wenn Sie Ihr Vim-Konfigurationsverzeichnis unter Git speichern (das hoffe ich), können Sie verschiedene Zweige verwenden und zwischen ihnen auschecken.

verwandte Informationen