Vim的临时文件以~结尾,因此你可以在文件.gitignore
中添加以下行:
*~
Vim还会创建一些扩展名为swp和swo的交换文件,可以使用以下命令删除:
*.swp
*.swo
这将忽略单个项目中的所有vim临时文件。
如果您想要全局地这样做,可以在您的主目录中创建一个.gitignore文件(您可以为其指定其他名称或位置),并使用以下命令:
git config --global core.excludesfile ~/.gitignore
你只需要将想要忽略的文件添加到那个文件中即可。
如果您想在 Git 文件中进行注释,必须在单独的一行上执行此操作:
# Ignore vim files:
*~
*.swp
*.swo
在与活动的 git ignore 相同行的任何注释都会导致整行被错误解释。
.*.sw*
将它们全部隐藏起来。 - Drew Stephens.*.sw?
更准确。(虽然我见过有人使用类似*.sw*
的变体怀疑我是那个错过了某些非常明显的东西的人...) - Morten Siebuhr.*.s[a-w][a-z]
将会忽略掉 .svg
文件。 - Jon或者你可以配置 vim 将 swap 文件保存到单独的位置,例如通过在你的 .vimrc
文件中添加类似以下行:
set backupdir=$TEMP//
set directory=$TEMP//
查看此vim技巧以获取更多信息。
$TEMP
是什么意思? - themefieldset undodir=$TEMP//
,因为我还保存持久的撤消文件。 - Micah Lindstrom这应该只在个人用户级别上进行,而不是每个仓库。如果Joe使用emacs,他将希望忽略emacs备份文件,但Betty(使用vi)将希望忽略vi备份文件(在很多情况下它们是相似的,但存在大约24,893个常见的编辑器,试图忽略所有这些备份扩展名是相当荒谬的)。
换句话说,不要在.gitignore或core.excludes或$GIT_DIR/config中加入任何内容。改为将信息放在$HOME/.gitconfig中(正如nunopolonia建议的那样,使用--global)。请注意,“全局”表示针对个人用户而非整个系统。
如果您想要跨系统为所有用户进行配置(实际上您不需要),则需要使用不同的机制。(可能需要在初始化存储库之前设置模板。)
我建议考虑忽略以下文件:
.*.swp
.*.swo
你可能拥有以.swp
结尾的文件。
这里是实际的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[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-v][a-z]
[._]sw[a-p]
在“git commit”之前退出vim。
要使vim
使用其他文件夹进行备份文件(例如/tmp
):
set bdir-=.
set bdir+=/tmp
停止使用当前文件夹作为.vim临时文件的存储位置:
set dir-=.
set dir+=/tmp
使用 -=, +=
通常是不错的选择,因为 vim 对于 bdir, dir 有其他默认设置,我们并不想清除所有设置。更多关于 bdir, dir 的信息请查阅 vim 帮助文档:
:h bdir
:h dir
# VIM: Temperory files
*~
# VIM: Swap-files
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# VIM: Commands :cs, :ctags
tags
cscope.*
# VIM session
Session.vim
# VIM: netrw.vim: Network oriented reading, writing, browsing (eg: ftp scp)
.netrwhist
我发现以下内容可以让Git忽略Vim创建的临时文件:
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
这个文件可以在 这里 查看。
.swf
文件,这些文件在制作Flash应用程序时经常弹出。 - stephenmurdoch.svg
,这可能会成为一个问题。 - Bruno Bronosky*.un~
是多余的,因为你已经有了 *~
。 - Bruno Bronosky*.swp
一条命令搞定
只需一条命令即可完成
project-home-directory$ echo '*.swp' >> .gitignore
echo *.swp >> .gitignore
更好,可以避免覆盖之前的 .gitignore 文件。 - Cesar A. Rivasecho '*.swp' >> .gitignore
。 - Eddified>
字符。我曾经在passwd
文件中犯过这样的错误,然后登出了 :-) - paxdiablo
*.sw?
这个模式可以解决标准的.swp
,也包括一些备选的交换文件扩展名比如.swo
。 - buley.tmp.swp
、.tmp.swo
、……、.tmp.swa
)之后,vim会创建.tmp.svz
。我没有耐心去看.tmp.saa
之后会出现什么——也许是.tmp.rzz
?更新:查看源代码(src/memline.c
,函数findswapname()
),发现在.saa
之后会因为错误" E326:找到太多的交换文件 "而放弃创建备份文件。 - Keith Thompsonenew
会创建.swp
文件。 - D. Ben Knoble