vim을 종료 할 때 : wq <cr> : x <cr>와 ZZ의 차이점은 무엇입니까?


38

Vi와 Vim은 모두가 알고 있듯이 많은 동의어를 가지고 있습니다. 파일을 저장하고 Vim과 Vi를 종료하는 방법은 세 가지가 있습니다. 이들은 : wq <cr> , : x <cr>ZZ 입니다. 나는 이것들이 어떤면에서 다르다는 것을 들었다.

다음을 사용하는 데 실질적인 차이점이 있습니까?

:x<cr>

:wq<cr>

또는

ZZ

파일을 저장하고 Vim과 Vi를 종료하려면?


간단한 대답은 같습니다.
JJoao

2
그들은 동일 하지 않습니다 . 차이점을 정확히 모르지만 변경 사항이 없으면 (예 : 타임 스탬프 업데이트) 파일에 쓰지 않고 쓰지 않는 것입니다.
와일드 카드

1
또한 실제적인 관점에서 볼 때 ZZ(또는 ZQ) 더 짧고 입력하기가 더 쉽습니다.
VanLaser

:help :wq, :help ZZ, :help :x. 문서에 바로 있습니다.
Antony

답변:


40

빔의 문서에서 :xZZ동일; 파일이 수정 된 경우에만 파일을 저장 한 다음 Vim을 종료합니다.

Write current file, if modified, and quit (same as ":x").  
(Note: If there are several windows for the
current file, the file is written if it was modified and the window is closed).

:wq 반면에 파일을 쓰고 Vim을 종료합니다 (적절한 권한이 있다고 가정).


9

akshay가 지적했듯이 Vim의 설명서는 그 :xZZ동일하며 관련 버퍼가 변경된 경우에만 파일을 저장 한다고 설명합니다 . 반면 :wq이 변하지 않더라도, 해당 파일에 대한 버퍼를 저장한다.

두 경우 모두 버퍼의 내용이 디스크에 저장됩니다. 분명히 결과는 동일하므로 왜 귀찮게합니까? 그러나 기다려라 ... 미묘하지만 관련성이없는 차이점이있다.

Vim을 통해 나가고 :x버퍼가 변경되지 않은 경우 해당 파일의 수정 시간이 변경되지 않습니다. 반면을 통해 종료 :wq하면 파일이 기술적으로 다시 작성 (다시 저장)되므로 수정 시간이 변경됩니다.

이는 특정 상황에 영향을 줄 수 있습니다. 예를 들어 수정 시간에 의존하는 백업 프로세스는 추가 정보가 포함되지 않은 경우에도이 파일을 저장하고 네트워크를 통해 전송할 수 있습니다. 또는 파일이 변경된 것을 감지하면 일부 모니터링 프로세스에서 알람이 울릴 수 있습니다 ...

편집 : 수정 시간을 변경하지 않고 수정 된 버퍼 / 파일을 떠날하기 위해 언급하는 것을 잊었다는 :q(포함하지 않는이 w)도 작동합니다.


2
또한 일부 자동 명령은 파일을 쓸 때만 실행됩니다. 파일이 변경되지 않고 Vim이 ZZ 또는 : x로 종료되면 실행되지 않습니다.
Spidey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.