从 Vim 退出时如何使 shell 别名可用?

Nat*_*ong 12 shell vim alias environment-variables

在 my 中.zshrc,我声明了一些别名。例如,which dbstart显示该别名的内容。

如果我从那个 shell 打开 vim,它就是一个子进程。在 Vim 中,我可以使用:! some_command. 如果我:! echo $0要查看 Vim 正在使用什么 shell,它会输出“/bin/zsh”。但是,我的别名在那里不可用。

当我从 Vim 退出时,如何使我的普通 shell 别名可用?

两个想法:

  • 不知何故EXPORT,别名从原始 shell 到它的子进程vim,再到它的 shell 子进程
  • 配置 Vim.zshrc在创建其子 shell 时读取 my

Kev*_*Lee 13

老问题,但是 zsh 中 vim 最干净的解决方案是将别名添加到~/.zshenvzsh 为所有 shell、登录、交互或其他方式加载的文件。这避免了使用标志启动 vim 或 zsh 以及任何可能的问题。

这里有一个很好的~/.zshenvvs解释~/.zshrchttp : //tanguy.ortolo.eu/blog/article25/shrc

基本上, zsh 总是提供~/.zshenv. 交互式 shell 源代码~/.zshrc和登录 shell 源代码~/.zprofile~/.zlogin. 因此,一个交互式登录 shell 源~/.zshenv ~/.zprofile ~/.zlogin ~/.zlogin,以及一个像 vim 用来运行命令的非交互式非登录 shell源~/.zshenv


Nat*_*ong 5

看起来这适用于 zsh:

  • 确保$ZDOTDIR=所在目录.zshrc。例如,export ZDOTDIR=$HOME
  • .vimrcset shell=zsh\ -iset shellcmdflag+=i为了同样的效果。

-i是因为,当以交互模式启动时,zshell 会加载$ZDOTDIR/.zshrc. 查看man zsh和搜索$ZDOTDIR详细信息。

  • 我的vim一打开就暂停了。 (5认同)