すべてのディレクトリ内のvimによって生成された一時ファイルをgitに無視させる正しい方法は何ですか(システム全体でグローバルに、または単一プロジェクトに対してローカルに)?
Vimの一時ファイルは〜で終わるので、ファイル.gitignore
に次の行を追加できます。
*~
Vimは、swpおよびswo拡張子を持つスワップファイルも作成します。それらを削除するには、次の行を使用します。
*.swp
*.swo
これは、単一のプロジェクト内のすべてのvim一時ファイルを無視します
グローバルに実行する場合は、自宅で.gitignoreファイルを作成し(他の名前または場所を指定できます)、次のコマンドを使用できます。
git config --global core.excludesfile ~/.gitignore
次に、無視したいファイルをそのファイルに追加するだけです
または、vimを設定して、スワップファイルを別の場所に保存することもできます。 .vimrc
ファイルに次のような行を追加します。
set backupdir=$TEMP//
set directory=$TEMP//
詳細は vim tip をご覧ください。
これは、リポジトリごとではなく、ユーザーごとにのみ行うべきものです。 Joeがemacsを使用する場合、emacsのバックアップファイルを無視する必要がありますが、Betty(viを使用する)はviのバックアップファイルを無視する必要があります(多くの場合、類似していますが、約24,893の一般的なエディターが存在し、かなりさまざまなバックアップ拡張機能をすべて無視しようとするのはばかげています。)
つまり、.gitignore
やcore.excludes
の$GIT_DIR/config
には何も入れないでください。代わりに情報を$HOME/.gitconfig
に入れてください(nunopoloniaが--global
で示唆しているように)。「グローバル」はシステムごとではなくユーザーごとを意味することに注意してください。
すべてのユーザーに対してシステム全体の構成が必要な場合(そうしない場合)、別のメカニズムが必要になります。 (おそらく、リポジトリーの初期化の前にテンプレートがセットアップされています。)
次のようなファイルを無視することもお勧めします。
.*.swp
.*.swo
.swp
で終わるファイルがある場合があるため
「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
ここ は、スワップファイル拡張子を生成する実際の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フラッシュファイルも無視します。
私はこれがgitがvimによって作成された一時ファイルを無視することを発見しました:
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
*.un~
Session.vim
.netrwhist
*~
表示することもできます ここ 。
# 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.
確かに、
プロジェクトのホームディレクトリに「.gitignore」を作成し、含める必要があります。
*.swp
それでおしまい
1つのコマンドで
project-home-directory$ echo '*.swp' >> .gitignore
私の場合、一時ファイルは前のアクションによって既にコミットされているため、.gitignoreを変更してもコミットされたファイルには影響しません...、最初にgit rm files_to_be_ignored --cache
、次にコミットしてからDONEにする必要があります。