자식은 vim 임시 파일을 무시


238

git이 모든 디렉토리에서 (시스템 전체 또는 단일 프로젝트를 위해 로컬로) vim에 의해 생성 된 임시 파일을 무시하도록하는 올바른 방법은 무엇입니까?


6
이 패턴 *.sw?은 표준 .swp뿐만 아니라와 같은 대체 스왑 파일 확장자를 해결합니다 .swo.
buley

7
@buley 귀하의 제안은 .swf파일 도 무시 합니다. 특히 Flash 앱을 제작하는 경우에는 그렇게하지 않는 것이 좋습니다.
stephenmurdoch '12

1
@marflar 좋은 지적입니다. .그러나 숨겨진 파일 이 접두어로 붙은 동일한 패턴 은이를 방지해야합니다.
buley

오늘도 .swx를 보았습니다.
Richard

2
16 개 백업 파일을 생성 한 후 (즉 실험 방송 .tmp.swp, .tmp.swo, ..., .tmp.swa), 정력 생성 .tmp.svz. 나는 다음에 오는 것을 볼 수있는 인내심이 부족 .tmp.saa아마도 - .tmp.rzz? 업데이트 : 소스 ( src/memline.c, function findswapname())를 보면 .saa"E326 : 스왑 파일이 너무 많습니다"라는 오류가 발생 하면 포기 합니다.
키이스 톰슨

답변:


391

Vim 임시 파일은 ~로 끝나므로 파일 .gitignore에 줄을 추가 할 수 있습니다

*~

Vim은 swp 및 swo 확장자를 가진 스왑 파일도 만듭니다. 그것들을 제거하려면 다음 줄을 사용하십시오.

*.swp
*.swo

이것은 단일 프로젝트의 모든 vim 임시 파일을 무시합니다.

전역 적으로 수행하려면 집에서 .gitignore 파일을 만들고 (다른 이름이나 위치를 지정할 수 있음) 다음 명령을 사용할 수 있습니다.

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

그런 다음 무시하려는 파일을 해당 파일에 추가하기 만하면됩니다.


30
내가 사용하는, 그래서 빔은 연속적라는 이름의 스왑 파일 (.swp, .swo 등)이 만들어집니다 .*.sw*내에서 .gitignore그들 모두를 숨 깁니다.
Drew Stephens

32
@DrewStephens, 나는 .*.sw?더 정확 하다고 생각 합니다. (내가 본 사람들 중 일부 변형을 사용했습니다하지만 *.sw*의심 나는 ... 정말 분명 하나 뭔가 빠진 해요)
모르 텐 Siebuhr

10
따르면 @Morten vimdoc.sourceforge.net/htmldoc/recover.html . *. S ?? 유닉스 (.swp에서 .saa로 .s ?? 감소)에서 모두 잡을 것입니다.
맥스 나나시

6
@MatrixFrog 우수 의견을 조금만 확장하면이 질문은 vim에 대한 것이므로 해당 프로젝트에서 올바른 .gitignore를 찾을 수 있습니다 .
SnapShot

17
조심해. github .*.s[a-w][a-z].svg파일 을 무시 합니다.
Jon

118

또는 다음과 유사한 행을 .vimrc파일 에 추가하여 스왑 파일을 별도의 위치에 저장하도록 vim을 구성 할 수 있습니다 .

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

자세한 내용은이 vim 팁 을 참조하십시오.


8
참고, Mac OS X에서는 $TMPDIR실제 tempdir을 얻는 데 사용할 수 있습니다 :)
Alex Moore-Niemi

5
선호하는 디렉토리 뒤의 이중 슬래시 (~ ​​/ tmp // 사용)는 전체 경로를 저장하여 파일 이름 충돌을 방지합니다. 이렇게하면 두 디렉토리의 config.xml과 같은 파일을 동시에 편집 할 수 있습니다.
Brian

1
무슨 $TEMP뜻입니까?
테마 필드

참고 set undodir=$TEMP//영구 실행 취소 파일도 저장하기 때문에을 추가해야했습니다 .
Micah Lindstrom

24

이는 리포지토리가 아닌 사용자별로 만 수행해야하는 작업입니다. Joe가 emacs를 사용하는 경우 emacs 백업 파일을 무시하고 싶지만 vi를 사용하는 Betty는 vi 백업 파일을 무시하고 싶을 것입니다. 다양한 백업 확장 프로그램을 모두 무시하려고 우스운 일입니다.)

즉, 아무것도 넣지 마십시오 .gitignore나에 core.excludes에서 $GIT_DIR/config. $HOME/.gitconfig대신 nunopolonia가 제안한대로 정보를 입력 --global하십시오. "전역"은 시스템 별이 아니라 사용자 별을 의미합니다.

모든 사용자에 대해 시스템 전체에서 구성을 원한다면 (다른 사용자도) 다른 메커니즘이 필요합니다. 리포지토리를 초기화하기 전에 템플릿을 설정했을 수 있습니다.


3
분명히 Betty는 Joe보다 훨씬 똑똑합니다. :) 좋은 조언과 투표를받을 자격이 있습니다. 마티 클의 대답을 사용하여 끝났지 만 (Git 대신 Vim에 고정).
paxdiablo


5

"git commit"전에 vim을 종료하십시오.

메이크업에 vim(백업 파일을 다른 폴더를 사용하는 /tmp예를 들어)

set bdir-=.
set bdir+=/tmp

vim에서 .swp 파일의 현재 폴더 사용을 중지하려면 :

set dir-=.
set dir+=/tmp

-=, +=vim은 bdir, dir에 대한 다른 기본값을 가지고 있기 때문에 일반적으로 사용하는 것이 좋으며, 모든 것을 지우고 싶지는 않습니다. bdir, dir 에 대한 자세한 내용은 vim help를 확인하십시오 .

:h bdir
:h dir

5
vim 스왑 파일을 저장할 위치에주의하십시오. 실수로 편집중인 파일에서 자격 증명 또는 기타 데이터를 유출 할 수 있습니다. security.stackexchange.com/questions/65883/…
Mnebuerquo

5

스왑 파일 확장자를 생성하는 실제 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 플래시 파일 도 무시 합니다.


3

나는 이것이 git vim에 의해 생성 된 임시 파일을 무시한다는 것을 알았다

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

여기 에서도 볼 수 있습니다 .


5
.swf플래시 앱을 만들 때마다 계속 나타나는 성가신 파일 도 무시 합니다.
stephenmurdoch '

어떤 당신이 당신의 플래시 파일 :-) 체크 할 필요가 개발자하지 않은만큼 잘 작동
paxdiablo

1
.svg문제가 될 수있는 것을 무시 합니다.
Bruno Bronosky

1
포함하는 중복 *.un~당신이 있기 때문에*~
브루노 Bronosky

2

확실한,

프로젝트의 홈 디렉토리에 ".gitignore"를 작성해야하며

*.swp

그게 다야

하나의 명령으로

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

4
내가 생각하는 echo *.swp >> .gitignore더 나은 이전 .gitignore의 재정의를 방지하기 위해.
Cesar A. Rivas

2
쉘이 '*'를 확장하는 것을 원하지 않습니다. 따라서echo '*.swp' >> .gitignore
Eddified

또한 실수로 해당 >문자 중 하나를 놓치고 싶지 않습니다 . 나는 한 번 passwd파일에 그런 다음 로그 아웃 :-)
paxdiablo

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"인 편집중인 파일과 동일합니다.

  • 유닉스에서는 '.' 편집 된 파일과 동일한 디렉토리에 파일 이름을 교환하기 위해 앞에 붙습니다. 그러면 스왑 파일이 디렉토리 목록에 표시되지 않습니다.
  • MS-DOS 시스템 및 'shortname'옵션이 켜져 있으면 '.' 원래 파일 이름에서 '_'로 바뀝니다.
  • 이 파일이 이미 존재하는 경우 (예 : 충돌에서 복구 할 때) 경고가 표시되고 ".swo", ".swn"등의 다른 확장자가 사용됩니다.
  • 기존 파일을 덮어 쓰지 않습니다.
  • 스왑 파일은 Vim이 파일 편집을 중지하자마자 삭제됩니다.

'.'의 대체 '_'는 MS-DOS 호환 파일 시스템 (예 : 크로스 도스, 멀티 도스)의 문제를 피하기 위해 수행됩니다.

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

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


0

myy 경우 임시 파일은 이미 이전 작업으로 커밋되었으므로 .gitignore를 수정해도 커밋 된 파일에는 영향을 미치지 않습니다 ... git rm files_to_be_ignored --cache먼저 커밋 한 다음 완료해야합니다.


0

Alex Moore-Niemi가 지적한 것처럼 Mac에서 작동합니다.

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

사용 TMPDIR하지 말고 사용하십시오 TEMPDIR.


-4

소스 제어를 사용중인 경우 vim 임시 파일은 매우 쓸모가 없습니다.
따라서 vim을 작성하지 않도록 구성 할 수 있습니다.

~ / .vimrc를 편집하고 다음 줄을 추가하십시오.

set nobackup
set noswapfile

6
소스 제어는 백업 또는 Vim의 스왑 파일과 같은 단위로 작동하지 않습니다. 모든 저장 후 (또는 특정 문자 수 또는 초 후에 Vim의 스왑 파일이 제공하는 단순화) 커밋하더라도 소스 제어되지 않은 파일 (어떤 백업에 대해)을 편집 할 가능성이 여전히 높습니다 스왑 파일이 여전히 바람직합니다).
Chris Johnsen 2012 년

8
VIM 임시 파일은 편집기 충돌 및 기타 여러 가지 이유로 매우 유용합니다. 그것들을 끄는 것은 목욕물로 아기를 버리는 것입니다.
Brian Riehman

5
@Arnis 예를 들어, 정전? 또는 어떤 이유로 X 세션이 죽도록하는 것입니다. vim 임시 파일은 매우 중요한 IMO입니다.
jrdioko

1
@jrdioko X 크래시는 사용하기를 원하는 이유입니다 screen(또는 dtach모든 화면 기능을 원하지 않는 경우). 정전은 UPS에 의해 처리됩니다. 백업은 {모든 중요한 파일을 백업하기 위해 자주 사용하는 소프트웨어}에 의해 수행됩니다. 스왑 파일을 사용하여 이미 편집 된 파일을 편집하려고 할 때 알림을받습니다. 백업으로 N + 1 위를 차지해도 영구 실행 취소가 편리하기 때문에 파일을 손상시키지 않고 취소합니다. 실행 취소 파일 만 중요합니다.
ZyX

5
임시 파일을 완전히 끄는 것보다 다른 곳에 임시 파일을 저장하도록 vim에 지시하는 것이 좋습니다.
Kyle
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.