vim을 사용하여 파일 시스템에서 수정된 파일을 강제로 쓰기

vim을 사용하여 파일 시스템에서 수정된 파일을 강제로 쓰기

git을 사용하여 대화형으로 리베이스한 후 vim에서 연 파일이 파일 시스템에서 수정된 것을 자주 발견했습니다. :w또는 를 사용하여 파일을 쓰려고 하면 / :w!프롬프트가 표시됩니다 .WARNING: The file has been changed since reading it!!!Do you really want to write to it (y/n)?

나는 이 경고가 충분히 합리적이라고 생각합니다. 임의의 이유로 변경된 파일 시스템의 파일을 자동으로 덮어쓰는 것은 의심스러운 동작입니다. 그런데 이런 경우에는 파일을 터치한 이유를 알면 프롬프트가 있는지 없는지 확인하는 대신 강제로 쓰고 싶은 경우가 많습니다. 프롬프트를 알아차리지 못하고 즉시 탭을 치워 일관되지 않은 빌드가 발생하고 때로는 데이터가 손실되는 상황이 있었습니다.

영구적으로 또는 (바람직하게는) 유사한 확장 명령을 사용하여 확인 프롬프트를 제거하려면 어떻게 해야 합니까 w!?

Google에서 이 항목을 사용하여 읽기 전용 파일을 강제로 작성하는 것에 대한 조회수를 많이 얻었 w!지만 수정된 파일을 강제로 작성하는 내용을 찾을 수 없는 것 같습니다.

답변1

다음 명령은 현재 버퍼에 대해 작동합니다(여러 버퍼에 대한 솔루션은 모르겠습니다).

:w !sudo tee %

문자는 %현재 파일 이름을 나타냅니다. 이 sudo명령을 사용하면 읽기 전용으로 열린 파일을 덮어쓸 수 있습니다.

:w!!위의 작업을 수행하는 명령으로 정의하려면 다음을 추가하십시오 .vimrc.

cmap w!! w !sudo tee > /dev/null %

이 부품은 여기서 사용되지 않는 > /dev/null표준 출력을 제거합니다 .tee

자세한 내용은 포스팅을 참조하세요 vim의 "sudo로 쓰기" 트릭은 어떻게 작동하나요?

관련 정보