如何退出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
相关产品推荐
相关产品推荐

