조금 더 간단한 방법

조금 더 간단한 방법

때때로 Vim이 충돌하여 스왑 파일을 남깁니다. 정말 대단해요. 그런 다음 편집 중이던 파일을 열면 Vim이 복구할 것인지 묻습니다. 그렇죠. 감사합니다. 작업이 완료되면 Vim이 나에게 이렇게 말했습니다.

You may want to delete the .swp file now.

네, 그렇습니다. 어떻게 해야 하나요? 나는 이전 스왑 파일을 다시 스왑 파일로 사용하기 시작하고 종료할 때 정리할 것이라고 생각했지만 사실이 아닙니다. 새 파일을 만들고 정리한 후 파일을 다시 열면 첫 번째 파일에서 복구하라는 메시지가 다시 표시됩니다.

확실히 나는 뭔가를 놓치고 있습니다.

답변1

조금 더 간단한 방법

터미널 에뮬레이터에서:

$ vim filename

그런 다음 vim 내부에서 선택하십시오.다시 덮다, 그리고 스왑을 삭제하려면쓰다(저장) 후 다음 명령을 호출하세요.

:e          // no argument needed. It assumes the current buffer.

...그리고 선택하세요삭제이 시간.

이 접근 방식의 이점은 복구가 손상된 것으로 판명된 경우 작업 파일을 자동으로 덮어쓰지 않는다는 것입니다(물론 이전에는 그런 일이 발생하지 않았지만).

관련 팁도 있어요이 질문에Stack Overflow에서(이 팁을 찾은 곳)

답변2

디렉터리의 모든 vim 스왑 파일을 정리하려면:

디렉터리 트리에 vim 스왑 파일이 필요하지 않다고 확신하고 해당 파일을 제거하려면 vim이 있는 동안 디렉터리에서 다음 명령을 사용할 수 있습니다.~ 아니다실행 중(다른 창이나 다른 로그인 세션이 아닌 경우에도):

find . -type f -name "*.sw[klmnop]" -delete

어떤 영감과 생각은 다음에서 나왔습니다.정크 .swp 파일 제거 Google 그룹스에서 현재 디렉토리 트리에서 이름이 .swk, .swl, .swm, .swn, .swo또는 로 끝나는 모든 파일이 삭제됩니다 ..swp

다음과 같은 여러 가지 이유로 원하는 것이 아닐 수도 있습니다.

  • 명시된 대로 현재 디렉토리를 검색합니다.나무 ; 즉, 현재 디렉터리와 모든 하위 디렉터리가 재귀적으로 발생합니다. 이는 질문에서 요구하는 것 이상이며 과잉으로 간주될 수 있습니다.
  • 명시된 대로 이름이 .swk, .swl, .swm, .swn, .swo또는 , 로 끝나는 모든 파일을 삭제합니다 .  .swp.swp게리 존슨은 말한다,

    또한 모든 스왑 파일이 .swp로 끝나는 것은 아닙니다. Vim이 스왑 파일을 만들어야 하는데 .swp로 끝나는 파일이 이미 존재한다면 Vim은 새 파일에 .swo 확장자를 사용하고 그 뒤에는 .swn을 사용합니다. 나는 그것이 알파벳을 통해 거꾸로 계속되는 것이라고 생각합니다. 그래서 다음과 같은 것을 사용하여

      \*.sw[nop] 
    

    또는

      \*.sw? 
    

    더 철저해질 것입니다.

    원작자는이것게시물에 따르면,

    'klmnop'은 과잉일 수 있지만 일반적으로 이를 통해 모든 항목을 얻을 수 있습니다.

  • 반면에 미흡할 수도 있습니다.  루블 제안

    find . -type f \( -name ".*.s[a-v][a-z]" -o -name ".*.sw[a-p]" \) -delete
    

    .saa에서 까지의 모든 (소문자) 3자 확장자와 일치합니다 .swp. 그는 이렇게 덧붙입니다. “이 방법이 더 완벽한 솔루션이기는 하지만 모든 .svg 이미지 파일과 .swf adobe 플래시 파일이 삭제될 수 있으니 주의하세요. 해당 파일로 작업하는 경우 정규식을 수정하고 싶을 수도 있습니다.” 또한 .sav, .snd(사운드 데이터), .sql, .src, .srt(SubRip 비디오 자막 형식) 및 기타 여러 일반적인 확장명과도 일치합니다.

  • 과잉일 수도 있습니다. 명시된 대로 이름이 .swk, .swl, .swm, .swn, .swo또는 로 끝나는 모든 파일을 삭제합니다 .swp. 그러나 분명히 vim 스왑 파일은 일반적으로 "점" 파일입니다. 을 편집하는 경우 hello.cpp스왑 파일은 .hello.cpp.swp. 에 표시된 대로(설명되지 않음)루블의 대답, 이름이 점으로 시작하는 파일만 삭제하는 것이 더 안전합니다. 예를 들어

    find . -type f -name ".*.sw[klmnop]" -delete
    

답변3

ls -a디렉토리의 모든 파일을 나열하는 유형

is를 입력 rm .whatever.your.swp하고 누르세요.enter

그것은 간단합니다.

앞에 표시되는 파일은 .숨겨진 파일이므로 일반적으로 표시되지 않습니다.

변경 사항은 즉각적이고 영구적이므로 주의해야 한다는 점을 기억하세요.

답변4

그런데. 일부 플러그인은 자동으로 이를 수행합니다.autoswap.vim

설명에서 :

  1. 파일이 이미 다른 창의 다른 Vim 세션에 열려 있나요?
  2. 그렇다면 해당 파일을 편집하고 있는 창으로 전환하세요.
  3. 그렇지 않고 스왑 파일이 파일 자체보다 오래되었다면 그냥 제거하세요.
  4. 그렇지 않으면 파일을 읽기 전용으로 열어 우리가 보고 저장할 수 있도록 하세요.

관련 정보