Festlegen eines Alias ​​zur Verwendung von Macvim im Terminal anstelle von Standard-Vim

1188
Alex Smirnov

Ich möchte die MacVim-Konsolen-App anstelle eines Standard-Vim verwenden. Um das zu erreichen versuche ich einen Alias ​​zu setzen:

alias vim="/usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim" Aber aus einigen Gründen aliasfunktioniert der Befehl nicht und jedes Mal, wenn ich ihn ausführe which vim, ändert er sich nicht und wird immer '/usr/local/bin/vim'als Pfad angezeigt. Was ist los?

Die Installation von Macvim by brew install macvim --with-override-system-vim funktioniert für mich nicht, da es auch erforderlich ist, die GUI-Version von XCode zu installieren, die zu schwer ist (~ 5 GB).

1
Nur eine Notiz. MacVim enthält ein Bash-Skript "mvim". Sie starten MacVim also mit `mvim file`. jm666 vor 7 Jahren 1
@ jm666 richtig, wenn Sie die GUI-Version starten möchten, starten Sie `mvim`. MacVim hat jedoch auch eine Konsolenversion, die gemäß dem von mir angegebenen Pfad im MacVim-Ordner liegt Alex Smirnov vor 7 Jahren 0

1 Antwort auf die Frage

1
jm666

Das mvimist universell Ausgang (bash) Skript für die MacVim. Es funktioniert basierend auf seinem eigenen Namen, z. B. wenn der Name mit der GUI-Version beginnt moder ggestartet wird, ansonsten die Konsolenversion.

Sie können dies in der mvimQuelle sehen:

case "$name" in m*|g*|rm*|rg*) gui=true ;; esac 

Jeder andere Name startet die Konsolenversion . Es reicht also aus, eine feste Verknüpfung mit dem Original herzustellen mvim. Zum Beispiel, wenn Sie mvimin der /usr/local/bin/mvimdann ist

sudo ln /usr/local/bin/mvim /usr/local/bin/tvim 

erstellt das tvimund der tvimBefehl startet die Konsolenversion von MacVim. Natürlich können Sie die Verknüpfung auch vimgerne erstellen

sudo ln /usr/local/bin/mvim /usr/local/bin/vim 

nur muss sicherstellen, dass das /usr/local/binist, bevor die /usr/binin der Ihre $PATH.

Nun zu deiner Frage:

Das Spiegeln von Befehlen mit Aliasnamen ist nicht die beste Vorgehensweise. Wie auch immer, es funktioniert. Also dein

alias vim="/usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim" 

startet die MacVim Vim. Der whichBefehl zeigt keine Aliase. Sie können es selbst testen und direkt in das Terminal eingeben:

alias bubu=/bin/date 

Das which bubuzeigt nichts, aber wenn Sie den bubuBefehl ausführen, erhalten Sie das Datum.

Sie können mit dem Befehl überprüfen, welcher Befehl ausgeführt wird type. Z.B

type bubu #bubu is alias /bin/date 

ähnlich

type vim #will show the /usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/MacOS/Vim 

Sie können auch die aktuellen Variablen direkt aus Ihrem Lauf heraus überprüfen. vimVerwenden Sie einfach :set runtimepathoder :set helpfile, um als Standard /usr/bin/vimetwas anzuzeigen:

... /usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after 

aber für Ihren MacVim (im Konsolenmodus) wird Folgendes angezeigt:

... /usr/local/Cellar/macvim/8.0-119_1/MacVim.app/Contents/Resources/vim/vimfiles 

So endlich:

  • Ihr Alias ​​funktioniert wahrscheinlich, nur das whichzeigt es nicht
  • Sie können den bereitgestellten mvimLink einfach mit einem anderen Namen verknüpfen