No meu .zshrc
, declaro alguns aliases. Por exemplo, which dbstart
mostra o conteúdo desse alias.
Se eu abrir o vim a partir desse shell, é um processo filho. No Vim, eu posso executar comandos shell com :! some_command
. Se eu fizer :! echo $0
para ver qual shell o Vim está usando, ele gera '/ bin / zsh'. No entanto, meus aliases não estão disponíveis lá.
Como posso disponibilizar o meu shell normal quando saio do Vim?
Duas idéias:
- De alguma forma,
EXPORT
os aliases do shell original, para o processo filhovim
e novamente para o processo filho do shell - Configure o Vim para ler meu
.zshrc
ao criar seus subshells
shell
vim
environment-variables
alias
Nathan Long
fonte
fonte
.zshrc
.profile em (o que parece ser o uso porvim
Respostas:
Pergunta antiga, mas a solução mais limpa para o vim no zsh era adicionar o alias ao
~/.zshenv
arquivo que o zsh carrega para todos os shells, logon, interativo ou outros. Isso evita iniciar o vim ou zsh com sinalizadores e quaisquer possíveis problemas com isso.Há uma boa explicação sobre
~/.zshenv
vs~/.zshrc
aqui: http://tanguy.ortolo.eu/blog/article25/shrcBasicamente, o zsh sempre origina
~/.zshenv
. Fonte de shells interativa~/.zshrc
e fonte de shells de login~/.zprofile
e~/.zlogin
. Portanto, fontes de shell de logon interativas~/.zshenv ~/.zprofile ~/.zlogin ~/.zlogin
e um shell não interativo e sem logon como o que o vim usa para executar comandos apenas de fontes~/.zshenv
.fonte
Parece que isso funciona para o zsh:
$ZDOTDIR=
o diretório.zshrc
está localizado. Por exemplo,export ZDOTDIR=$HOME
.vimrc
,set shell=zsh\ -i
ouset shellcmdflag+=i
para o mesmo efeito.O
-i
é porque, quando iniciado no modo interativo, zshell cargas$ZDOTDIR/.zshrc
. Vejaman zsh
e procure$ZDOTDIR
por detalhes.fonte
"+y
agora suspende o Vim! superuser.com/questions/712245/…Eu acredito que quando você está
vim
e usa o:!some_command
que está usando qualquer shell que é definido pela variável de ambiente$SHELL
.Isso é configurável; portanto, você pode alterar substituindo o
$SHELL
comportamento do seu$HOME/.vimrc
arquivo a ser usadozsh
.Ou no
.vimrc
uso de 1 dessas 2 linhasAjuda do Vim
Veja
:help shell
de dentrovim
para mais informações.fonte
$SHELL
. Então sua concha é/bin/bash
. Se meu shell for/bin/zsh
, é isso que ele usará.Ao definir
shell=/usr/bin/zsh\ -l
em.vimrc
resolveu o meu problemaNota:
Estou usando: linux mint 17.1
fonte