Dans mon .zshrc
, je déclare quelques alias. Par exemple, which dbstart
affiche le contenu de cet alias.
Si j'ouvre vim à partir de ce shell, c'est un processus enfant. Dans Vim, je peux exécuter des commandes shell avec :! some_command
. Si je fais :! echo $0
pour voir quel shell Vim utilise, il génère '/ bin / zsh'. Cependant, mes alias ne sont pas disponibles là-bas.
Comment puis-je rendre mes alises shell normales disponibles lorsque je sort de Vim?
Deux idées:
- D'une manière ou d'une autre,
EXPORT
les alias du shell d'origine, à son processus enfantvim
, et à nouveau à son processus enfant shell - Configurer Vim pour lire mon
.zshrc
lors de la création de ses sous-coques
shell
vim
environment-variables
alias
Nathan Long
la source
la source
.zshrc
dans .profile (qui semble être utilisé parvim
Réponses:
Vieille question, mais la solution la plus propre pour vim dans zsh était d'ajouter l'alias au
~/.zshenv
fichier que zsh charge pour tous les shells, login, interactif ou autre. Cela évite de démarrer vim ou zsh avec des drapeaux et tout problème possible avec cela.Il y a une belle explication de
~/.zshenv
vs~/.zshrc
ici: http://tanguy.ortolo.eu/blog/article25/shrcFondamentalement, zsh source toujours
~/.zshenv
. Source de shells interactifs~/.zshrc
, et source de shells de connexion~/.zprofile
et~/.zlogin
. Ainsi, un shell interactif de connexion aux sources~/.zshenv ~/.zprofile ~/.zlogin ~/.zlogin
et un shell non interactif et non connecté comme celui utilisé par vim pour exécuter des commandes uniquement des sources~/.zshenv
.la source
On dirait que cela fonctionne pour zsh:
$ZDOTDIR=
le répertoire où.zshrc
se trouve. Par exemple,export ZDOTDIR=$HOME
.vimrc
,set shell=zsh\ -i
ouset shellcmdflag+=i
pour le même effet.C'est
-i
parce que, lorsqu'il est démarré en mode interactif, zshell se charge$ZDOTDIR/.zshrc
. Voirman zsh
et rechercher$ZDOTDIR
des détails.la source
"+y
maintenant suspend Vim! superuser.com/questions/712245/…Je crois que lorsque vous êtes dedans
vim
et que vous l'utilisez,:!some_command
il utilise le shell défini par la variable d'environnement$SHELL
.Ceci est configurable, vous pouvez donc changer en remplaçant le
$SHELL
comportement de votre$HOME/.vimrc
fichier à utiliser à lazsh
place.Ou dans votre
.vimrc
utilisation de 1 de ces 2 lignesAide Vim
Voir
:help shell
de l'intérieurvim
pour plus d'informations.la source
$SHELL
. Votre coquille l'est donc/bin/bash
. Si ma coquille est/bin/zsh
, c'est ce qu'elle utilisera.En réglant
shell=/usr/bin/zsh\ -l
à.vimrc
résoudre mon problèmeRemarque:
J'utilise: linux mint 17.1
la source