Vim 내에서 루트 되기

Vim 내에서 루트 되기

때로는 Vim을 사용하는 동안 구성 파일 편집을 시작 하지만 /etc. sudo피할 수 없는 결과는 편집을 마친 후 파일을 저장할 권한이 없다는 무서운 알림을 받게 된다는 것입니다.

대부분의 경우 편집 내용이 너무 작아서 Vim을 종료하고 루트로 모든 작업을 다시 수행합니다. 물론 쓰기 가능한 위치에 저장한 다음 루트로 복사할 수도 있지만 이 역시 약간 귀찮습니다.

sudo하지만 루트가 되거나 변경 사항을 버리지 않고도 Vim 내에서 사용할 수 있는 더 쉬운 방법이 있다고 확신합니다 . 메서드가 sudo사용자 설정에 의존하지 않는 것이 더 좋을 것입니다.

답변1

sudo는 기존 프로세스의 유효 사용자를 변경할 수 없으며 항상 높은 권한으로 새 프로세스를 생성하며 원래 셸은 영향을 받지 않습니다. 이것이 UNIX 디자인의 기초입니다. 나는 일반적으로 해결 방법으로 파일을 /tmp에 저장합니다. 정말로 직접 저장하고 싶다면 파일을 다른 프로세스로 전송하는 Vim 기능을 사용해 보세요. 다음 명령을 사용하여 저장해 보세요.

:w !sudo dd of=%

테스트를 거쳐 작동합니다. 그런 다음 Vim은 파일을 다시 로드하라고 요청할 것입니다. 그러나 이것은 불필요합니다. o다시 로드하고 실행 취소 기록을 잃지 않으려면 버튼을 누르기만 하면 됩니다. Vim 명령/함수에 저장하거나 더 쉽게 액세스할 수 있도록 키에 바인딩할 수도 있지만 독자를 위한 연습용으로 남겨두겠습니다.

답변2

파일을 루트로 저장합니다.

:w !sudo tee %

답변3

sudoedit루트로 파일을 편집하기 위해 호출됩니다 .

vim잠재적으로 위험한 일을 하는 것에 대해 너무 태만하다는 경고로 직접 전화를 거는 불편함을 감수하십시오.

답변4

이것은 또한 잘 작동합니다:

:w !sudo sh -c "cat > %"

이것은 @Nathan Long의 의견에서 영감을 얻었습니다.답변.

알아채다:

"쉘로 전달하기 전에 확장을 '원하기 때문에 대신 사용해야 합니다 .%

관련 정보