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