在创建终端缓冲区时,如何强制nvim为.bash_配置文件提供源?
从我的测试中可以清楚地看到,在打开新的终端缓冲区时,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
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,所以我不会将其标记为已接受。