So ändern Sie den Pfad des Vim-Befehls

So ändern Sie den Pfad des Vim-Befehls

Ich habe zwei Versionen von vimauf macOS installiert:

  • eine Standardversion, /usr/bin/vim,
  • und MacVim (über Homebrew), /usr/local/bin/vim.

Wenn ich eingebe vim, wird das Standardprogramm aufgerufen. Ich möchte MacVim verwenden, wenn ich eingebe vim. Wissen Sie, wie das geht? Verwenden beide dieselbe ~/.vimrcDatei?

Antwort1

Verwenden Sie einen Alias.

Der Alias ​​ist in einer Ihrer BASH-RC-Dateien definiert, z. B. ~/.bashrc. Wenn es sich unten /usr/local/bin/vimum einen symbolischen Link handelt, erstellen Sie einen Alias ​​mit dem Namen vim.

if [ -h '/usr/local/bin/vim' ]; then
    alias vim='/usr/local/bin/vim'
fi

Die gleiche Logik kann wie folgt angewendet werden.

[ -h '/usr/local/bin/vim' ] && alias vim='/usr/local/bin/vim'
  • -htestet, ob eine Datei ein symbolischer Link ist, was bei der Verwendung von Homebrew der Fall sein kann.
  • -xtestet, ob eine Datei eine reguläre ausführbare Datei ist.

(Man erkennt, dass es sich bei einer Datei um einen Link handelt, wenn ls -lder erste Buchstabe der Berechtigung als l angezeigt wird.mrwxr-xr-x.)

Möglicherweise möchten Sie auch einige Variablen festlegen, die Programme zum Aufrufen eines Standard-Editors verwenden.

EDITOR='/usr/local/bin/vim'
VISUAL='/usr/local/bin/vim'

Nachdem Sie die Definition zur RC-Datei Ihrer Shell hinzugefügt haben, verwenden Sie die RC-Datei als Quelle, um den neuen Alias ​​abzurufen, source ~/.bashrcoder die Datei, die für Ihre BASH-Konfiguration geeignet war. Der Befehl , command -v vimzeigt an, dass der Alias ​​erstellt wurde, wenn seine Ausgabe wie folgt lautet.

alias vim=/usr/local/bin/vim

Beide Versionen von verwenden dieselben VIM RC-Dateien vim.

Der Vorteil des Verweisens auf den symbolischen Link statt auf die ausführbare Binärdatei besteht darin, dass der Alias ​​nicht bei jedem Upgrade von MacVim aktualisiert werden muss, was häufig vorkommt. Homebrew behält den symbolischen Link bei, der auf die richtige ausführbare Binärdatei verweist, wenn Upgrades brew update && brew upgradebeispielsweise mit durchgeführt werden.


Die Systemversion /usr/bin/vimsollte dort bleiben, wo sie ist. Ohne Deaktivierung des Systemintegritätsschutzes (SIP) kann sie ohnehin nicht gelöscht oder geändert werden. Es ist weiterhin möglich, die Systemversion durch Eingeben von zu verwenden /usr/bin/vim, die vimEingabe von führt jedoch zu /usr/local/bin/vim.


Ändern Sie den Pfad.

Eine andere Möglichkeit, die für alle über Homebrew installierte Software funktioniert, besteht darin, die PATHso zu ändern, dass alle von Homebrew installierte Software zuerst in der steht PATH. Zu Beginn muss man wissen, welche zshRC-Datei bereits die Definition des Pfads enthält.

cd
grep path .z*

Eines der Ergebnisse könnte enthalten fpath. Dies ist nicht die richtige Variable. Wir suchen nach einer Variable mit Kleinbuchstaben namens path. Nachdem Sie den Namen der zu bearbeitenden Datei ermittelt haben, der wahrscheinlich entweder ~/.zshrcoder ist ~/.zprofile, ändern Sie den Wert der pathVariablen. Im Folgenden werden beispielsweise zuerst und pathdefiniert , gefolgt von Skripten oder Programmen im Home-Verzeichnis und zuletzt dem Rest des Pfads, der bereits vom System definiert wurde./usr/local/bin/usr/local/sbin

path=(
    /usr/local/{bin,sbin}
    $HOME/bin
    $path
)

Die resultierende Unix- PATHVariable würde dann wie folgt definiert.

/usr/local/bin:/usr/local/sbin:/Users/$username/bin:/usr/bin:/bin:/usr/sbin:/sbin

Die zsh pathund Unix- PATHVariablen sind durch „zusammengebunden“ typseset, also genügt sourcedie Datei, die bearbeitet wurde, um die pathVariable zu ändern: source ~/.zprofilebeispielsweise. Sehen Sie sich dann die PATHVariable an, um zu erfahren, ob sie wie erwartet geändert wurde: echo $PATH.


Die Homebrew-Paketbetreuer können recht gut erkennen, welche Software Probleme mit macOS verursachen würde, wenn /usr/local/binsie im Pfad an erster Stelle steht, vor /usr/bin. Wenn Homebrew beispielsweise GNU installieren soll , wäre idder Name der Software in , um Probleme mit BSD in zu vermeiden ./usr/local/bingidid/usr/bin

Antwort2

/usr/local/binDer Standard bei Brew besteht darin, es in Ihren PATHvorherigen Systemverzeichnissen abzulegen, /usr/bindamit dessen Befehle zuerst abgerufen werden.

verwandte Informationen