268

すべてのディレクトリ (システム全体でグローバルに、または単一のプロジェクトに対してローカルに) で vim によって生成された一時ファイルを git に無視させる正しい方法は何ですか?

4

12 に答える 12

429

.gitignoreVim 一時ファイルは ~ で終わるため、ファイルに次の行を追加できます

*~

Vim は、swp および swo 拡張子を持つスワップ ファイルも作成します。それらを削除するには、次の行を使用します。

*.swp
*.swo

これにより、単一のプロジェクト内のすべての vim 一時ファイルが無視されます

グローバルに実行する場合は、ホームに .gitignore ファイルを作成し (別の名前または場所を指定できます)、次のコマンドを使用します。

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

次に、無視したいファイルをそのファイルに追加するだけです

于 2011-01-28T02:16:39.973 に答える
126

.vimrcまたは、次のような行をファイルに追加するなどして、スワップファイルを別の場所に保存するように vim を構成することもできます。

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

詳細については、このvim のヒントを参照してください。

于 2011-01-28T04:15:03.630 に答える
28

これは、リポジトリごとではなく、ユーザーごとにのみ実行する必要があります。Joe が emacs を使用している場合、彼は emacs バックアップ ファイルを無視したいと考えていますが、Betty (vi を使用している) は vi バックアップ ファイルを無視したいと考えています (多くの場合、それらは似ていますが、約 24,893 の一般的なエディターが存在し、非常に便利です)。さまざまなバックアップ拡張機能をすべて無視しようとするのはばかげています。)

.gitignoreつまり、 inまたは incore.excludesには何も入れないでください$GIT_DIR/config。代わりに情報を入れてください$HOME/.gitconfig(nunopolonia が で示唆しているように--global)。「グローバル」とは、システムごとではなく、ユーザーごとを意味することに注意してください。

すべてのユーザーに対してシステム全体の構成が必要な場合 (必要ありません)、別のメカニズムが必要になります。(おそらく、リポジトリの初期化前にテンプレートをセットアップします。)

于 2011-01-31T11:25:09.323 に答える
7

スワップ ファイル拡張子を生成する実際の 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]

これは、 VIM用の github 独自の gitignore ファイルに含まれているものとほとんど同じです。

他の人が正しく指摘しているように、この .gitignore は.svg画像ファイルと.swf adobe flash ファイルも無視します。

于 2016-11-29T15:55:25.780 に答える
5

「git commit」の前に vim を終了します。

vimバックアップファイル用に他のフォルダーを使用するには (例/tmp):

set bdir-=.
set bdir+=/tmp

.swp ファイルの現在のフォルダーの使用を vim に停止させるには:

set dir-=.
set dir+=/tmp

vimにはbdir、dirの他のデフォルトがあり、すべてをクリアしたくないため、使用-=, +=は一般的に良いでしょう。bdir、dirの詳細については、vim のヘルプを確認してください。

:h bdir
:h dir
于 2012-03-22T08:20:16.833 に答える
4
# 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 マシンで、'shortname' オプションがオンの場合、任意の '.' 元のファイル名の '_' に置き換えられます。
  • このファイルが既に存在する場合 (たとえば、クラッシュから回復している場合)、警告が表示され、別の拡張子 (「.swo」、「.swn」など) が使用されます。
  • 既存のファイルが上書きされることはありません。
  • スワップ ファイルは、Vim がファイルの編集を停止するとすぐに削除されます。

「.」の置換 MS-DOS 互換ファイルシステム (たとえば、crossdos、multidos) での問題を回避するために、'_' を使用します。

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

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

于 2016-06-25T00:54:56.500 に答える
3

これにより、vimによって作成された一時ファイルをgitが無視することがわかりました:

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

こちら からもご覧いただけます

于 2013-12-30T16:05:54.600 に答える
2

承知しました、

プロジェクトのホームディレクトリに「.gitignore」を作成し、含める必要があります

*.swp

それでおしまい

1つのコマンドで

project-home-directory$ echo '*.swp' >> .gitignore
于 2011-01-28T02:17:26.693 に答える
0

私の場合、一時ファイルは以前のアクションによって既にコミットされているため、.gitignore を変更しても、それらのコミットされたファイルには影響しません...git rm files_to_be_ignored --cache最初にコミットし、次に完了する必要があります。

于 2018-12-18T01:36:48.593 に答える
-5

ソース管理を使用している場合。vim 一時ファイルはまったく役に立ちません。
そのため、それらを作成しないように vim を構成することをお勧めします。

~/.vimrc を編集して以下の行を追加してください:

set nobackup
set noswapfile
于 2011-01-28T02:32:53.227 に答える