github/gitignore · Global/Vim.gitignore
Vim .gitignore 模板详解
逐一拆解说明 Vim.gitignore 中交换文件的方括号模式([._]*.s[a-v][a-z])、!*.svg 例外,以及会话、undo、tags 文件的规则。
Vim.gitignore 是最积极使用方括号范围模式的模板。Vim 会为每个正在编辑的文件创建 .文件名.swp 交换文件,如果交换文件已存在,就依次改变最后一个字母,使用 .swo、.swn 等新名称。
它没有列举所有可能的扩展名,而是用 [a-v][a-z] 这样的范围一次匹配,但这个范围把 .svg 也包含了进去,因此另有一行用 !*.svg 将其恢复。
逐条规则详解
| 模式 | 忽略什么,为什么忽略 |
|---|---|
[._]*.s[a-v][a-z][._]*.sw[a-p][._]s[a-rt-v][a-z][._]ss[a-gi-z][._]sw[a-p] | 交换文件第一行匹配以点(.)或下划线(_)开头、以 .saa~.svz 结尾的文件。[._]*.sw[a-p] 匹配 .swa~.swp,下面三行匹配像 .swp 这样扩展名前没有文件名的交换文件。 |
!*.svg | SVG 例外[._]*.s[a-v][a-z] 会连 .icon.svg、_logo.svg 这类以点或下划线开头的 SVG 文件也一并忽略,因此重新包含所有 .svg。这是说明规则顺序很重要的例子。 |
Session.vimSessionx.vim | 会话:mksession 保存的窗口布局和已打开缓冲区列表。属于个人工作状态,不共享。 |
[._]*.un~*~ | 撤销与备份启用 undofile 选项时生成的持久 undo 文件,以及 backup 选项的备份文件。 |
.netrwhisttags | netrw 与标签内置文件浏览器 netrw 的访问历史,以及 ctags 生成的标签文件。tags 会同时忽略名称恰好为 tags 的文件和目录。 |
实践中的注意事项
- 由于
tags规则,src/tags/这样的源码目录可能会被忽略。如果有这样的目录,请添加!src/tags/,或把规则收窄为/tags。 - 如果在 Vim 设置中用
set directory=~/.vim/swap//把交换文件集中到一处,项目目录中就根本不会生成交换文件。 - Neovim 也使用相同格式的交换文件,但默认位置是状态目录,因此很少会出现在项目中。
原始模板
Vim.gitignore
# Swap[._]*.s[a-v][a-z]# comment out the next line if you don't need vector files!*.svg[._]*.sw[a-p][._]s[a-rt-v][a-z][._]ss[a-gi-z][._]sw[a-p]# SessionSession.vimSessionx.vim# Temporary.netrwhist*~# Auto-generated tag filestags# Persistent undo[._]*.un~
模板来源: github/gitignore/Global/Vim.gitignore @356fd7b (2026-09-11) · CC0-1.0