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

如何在退出/重启Vim时自动保存并加载临时缓冲区?

Vim 实现类Notepad++无手动保存自动持久化多标签笔记功能

完全可以通过配置或插件实现和Notepad++一致的体验,不需要每次手动执行保存命令,退出后下次启动自动还原所有标签页、未写完的内容。

纯内置配置方案(无插件依赖)

Vim原生自带的会话、viminfo(Neovim对应为shada)能力组合后可以实现基础效果,适合不想装插件的用户,把以下配置写入你的vimrc(Neovim对应为init.vim)即可:

" 允许切换标签/关闭窗口时保留未保存的缓冲区,不会弹出强制保存提示
set hidden
" 调整viminfo存储规则:标记最多存1000个文件、开启文件路径存储、单缓冲区最多存1000行内容、指定viminfo存储路径
set viminfo='1000,f1,<1000,n~/.vim/viminfo
" 退出Vim前自动静默保存所有缓冲区状态
autocmd VimLeavePre * :silent! wall
" 启动Vim时静默加载上次留存的所有缓冲区、标签状态
autocmd VimEnter * :silent! rshada | :silent! bufdo e

注意:该方案单条笔记内容超过你设置的<后接的行数阈值时会被截断,仅适合短笔记场景,不会持久化无文件名的超长文本。

插件方案(1:1复刻Notepad++体验,推荐)

用会话管理插件可以完美实现无感知自动持久化,不会有内容长度限制,还能保留光标位置、窗口布局、折叠状态等细节。

  1. 先添加基础会话配置到vimrc:
" 调整会话存储范围,包含缓冲区、标签页、窗口尺寸、缓冲区本地配置,移除容易冲突的全局选项
set sessionoptions-=options
set sessionoptions+=buffers,tabpages,winsize,localoptions
" 指定会话文件存储目录,提前手动创建对应目录即可
set sessiondir=~/.vim/sessions/
  1. 按需选择会话插件安装配置即可:
  • 通用Vim/Neovim环境推荐用vim-session,追加两行配置就完成所有设置:
    let g:session_autosave = 1 " 退出Vim时自动保存当前所有状态,包括未命名、未手动保存的标签内容
    let g:session_autoload = 1 " 启动Vim时如果没有指定打开特定文件,自动加载上次退出的会话
    
  • Neovim用户也可以选择auto-session,支持更细粒度的规则配置,比如临时打开单个代码文件时自动跳过笔记会话加载,不会混淆工作场景。
  • 如果只需要临时笔记场景的持久化,可以选更轻量的scratch.vim,所有新建的临时草稿标签内容会自动持久化到本地磁盘,不需要依赖会话机制。

配置完成后即可实现和Notepad++完全一致的使用逻辑:打开新标签直接输入内容,不需要执行保存命令,直接关闭Vim,下次启动时所有内容、标签顺序、光标位置都会完整还原。

内容的提问来源于stack exchange,提问作者rlegendi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 01:01:00