在创建终端缓冲区时,如何强制nvim为.bash_配置文件提供源?

在创建终端缓冲区时,如何强制nvim为.bash_配置文件提供源?,vim,neovim,Vim,Neovim,从我的测试中可以清楚地看到,在打开新的终端缓冲区时,nvim不会为您的.bash_配置文件提供源代码。我希望在每次创建新的终端缓冲区时强制执行此操作 要确认此行为,请执行以下操作: 在nvim中打开你的.bash_配置文件 导出一个新变量,如 i来源 写出文件 打开终端缓冲区 运行echo$ISSOURCED 我还通过执行if tty-s检查了bash是否在交互模式下运行;然后回声互动;fi,基于 但是,它不是一个登录shell,基于执行shopt-q login_shell&&echo'log

从我的测试中可以清楚地看到,在打开新的终端缓冲区时,nvim不会为您的.bash_配置文件提供源代码。我希望在每次创建新的终端缓冲区时强制执行此操作

要确认此行为,请执行以下操作:

  • 在nvim中打开你的.bash_配置文件
  • 导出一个新变量,如
    i来源
  • 写出文件
  • 打开终端缓冲区
  • 运行
    echo$ISSOURCED
  • 我还通过执行
    if tty-s检查了bash是否在交互模式下运行;然后回声互动;fi
    ,基于

    但是,它不是一个登录shell,基于执行
    shopt-q login_shell&&echo'login shell'| echo'not login shell'
    ,基于。这意味着它通常是源代码
    $HOME/.bashrc
    。不幸的是,我将我的bashrc保存在不同的位置,并从我的.bash_配置文件中获取它,因此无法获取它


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

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

    nnoremap <leader>z :new<CR>:terminal<CR>
    
    nnoremap z:new:terminal
    
    为了获得我的.bash_配置文件,我将其更改为:

    nnoremap <leader>z :new<CR>:terminal<CR>source $HOME/.bash_profile<CR>c<CR>
    
    nnoremap z:new:terminalsource$HOME/.bash\u profilec
    

    此解决方案的问题是,如果您尝试以除此映射以外的任何方式打开终端缓冲区,它将中断。请将此添加到您的
    ~/.vimrc

    set shell=bash\ -l
    
    当使用
    -l
    -login
    )调用时,bash会在启动时读取您的
    ~/.profile
    (以及其他文件),从而读取源于此的所有内容

    当使用
    -i
    -interactive
    )调用时,bash会在启动时读取您的
    ~/.bashrc
    (以及其他文件),从而读取源于此的所有内容

    $manbash
    :hshell
    :hshellcmdflag
    了解更多信息


    摘自:

    nvim是否为您的bashrc文件提供源代码?
    。bash_profile
    仅由登录shell提供源代码,而
    nvim
    可能会启动一个常规的交互式shell。@b因此,您应该发布一个答案,包括将'source$HOME/.bash_profile'添加到$HOME/.bashrc,我会投赞成票,因为你值得代表为我指出这个方向,这将是对未来读者有用的建议。但是,这对我来说仍然不起作用,因为我没有$HOME/.bashrc,所以我不会将其标记为已接受。