Git игнорировать временные файлы vim

Каков правильный способ сделать git игнорировать временные файлы, созданные vim во всех каталогах (либо глобально через систему, либо локально для одного проекта)?

Ответ 1

Временные файлы Vim заканчиваются на ~, поэтому вы можете добавить в файл .gitignore строку

*~

Vim также создает файлы подкачки с расширениями swp и swo. для удаления используйте строки:

*.swp
*.swo

Это будет игнорировать все временные файлы vim в одном проекте

Если вы хотите сделать это глобально, вы можете создать файл .gitignore в своем доме (вы можете указать его другое имя или местоположение) и использовать следующую команду:

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

Затем вам просто нужно добавить файлы, которые вы хотите игнорировать, в этот файл

Ответ 2

В качестве альтернативы вы можете сконфигурировать vim для сохранения файлов .vimrc в отдельном месте, например, добавив строки, аналогичные приведенным ниже, в ваш файл .vimrc:

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

Смотрите этот совет vim для получения дополнительной информации.

Ответ 3

Это то, что должно выполняться только для каждого пользователя, а не для каждого репозитория. Если Joe использует emacs, он захочет, чтобы файлы резервных копий emacs игнорировались, но Betty (кто использует vi) захочет игнорировать файлы резервных копий vi (во многих случаях они похожи, но существует около 24 893 общих редакторов, и это довольно смешно пытаться игнорировать все различные резервные расширения.)

Другими словами, не помещайте ничего в .gitignore или в core.excludes в $GIT_DIR/config. Поместите информацию в $HOME/.gitconfig вместо этого (как предлагает nunopolonia с --global.) Обратите внимание, что "глобальный" означает для каждого пользователя, а не для каждой системы.

Если вам нужна настройка для всей системы для всех пользователей (чего у вас нет), вам понадобится другой механизм. (Возможно, с настройкой шаблонов до инициализации репозитория.)

Ответ 4

Я также рекомендую подумать, чтобы игнорировать такие файлы, как:

.*.swp
.*.swo

поскольку у вас могут быть файлы, заканчивающиеся на .swp

Ответ 5

Закройте vim до "git commit".

сделать vim использовать другие папки для файлов резервных копий, (/tmp например):

set bdir-=.
set bdir+=/tmp

чтобы vim остановил использование текущей папки для .swp файлов:

set dir-=.
set dir+=/tmp

Использовать -=, += было бы хорошо, потому что vim имеет другие значения по умолчанию для bdir, dir, мы не хотим очищать все. Проверить vim help для получения дополнительной информации о bdir, dir:

:h bdir
:h dir

Ответ 6

Я обнаружил, что это будет git игнорировать временные файлы, созданные vim:

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

Здесь также можно просмотреть здесь.

Ответ 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]

Это в значительной степени то, что включено в gitub собственный файл gitignore для VIM.

Как правильно отметили другие, этот .gitignore также игнорирует файлы .vv и . swf Adobe Flash файлы.

Ответ 8

# 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, a. добавляется к замене имен файлов в том же каталоге, что и отредактированный файл. Это позволяет избежать того, что файл подкачки отображается в список каталогов.
  • На компьютерах 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

Ответ 9

Конечно,

просто нужно создать ".gitignore" в домашнем каталоге вашего проекта и должны содержать

*.swp

что он

в одной команде

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

Ответ 10

В моем случае временные файлы уже зафиксированы предыдущими действиями, поэтому изменение.gitignore не повлияет на эти закомментированные файлы... вы должны git rm files_to_be_ignored --cache выполнить git rm files_to_be_ignored --cache, а затем зафиксировать, а затем DONE.

Ответ 11

Если вы используете источник управления. Файлы vim temp совершенно бесполезны.
Таким образом, вы можете настроить vim, чтобы не создавать их.

Просто отредактируйте свой файл ~/.vimrc и добавьте следующие строки:

set nobackup
set noswapfile