2

根据我的测试,很明显 nvim 在打开新的终端缓冲区时不会获取您的 .bash_profile 。每次创建新的终端缓冲区时,我都想强制这种情况发生。

要确认此行为:

  1. 在 nvim 中打开你的 .bash_profile
  2. 导出一个新变量,例如 ISSOURCED
  3. 写出文件
  4. 打开终端缓冲区
  5. echo $ISSOURCED

我还if tty -s; then echo interactive; fi根据这个答案通过执行检查了 bash 是否在交互模式下运行(它是)

但是,它不是基于执行的登录外壳,基于shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'答案。这意味着它通常会来源$HOME/.bashrc. 不幸的是,我将我的 bashrc 保存在不同的位置并从我的 .bash_profile 中获取它,所以它没有被拾取。

请参阅下面的答案,了解我当前的解决方法以及为什么它不太理想的信息。

4

2 回答 2

1

将此添加到您的~/.vimrc

set shell=bash\ -l

-l当使用( )调用时--login,bash 会~/.profile在启动时读取您的文件(以及其他文件),因此所有内容都来自那里。

-i当使用( )调用时--interactive,bash 会~/.bashrc在启动时读取您的文件(以及其他文件),因此所有内容都来自那里。

$ man bash:h shell了解:h shellcmdflag更多信息。

取自:https ://stackoverflow.com/a/9092644/1071756

于 2020-07-23T18:33:11.103 回答
0

我设置了一个映射来打开一个新终端:

nnoremap <leader>z :new<CR>:terminal<CR>

为了获取我的 .bash_profile,我将其更改为:

nnoremap <leader>z :new<CR>:terminal<CR>source $HOME/.bash_profile<CR>c<CR>

此解决方案的问题在于,如果您尝试以除此映射之外的任何方式打开终端缓冲区,它会中断

于 2015-11-25T21:04:28.117 回答