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