En mi .zshrc
, declaro algunos alias. Por ejemplo, which dbstart
muestra el contenido de ese alias.
Si abro vim desde ese shell, es un proceso hijo. En Vim, puedo ejecutar comandos de shell con :! some_command
. Si hago :! echo $0
para ver qué shell está usando Vim, genera '/ bin / zsh'. Sin embargo, mis alias no están disponibles allí.
¿Cómo puedo hacer que mis alises de shell normales estén disponibles cuando salgo de Vim?
Dos ideas:
- De alguna manera,
EXPORT
los alias del shell original, a su proceso hijovim
, y de nuevo a su proceso hijo shell - Configure Vim para leer mi
.zshrc
cuando cree sus subcapas
shell
vim
environment-variables
alias
Nathan Long
fuente
fuente
.zshrc
en .profile (que parece ser utilizado porvim
Respuestas:
Antigua pregunta, pero la solución más limpia para vim en zsh era agregar el alias al
~/.zshenv
archivo que zsh carga para todos los shells, inicio de sesión, interactivo u otros. Esto evita iniciar vim o zsh con banderas y cualquier posible problema con eso.Hay una buena explicación de
~/.zshenv
vs~/.zshrc
aquí: http://tanguy.ortolo.eu/blog/article25/shrcBásicamente, zsh siempre es fuente
~/.zshenv
. Fuente shells interactivos~/.zshrc
y de acceso fuente de conchas~/.zprofile
y~/.zlogin
. Por lo tanto, las fuentes de un shell de inicio de sesión interactivo~/.zshenv ~/.zprofile ~/.zlogin ~/.zlogin
y un shell no interactivo y sin inicio de sesión como el que vim usa para ejecutar orígenes de comandos solamente~/.zshenv
.fuente
Parece que esto funciona para zsh:
$ZDOTDIR=
el directorio donde.zshrc
se encuentra. P.ej,export ZDOTDIR=$HOME
.vimrc
,set shell=zsh\ -i
oset shellcmdflag+=i
para el mismo efecto.Esto
-i
se debe a que, cuando se inicia en modo interactivo, se carga zshell$ZDOTDIR/.zshrc
. Verman zsh
y buscar$ZDOTDIR
detalles.fuente
"+y
ahora suspende a Vim! superuser.com/questions/712245/…Creo que cuando estás dentro
vim
y usas el:!some_command
está usando cualquier shell definido por la variable de entorno$SHELL
.Esto es configurable, por lo que puede cambiar anulando el
$SHELL
comportamiento en su$HOME/.vimrc
archivo para usarzsh
en su lugar.O al
.vimrc
usar 1 de estas 2 líneasAyuda vim
Ver
:help shell
desde adentrovim
para más información.fuente
$SHELL
. Entonces tu caparazón es/bin/bash
. Si mi caparazón es/bin/zsh
, eso es lo que usará.Al establecer
shell=/usr/bin/zsh\ -l
en.vimrc
resuelto mi problemaNota:
Estoy usando: linux mint 17.1
fuente