在运行带有"!"的命令时,如何使vim使用与登录shell相同的环境?

Fra*_*eng 6 vim

!ls用来执行bash命令.但之后,我已经配置了类似source ~/.usr_profile~/.profile文件,VIM将不获取该文件也是如此.因此,当我想执行声明的函数时usr_profile,我必须运行:!source ~/.usr_profile && my_command.当我使用这一次或两次时,没关系.但是当经常使用它时,我的vimrc会变得混乱.
有没有更好的方法来解决这个问题.谢谢

rom*_*inl 17

将此行添加到您的行中可以~/.vimrc解决您的直接问题:

set shell=bash\ -l
Run Code Online (Sandbox Code Playgroud)

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

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

尝试$ man bash:h shell:h shellcmdflag获取更多信息.

至于登录和非登录shell之间的区别,我必须承认我的无知.无论如何,这个关于serverfault的答案可能会有所帮助,这很有趣.