비결은 외부 호출을 사용하는 것입니다 sudo
.
:w !sudo tee %
작동 원리 :
:w !<command>
실행 <command>
표준 입력으로서 버퍼의 내용.
tee
stdin을 파일에 복사합니다. & stdout; %
현재 파일 이름으로 확장됩니다.
sudo
루트 권한으로 접두사를 붙 입니다.
당신은 아니에요 정말 빔으로 파일을 저장, 오히려 당신이 편집중인 파일의 내용을 덮어 외부 프로그램을 호출하고 있습니다. 이것이 Vim으로부터 경고를받는 이유입니다 :
W12: Warning: File "xxx" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File:
이것을 함수로 바꿀 수 있습니다.
fun! SuperWrite()
write !sudo tee %
" Or with :silent (but that doesn't seem to work for everyone)
"silent write !sudo tee %
edit!
endfun
그리고 키 바인드 :
nnoremap <Leader>w! :call SuperWrite()<CR>
를 사용 su
하면 루트 사용자 만 -c
명령을 즉시 실행할 수 있습니다 . 나는 당신 su
이 이것을 할 수 있다고 생각 하지 않지만 아마도 내가 알지 못하는 트릭이있을 것입니다 ...
SuperWrite
작동하지만 파일을 다시 에코합니다. 그것을 실행하면:silent
비밀번호를 보이지 않게 입력 할 수 있습니다.