git忽略vim临时文件

什么是正确的方法让git忽略所有目录中的vim产生的临时文件(全局整个系统或本地单个项目)?

Vim临时文件以〜结尾,所以你可以添加到文件.gitignore

 *~ 

Vim也创buildswp和swo扩展名的交换文件。 删除那些使用的行:

 *.swp *.swo 

这将忽略单个项目中的所有vim临时文件

如果您想要在全局范围内执行此操作,则可以在家中创build一个.gitignore文件(可以指定其他名称或位置),然后使用以下命令:

 git config --global core.excludesfile ~/.gitignore 

然后,您只需要将要忽略的文件添加到该文件

或者,您可以configurationvim以将交换文件保存到一个单独的位置,例如,在.vimrc文件中添加类似于以下内容的行:

 set backupdir=$TEMP// set directory=$TEMP// 

看到这个Vim提示更多的信息。

这是应该只在每个用户的基础上完成的,而不是每个存储库。 如果Joe使用emacs,他会希望忽略emacs备份文件,但Betty(使用vi)会想要忽略vi备份文件(在很多情况下,它们是相似的,但是现在大约有24,893个常见的编辑器,它很漂亮可笑的是试图忽略所有的备份扩展。)

换句话说,不要把任何东西放在.gitignorecore.excludes$GIT_DIR/config 。 把信息放在$HOME/.gitconfig (正如nunopolonia用–globalbuild议的--global 。注意“全局”是指每个用户而不是每个系统。

如果您希望跨系统为所有用户进行configuration(您不需要),则需要使用不同的机制。 (可能在初始化存储库之前使用模板设置。)

在“git commit”之前退出vim。

使vim使用其他文件夹作为备份文件(例如/tmp ):

 set bdir-=. set bdir+=/tmp 

使vim停止使用.swp文件的当前文件夹:

 set dir-=. set dir+=/tmp 

使用-=, +=通常会很好,因为vim对bdir有其他默认值,dir ,我们不想全部清除。 查看vim帮助了解关于bdir的更多信息,dir

 :h bdir :h dir 

我也build议考虑忽略这样的文件:

 .*.swp .*.swo 

因为你可能有以.swp

我发现这会让git忽略由vim创build的临时文件:

 [._]*.s[aw][az] [._]s[aw][az] *.un~ Session.vim .netrwhist *~ 

它也可以在这里查看。

 # VIM: Temperory files *~ # VIM: Swap-files [._]*.s[aw][az] [._]s[aw][az] # VIM: Commands :cs, :ctags tags cscope.* # VIM session Session.vim # VIM: netrw.vim: Network oriented reading, writing, browsing (eg: ftp scp) .netrwhist 

交换文件的名称通常与您正在编辑的文件相同,扩展名为“.swp”。

  • 在Unix上,一个'。' 被预置为交换与编辑的文件相同的目录中的文件名。 这可以避免交换文件出现在目录列表中。
  • 在MS-DOS机器上,当“短名称”选项打开时,任何“。” 在原始文件名称被replace为'_'。
  • 如果这个文件已经存在(例如,当你从崩溃中恢复),则会发出警告,并使用另一个扩展名“.swo”,“.swn”等。
  • 现有的文件将不会被覆盖。
  • 一旦Vim停止编辑文件,交换文件将被删除。

replace'。' '_'是为了避免与MS-DOS兼容的文件系统(例如,crossdos,multidos)的问题。

http://vimdoc.sourceforge.net/htmldoc/recover.html

http://www.vim.org/scripts/script.php?script_id=1075

以下是生成交换文件扩展名的实际VIM代码:

 /* * Change the ".swp" extension to find another file that can be used. * First decrement the last char: ".swo", ".swn", etc. * If that still isn't enough decrement the last but one char: ".svz" * Can happen when editing many "No Name" buffers. */ if (fname[n - 1] == 'a') /* ".s?a" */ { if (fname[n - 2] == 'a') /* ".saa": tried enough, give up */ { EMSG(_("E326: Too many swap files found")); vim_free(fname); fname = NULL; break; } --fname[n - 2]; /* ".svz", ".suz", etc. */ fname[n - 1] = 'z' + 1; } --fname[n - 1]; /* ".swo", ".swn", etc. */ 

这将生成格式的交换文件:

 [._]*.s[av][az] [._]*.sw[ap] [._]s[av][az] [._]sw[ap] 

这几乎是github自己的gitignore文件中包含的VIM 。

正如其他人已经正确指出,这个.gitignore也将忽略.svg图像文件和.swf Adobe Flash文件。

当然,

只需在您的项目的主目录上创build一个“.gitignore”,并且必须包含

 *.swp 

而已

在一个命令

 project-home-directory$ echo '*.swp' >> .gitignore 

如果您正在使用源代码pipe理。 vim的临时文件是相当无用的。
所以你可能要configurationvim不要创build它们。

只要编辑你的〜/ .vimrc并添加这些行:

 set nobackup set noswapfile