在创建终端缓冲区时,如何强制nvim来源我的.bash_profile?

时间:2015-11-25 21:04:28

标签: vim neovim

从我的测试中可以清楚地看到,在打开新的终端缓冲区时,nvim并没有提供你的.bash_profile。我想在每次创建新的终端缓冲区时强制执行此操作。

要确认此行为:

  1. 在nvim中打开你的.bash_profile
  2. 导出一个新变量,如 ISSOURCED
  3. 写出文件
  4. 打开终端缓冲区
  5. 运行echo $ISSOURCED
  6. 我还检查过bash是否以交互模式运行(确实如此),执行if tty -s; then echo interactive; fi,基于this answer

    然而,基于this answer执行shopt -q login_shell && echo 'Login shell' || echo 'Not login shell',它不是登录shell。这意味着它通常会来源$HOME/.bashrc。不幸的是,我将我的bashrc保存在不同的位置并从我的.bash_profile中获取,因此它不会被接收。

    请参阅下面的答案,了解我目前的解决方法以及有关其不太理想的原因的信息。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

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

答案 1 :(得分:0)

将此添加到您的~/.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