저장하지 않은 텍스트를 잃어 버리지 않으 려면이 메시지가 실제로 중요합니다 . 그것은해야 하지 성가신 간주하고해야 하지 당신이 급하게 스왑 파일을 삭제하거나 구성하는 원인이 vim
없이 실행합니다.
편집하는 모든 파일 vim
에는 편집 하는 동안 해당 스왑 파일이 있으며vim
변경 사항을 추적 하는 데 사용됩니다. 파일 편집을 종료 vim
하면 해당 스왑 파일이 자동으로 삭제됩니다. 따라서 스왑 파일이 존재하고 원본 파일을 덮어 쓰려는 시도가 고려 및 적절한 조치의 원인이되어야합니다.
메시지에 제시된 두 가지 시나리오 ( E325: ATTENTION Found a swap file
)는 실제로 매우 일반적입니다. (1) 다른 vim
프로그램이 편집하려고하는 것과 동일한 파일을 편집하고 있습니다 (실제로 다른 사람 일 수 있음-이 경우에는 실제로 의미가 없습니다) 그냥 맹목적으로 스왑 파일을 삭제합니다 - 또는 다른 터미널 창이나 탭)에서 당신이 될 수도 있고, (2) 이전 vim
세션이 충돌 (대부분이 원격으로 편집 할 때 발생하고, 네트워크 세션이 절단됩니다 - 한 vim 세션이 정상적으로 종료되지 않고 .swp
파일이 남아있는 경우 (두 번째 시나리오의 또 다른 예는 활성 또는 백그라운드 vim
세션 이있는 터미널 창 또는 탭을 실수로 닫은 것입니다 ).
이 메시지가 나타 났을 때 나는 보통 여러 개의 탭이있는 여러 개의 터미널 창으로 작업하기 때문에 다른 터미널 창이나 탭에서이 파일을 편집하고 있는지에 대해 먼저 생각합니다.
다른 곳에서 편집 중이라는 것을 알고 다시 돌아올 수 있으면 이 추가 세션 의 q
키를 누르고 (Q)uit
원래 vim
세션을 통해 편집으로 돌아갑니다 .
때로는 확실하지 않은 경우 , 정확히 동일한 터미널에서 실행 중인지 확인하기 위해 (Q)uit
실행 jobs
합니다 vim
. 아무것도 나타나지 않으면 다른 곳에서 ps -ef | grep vim
실행 중인지 vim
(예 : 다른 터미널 창 또는 탭에서) 확인합니다. 요점은 항상 원래 vim
세션을 통해 편집을 다시 시작하려고한다는 것 입니다.
내가 원래 편집 세션에 반환 할 수 있음을 확신하고 난 여전히 다음과 같은 옵션이 제공하고 있다면, 나는 누르 r
에 (R)ecover
.
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
를 누르면 r
다음과 같은 메시지가 나타납니다.
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
내가 쉘 프롬프트에서이기 때문에, 다른 한편, 만약 그때 내가 실행, 더 이상 이러한 옵션에 직면 생각하지 vim
에 -r
다음과 같이 옵션 :
vim -r notes
결과 메시지는 비슷합니다.
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
어느 쪽이든, ENTER
계속 하려면를 누르면 파일이 나타납니다.
참고 : Vim에서 찾은 내용에 대해 의심이 들면 오류 메시지가 표시되고 "???"가있는 행이 삽입됩니다. 본문에서. 복구하는 동안 오류 메시지가 표시되면 파일에서 "???"를 검색하십시오. 무엇이 잘못되었는지 확인하십시오. 필요한 텍스트를 얻기 위해 잘라내어 붙여 넣기를 원할 수 있습니다.
가장 일반적인 설명은 "??? LINES MISSING"입니다. 이는 Vim이 원본 파일에서 텍스트를 읽을 수 없음을 의미합니다. 시스템이 중단되고 원본 파일의 일부가 저장되지 않은 경우 발생할 수 있습니다.
즉, 나는 그 ???
마크를 본 적이 없으므로 이것은 매우 드문 일입니다.
다음으로, 내용을 다른 파일에 저장 (즉, 쓰기) 합니다 (보통 원래 파일 이름 끝에 "2"를 추가합니다).
:w notes2
다음으로이 vim
세션을 강제 종료하십시오 .
:q!
다음으로 두 파일을 비교하십시오.
diff notes notes2
경우 diff
반환 아무것도 , 그 차이가 없음을 의미하고, 스왑 파일과 두 번째 파일을 모두 제거하는 것이 안전합니다 :
rm .notes.swp notes2
이 시점에서 원본 파일을 열고 문제가없는 것처럼 진행하십시오.
vim notes
경우 diff
반환 뭔가 (스왑 파일을 통해) 원본 파일을 의미의 회복, 두 번째 파일에 저장되어있는에, 덕분에 변화가 있었다.
이러한 변경 사항은 두 번째 파일에서 캡처되므로 스왑 파일을 삭제하고 두 번째 파일로 원본 파일을 덮어 쓰는 것이 안전합니다.
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
이 시점에서 원본 파일을 열고 문제가없는 것처럼 진행하십시오.
vim notes
이것은 많은 작업처럼 보이지만 워크 플로에 익숙해지면 최대 20 초가 걸립니다.