如何在Bash中启动Vim时自动为sudo添加-E参数
解决sudo启动Vim自动添加-E参数的问题
你之前写的vim()函数逻辑错误——当输入sudo vim时,shell会优先解析sudo命令,根本不会触发你的vim()函数,所以里面的判断条件永远不会生效。
下面提供两种可行方案:
方案一:通过sudo函数实现自动拦截
在.bashrc中添加以下函数,它会在你执行sudo vim时自动追加-E参数,其他sudo命令不受影响:
sudo() { if [[ "$1" == "vim" ]]; then command sudo -E vim "${@:2}" else command sudo "$@" fi }
- 原理:拦截
sudo命令调用,判断第一个参数是否为vim,是则执行带-E的sudo vim,否则正常执行原sudo命令 - 生效方法:修改后执行
source ~/.bashrc,或者重新打开终端
方案二:直接设置别名(更简单)
如果只需要快速调用带-E的sudo vim,直接在.bashrc里加别名:
alias svim='sudo -E vim'
之后输入svim就等价于执行sudo -E vim,满足需求的同时更直观。
内容的提问来源于stack exchange,提问作者Letus252
相关产品推荐
相关产品推荐

