vim에 쓸 수있는 권한이없는 파일을 연 경우 변경해야한다고 결정하면 vim을 종료하지 않고 변경 내용을 작성할 :w !sudo tee %
수 있습니다.이 방법을 이해할 수 없습니다. 당신은 이것을 해부 할 수 있습니까?
나는 그 :w부분과 이미 관련된 파일 이름이 있다고 가정하고 현재 버퍼를 디스크에 씁니다.
또한 명령 !을 실행 하고 현재 버퍼 내용을 나타내는 것을 이해 합니까?
그러나 여전히 이것이 어떻게 작동하는지 이해하지 못합니다.sudo tee%
:!command는 필터 (cf. :h !)이지만 :w !command그렇지 않은 command경우 현재 파일을 stdin(cf. :h :w_c) 로 실행 합니다 . 재치 : :w !sed /./d현재 버퍼의 내용을 변경하지 않습니다. 그러나 레시피는 실제로 다른 이유로 적절하지 않으므로 %탈출해야합니다 :exec 'w !sudo tee ' . shellescape(expand('%', 1)). 원래 명령은 공백이있는 파일 이름과는 작동하지 않습니다.
:!command
는 필터 (cf.:h !
)이지만:w !command
그렇지 않은command
경우 현재 파일을stdin
(cf.:h :w_c
) 로 실행 합니다 . 재치 ::w !sed /./d
현재 버퍼의 내용을 변경하지 않습니다. 그러나 레시피는 실제로 다른 이유로 적절하지 않으므로%
탈출해야합니다:exec 'w !sudo tee ' . shellescape(expand('%', 1))
. 원래 명령은 공백이있는 파일 이름과는 작동하지 않습니다.