Learn Vim 第二十章:视图、会话和 Viminfo

Learn Vim 第二十章:视图、会话和 Viminfo

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

本文介绍Vim中视图、会话和Viminfo三种保存项目“快照”的方法。视图保存单个窗口设置,会话保存所有窗口布局,Viminfo存储历史记录和寄存器等内部数据。文章详细说明了各自的配置属性、保存加载命令及自动创建方法,并建议微型项目用视图,大型项目用会话,以在不同计算机间快速恢复工作环境。

🔎

延伸解读

三者的定位与选择

视图、会话和Viminfo分别对应不同粒度的保存需求:视图只保存单个窗口的设置,适合微型项目;会话保存所有窗口布局,适合大型项目;而Viminfo则保存历史记录和寄存器等内部数据,通常每台计算机只需一个。理解它们的差异有助于按需使用,避免混淆。

自动化的便利与风险

文章提供了自动创建视图的示例,通过autocmd在离开和进入缓冲区时自动保存和加载视图。这种自动化可以提升效率,但需注意可能带来的副作用,例如意外覆盖视图或加载不期望的设置。建议在特定文件类型或项目中谨慎使用,并定期清理不必要的视图文件。

跨设备迁移的注意事项

文章提到通过加载设置可以在不同计算机间快速恢复工作环境。但需注意,会话和Viminfo可能包含路径相关的信息,如当前目录或文件标记,直接迁移可能因路径不同而失效。建议在迁移前检查并调整相关配置,或使用相对路径和通用设置。

Q&A

Vim中视图、会话和Viminfo分别保存什么?

视图保存单个窗口的设置(如折叠、光标位置);会话保存所有窗口的布局和设置;Viminfo保存历史记录、寄存器内容、标记等内部数据。

如何在Vim中保存和加载视图?

使用:mkview保存视图,:loadview加载视图。可以指定编号(1-9),例如:mkview 1和:loadview 1。

如何自动保存和加载Vim视图?

通过autocmd实现,例如:autocmd BufWinLeave *.txt mkview 和 autocmd BufWinEnter *.txt silent loadview。

Vim会话的创建和加载命令是什么?

在Vim内使用:mksession保存会话到Session.vim,使用:source Session.vim加载;也可以在终端用vim -S Session.vim启动时加载。

Vim的sessionoptions默认包含哪些选项?

默认包含blank,buffers,curdir,folds,help,tabpages,winsize,terminal。

Viminfo存储哪些内容?

Viminfo存储命令行历史、搜索历史、输入行历史、非空寄存器内容、多个文件的标记、文件标记、上次搜索/替换模式、缓冲区列表和全局变量。

如何读写自定义Viminfo文件?

使用:wv ~/.viminfo_extra写入,:rv ~/.viminfo_extra读取;启动Vim时可用vim -i viminfo_extra指定不同的Viminfo文件。

Vim的viminfo选项默认值是什么?

默认值为!,'100,<50,s10,h,分别表示保存大写全局变量、保存最近100个文件的标记、每个寄存器最多50行、寄存器大小限制10kb、禁用高亮。

在Vim中,微型项目和大型项目分别适合使用哪种快照方式?

微型项目适合使用视图,大型项目适合使用会话。

🏷️

标签

➡️

继续阅读