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个常见的编辑器,它很漂亮可笑的是试图忽略所有的备份扩展。)
换句话说,不要把任何东西放在.gitignore
或core.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)的问题。
以下是生成交换文件扩展名的实际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