수퍼 유저로 vim 파일을 작성 하시겠습니까?


10

이것은 나에게 자주 발생하는 유용성 문제입니다.

주의를 기울이지 않았거나 시스템의 vim이 잘못 구성되어 있기 때문에 vim을 사용하여 읽기 전용 시스템 파일을 열고 편집 할 수도 있습니다. 변경이 완료되면 임시 파일에 작성하거나 잃어 버릴 수밖에 없습니다. 작동하지 않습니다.

수퍼 유저로 현재 버퍼를 작성할 수있는 vim 명령 (: W !!!)이 있습니까? (Vim은 자연스럽게 sudo 또는 su 암호를 요구합니다)



1
SO는 분명히 속지 않지만 두 가지 SU 질문은 sudoedit명령으로 해결 된 별도의 문제를 해결합니다 . 이 질문은 처음에 입력하지 않고 편집기를 시작한 후 높이는 것에 중점을 둡니다.
heavyd

답변:


15
:w !sudo tee % >/dev/null`

설명 :을 사용하면 !프로그램을 실행할 수 있습니다. 접두사 : w를 붙여서 파일의 내용 (원래 파일이 아닌 vim에있는 것들, 더 정확하게는 버퍼)이 표준 입력의 명령에 제공됩니다. %파일 이름으로 대체되고 >/dev/null내용이 화면에 다시 인쇄 되는 것을 방지합니다 (일반적인 동작 tee).

더 짧은 길을 찾았습니다. ddstdout으로 인쇄하지 않으므로 null을 저장할 수 있습니다.

:w !sudo dd of=%

for :r는 지정된 명령의 출력을 삽입하므로 for를 사용하여 현재 날짜를 파일에 삽입 할 수 있습니다.:r !date


고마워요, 당신은 내 인생을 훨씬 더 좋게 만들었습니다! (브라이언도)
zimbatm

방금 두 번째 방법을 추가했습니다.
Marian

정말 깔끔합니다!
Anthony Giorgio

undofiles와 함께 작동하지 않습니다
Christian Brabandt

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.