vimdiff with interactive shell

今天打开vimdiff时自动切到后台了, 手动fg还恢复不了, 但是尝试换个帐号登录是正常的, 怀疑是某个配置导致的问题.
于是比较下两者的vimrc, 发现之前为了能使vim识别alias命令开启了interactive shell, 导致vim的diff命令与shell的diff命令冲突了.
在stack overflow上看到一个解决办法: https://stackoverflow.com/questions/11980796/vimdiff-with-interactive-shell
在vimrc中添加以下设置:

let $BASH_ENV = '~/.bashrc'
set shellcmdflag=-O\ expand_aliases\ -c

注意修改vimrc后需要手动source bashrc, 因为non login状态默认沿用当前环境变量.
如果source后仍不起效, 可以检查下bashrc头部是否有对interactive shell处理的代码:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

绕过return即可, i.e.

case $- in
    *i*) ;;
      *) if [ ! -d $VIM ]; then return; fi;;
esac
posted @ 2020-04-19 22:19  Five100Miles  阅读(244)  评论(0编辑  收藏  举报