In meinem .zshrc
deklariere ich einige Aliase. Zum Beispiel which dbstart
zeigt den Inhalt dieses Alias.
Wenn ich vim von dieser Shell aus öffne, ist dies ein untergeordneter Prozess. In Vim kann ich Shell-Befehle mit ausführen :! some_command
. Wenn ich sehe :! echo $0
, welche Shell Vim verwendet, gibt sie '/ bin / zsh' aus. Meine Aliase sind dort jedoch nicht verfügbar.
Wie kann ich meine normalen Shell-Alises verfügbar machen, wenn ich von Vim aus berufe?
Zwei Ideen:
- Irgendwie
EXPORT
die Aliase von der ursprünglichen Shell zu ihrem untergeordneten Prozessvim
und wieder zu ihrem untergeordneten Shell-Prozess - Konfigurieren Sie Vim so, dass es my
.zshrc
beim Erstellen seiner Subshells liest
shell
vim
environment-variables
alias
Nathan Long
quelle
quelle
.zshrc
vim
Antworten:
Alte Frage, aber die sauberste Lösung für vim in zsh war das Hinzufügen des Alias zu
~/.zshenv
der Datei, die zsh für alle Shells lädt, login, interaktiv oder auf andere Weise. Dies vermeidet das Starten von vim oder zsh mit Flags und möglichen Problemen damit.Hier gibt es eine schöne Erklärung für
~/.zshenv
vs~/.zshrc
: http://tanguy.ortolo.eu/blog/article25/shrcGrundsätzlich bezieht zsh immer Quellen
~/.zshenv
. Quelle für interaktive Shells und Quelle für~/.zshrc
Login-Shells~/.zprofile
und~/.zlogin
. Daher werden eine interaktive Anmelde-Shell-Quelle~/.zshenv ~/.zprofile ~/.zlogin ~/.zlogin
und eine nicht interaktive Nicht-Anmelde-Shell wie die, die vim verwendet, um nur Befehlsquellen auszuführen~/.zshenv
.quelle
Sieht so aus, als ob dies für zsh funktioniert:
$ZDOTDIR=
das Verzeichnis.zshrc
befindet. Z.B,export ZDOTDIR=$HOME
.vimrc
,set shell=zsh\ -i
oderset shellcmdflag+=i
für den gleichen Effekt.Das
-i
liegt daran , dass, wenn im interaktiven Modus gestartet wird , lädt zshell$ZDOTDIR/.zshrc
. Sieheman zsh
und suche$ZDOTDIR
nach Details.quelle
"+y
jetzt wird Vim angehalten! superuser.com/questions/712245/…Ich glaube, wenn Sie in sind
vim
und die verwenden, wird die:!some_command
Shell verwendet, die von der Umgebungsvariablen definiert wird$SHELL
.Dies ist konfigurierbar, sodass Sie Änderungen vornehmen können, indem Sie das
$SHELL
Verhalten in Ihrer$HOME/.vimrc
Datei überschreiben, daszsh
stattdessen verwendet werden soll.Oder wenn Sie
.vimrc
1 dieser 2 Zeilen verwendenVim Hilfe
Weitere Informationen finden Sie
:help shell
von innenvim
.quelle
$SHELL
. Also ist deine Muschel/bin/bash
. Wenn meine Shell ist/bin/zsh
, wird sie verwendet.Durch die Einstellung
shell=/usr/bin/zsh\ -l
in.vimrc
meinem Problem gelöstHinweis:
Ich benutze: Linux Mint 17.1
quelle