菜单

其他文本编辑器

相关源文件

目的与范围

本文档提供了针对主流文本编辑器(不包括功能齐全的集成开发环境)的 gitignore 模式的详细说明。它涵盖了 Sublime Text、Vim、Emacs 以及其他轻量级代码编辑器,并解释了在使用这些工具时应从版本控制中排除的文件和目录。有关特定于集成开发环境的 gitignore 模式的信息,请参阅 Visual Studio and .NETJetBrains IDEsEclipse and Java Development

文本编辑器概述

文本编辑器通常会生成各种临时、缓存和用户特定配置文件,这些文件应从版本控制中排除。虽然比功能齐全的集成开发环境简单,但这些编辑器仍会创建不应包含在共享存储库中的文件。

常见文件类别

文本编辑器文件排除图

来源:Global/Vim.gitignore1-19 Global/Emacs.gitignore1-9 Global/SublimeText.gitignore1-31

Emacs

Emacs是一款高度可定制的文本编辑器,其扩展功能基于其专有的 Lisp 方言(Emacs Lisp)。Emacs gitignore 模板排除了几类文件。

Emacs 关键排除模式

模式描述目的
*~备份文件自动创建的备份文件
\#*\#自动保存文件编辑时创建,以防止数据丢失
.emacs.desktop桌面会话在会话之间维护打开的缓冲区
*.elc已编译的 Elisp字节码编译的 Emacs Lisp 文件
/elpa/软件包目录从 Emacs 包管理器安装的软件包
/auto/AUCTeX 自动文件夹自动生成的 TeX 样式文件
.dir-locals.el目录设置特定于目录的 Emacs 设置

Emacs 还为各种内置子系统提供了特定的排除项

  • Org-mode 文件(.org-id-locations, *_archive
  • Flymake 语法检查(*_flymake.*
  • Eshell 历史记录(/eshell/history, /eshell/lastdir
  • Flycheck(flycheck_*.el
  • 服务器认证(/server/
  • 项目管理(.projectile
  • 网络安全数据(/network-security.data

来源:Global/Emacs.gitignore1-50

Sublime Text

Sublime Text 是一款流行的轻量级代码编辑器,可通过插件实现高度可定制。其 gitignore 模板侧重于排除用户特定文件和包管理数据。

Sublime Text 关键排除模式

模式描述目的
*.sublime-workspace工作区状态用户特定文件,包含打开的文件、光标位置
*.tmlanguage.cache语言缓存用于语法高亮定义的缓存文件
Package Control.*包控制包管理元数据和缓存文件
sftp-config.jsonSFTP 配置包含敏感服务器详细信息和凭证
GitHub.sublime-settingsGitHub 集成包含 GitHub 认证令牌

Sublime Text 模板明确指出,项目文件(*.sublime-project)通常应包含在存储库中,除非大部分贡献者不使用 Sublime Text。

来源:Global/SublimeText.gitignore1-31

Vim

Vim(和 Neovim)在编辑过程中会创建各种临时和交换文件,以提供诸如崩溃恢复等功能。Vim gitignore 模板排除了这些文件。

Vim 关键排除模式

模式描述目的
[._]*.s[a-v][a-z], [._]*.sw[a-p]交换文件编辑过程中创建,用于崩溃恢复
Session.vim, Sessionx.vim会话文件存储窗口布局和打开的缓冲区
.netrwhist文件浏览器历史记录内置文件浏览器的历史记录
*~备份文件保存文件时创建
tags标签文件用于代码导航
[._]*.un~撤销文件持久化撤销历史记录

Vim 模板包含复杂的模式匹配,以捕获所有可能的交换文件命名约定,这些约定可能因编辑器的配置而异。

来源:Global/Vim.gitignore1-20

文本编辑器与开发工作流的集成

文本编辑器文件生成工作流

来源:Global/Vim.gitignore1-20 Global/Emacs.gitignore1-50 Global/SublimeText.gitignore1-31

文本编辑器 gitignore 模式比较

文本编辑器 gitignore 模式比较

来源:Global/Vim.gitignore1-20 Global/Emacs.gitignore1-48 Global/SublimeText.gitignore1-31

编辑器间的常见模式类别

尽管在功能和架构上存在差异,文本编辑器在应从版本控制中排除的文件类别上存在共性。

  1. 临时文件:编辑会话期间创建的、不打算持久化的文件

    • Vim 交换文件([._]*.sw[a-p]
    • Emacs 自动保存文件(\#*\#
  2. 用户特定配置:在开发者之间有所不同的设置

    • Sublime Text 工作区(*.sublime-workspace
    • Emacs 桌面文件(.emacs.desktop
    • Vim 会话文件(Session.vim
  3. 缓存文件:为提高性能而生成的文件

    • Sublime Text 语言缓存(*.tmlanguage.cache
    • Emacs 字节码文件(*.elc
  4. 备份文件:为防止数据丢失而创建的副本

    • Vim 和 Emacs 备份文件(*~
  5. 包/插件数据:与编辑器扩展相关的​​文件

    • Sublime Text 包控制文件(Package Control.*
    • Emacs 包目录(/elpa/

来源:Global/Vim.gitignore1-20 Global/Emacs.gitignore1-48 Global/SublimeText.gitignore1-31

系统特定注意事项

在使用文本编辑器时,请注意某些操作系统文件可能会干扰您的工作流程。这些文件也应被排除

macOS 文件

macOS 会创建诸如 .DS_Store 和资源分叉(.AppleDouble)之类的系统文件,它们不应出现在存储库中,并且在跨操作系统共享时可能会引起问题。

模式描述
.DS_Store文件系统元数据存储
._*资源分叉元数据文件
.AppleDouble附加资源元数据

来源:Global/macOS.gitignore1-27

存档文件和文本编辑器

一些文本编辑器具有创建用于备份或项目共享目的的存档文件的功能。这些存档通常应被排除。

扩展描述
*.zipZIP 存档,有时用于备份
*.gz, *.bz2压缩文件
*.tar磁带存档

来源:Global/Archives.gitignore1-34

最佳实践

  1. 使用特定模板:将合适的文本编辑器 gitignore 模板与您的编程语言和操作系统模板结合使用。

  2. 考虑团队多样性:如果团队成员使用不同的编辑器,请包含所有编辑器的 gitignore 模式。

  3. 项目文件:与工作区文件不同,项目定义文件通常应包含在存储库中(例如 Sublime Text 的 *.sublime-project 文件)。

  4. 安全性:始终排除可能包含敏感信息的文件,例如 SFTP 配置或身份验证令牌。

  5. 定期更新:随着编辑器发布新版本,它们可能会创建需要排除的新类型文件。请保持您的 gitignore 模板最新。

来源:Global/SublimeText.gitignore9-11 Global/SublimeText.gitignore29-31