git忽略vim临时文件

时间:2011-01-28 02:13:57

标签: git vim ignore temporary-files

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

12 个答案:

答案 0 :(得分:360)

Vim临时文件以〜结尾,因此您可以将行添加到文件.gitignore

*~

Vim还会创建具有swp和swo扩展名的交换文件。删除那些使用行:

*.swp
*.swo

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

如果您想全局创建,可以在家中创建.gitignore文件(您可以为其指定其他名称或位置),并使用以下命令:

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

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

答案 1 :(得分:111)

或者,您可以将vim配置为将交换文件保存到单独的位置, 例如通过在.vimrc文件中添加类似以下内容的行:

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

有关详细信息,请参阅此vim tip

答案 2 :(得分:22)

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

换句话说,请勿在{{1​​}}中的.gitignorecore.excludes中添加任何内容。将信息放在$GIT_DIR/config中(如nunopolonia建议使用$HOME/.gitconfig。)请注意,“global”表示每个用户,而不是每个系统。

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

答案 3 :(得分:9)

我还建议您忽略以下文件:

.*.swp
.*.swo

因为您的文件可能以.swp

结尾

答案 4 :(得分:5)

在“git commit”之前退出vim。

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

set bdir-=.
set bdir+=/tmp

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

set dir-=.
set dir+=/tmp

使用 -=, += 通常会很好,因为vim还有 bdir,dir 的其他默认值,我们不想全部清除。有关 bdir,dir

的更多信息,请查看vim帮助
:h bdir
:h dir

答案 5 :(得分:3)

我发现这将有git忽略由vim创建的临时文件:

[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~

也可以查看here

答案 6 :(得分:3)

Here是生成交换文件扩展名的实际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]

这就是github自己的VIM gitignore文件所包含的内容。

正如其他人正确指出的那样,此.gitignore也会忽略.svg图像文件和.swf adobe Flash文件。

答案 7 :(得分:2)

# 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
  

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

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

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

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

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

答案 8 :(得分:1)

确定,

只需在项目的主目录中创建“.gitignore”即可 并且必须包含

*.swp

就是这样

在一个命令中

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

答案 9 :(得分:0)

在以前的情况下,临时文件已经由先前的操作提交,因此修改.gitignore不会影响这些提交的文件...,您必须先git rm files_to_be_ignored --cache,然后提交,然后完成。

答案 10 :(得分:0)

这在Alex Moore-Niemi指出的Mac上适用:

set backupdir=$TMPDIR//
set directory=$TMPDIR//

请确保使用TMPDIR而不是TEMPDIR

答案 11 :(得分:-4)

如果您正在使用源代码管理。 vim临时文件很没用 所以你可能想要配置vim不要创建它们。

只需编辑您的〜/ .vimrc并添加以下行:

set nobackup
set noswapfile