You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何退出Vim后让Bash自动切换至当前文件所在目录?

实现退出Vim后Bash自动切换到最后操作的目录

步骤1:配置Vim自动保存最后工作目录

在你的Vim配置文件(~/.vimrc,如果是Neovim则是~/.config/nvim/init.vim)中添加以下代码,让Vim在退出时把当前工作目录写入一个临时文件:

" 退出Vim时保存当前工作目录到临时文件
autocmd VimLeave * call writefile([getcwd()], $HOME . '/.vim_last_dir')

步骤2:自定义Bash中的vim命令

修改你的Bash配置文件(~/.bashrc 或 ~/.bash_profile),添加以下函数,替代原生的vim命令,使其在Vim退出后自动切换到保存的目录:

vim() {
    # 执行原生的vim命令
    command vim "$@"
    # 检查临时文件是否存在
    if [ -f "$HOME/.vim_last_dir" ]; then
        local last_dir=$(cat "$HOME/.vim_last_dir")
        # 确认目录存在后切换
        if [ -d "$last_dir" ]; then
            cd "$last_dir"
        fi
        # 删除临时文件,避免残留
        rm "$HOME/.vim_last_dir"
    fi
}

生效配置

保存上述文件后,在终端执行以下命令让配置立即生效:

source ~/.bashrc

原理说明

  • Vim的VimLeave自动命令会在退出Vim时触发,调用writefile把当前工作目录(getcwd()的结果)写入~/.vim_last_dir文件。
  • 自定义的vim函数先执行原生vim命令,待Vim退出后读取临时文件中的目录,切换过去后删除临时文件,避免后续干扰。

内容的提问来源于stack exchange,提问作者john-jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:35:36