使用這個(gè)命令:
:w !sudo tee %`
這題目讀起來(lái)糾結(jié),其實(shí)是很常見的,常常忘記了 sudo 就直接用 vim 編輯 /etc 內(nèi)的文件,(不過(guò)也不一定,vim 發(fā)現(xiàn)保存的文件無(wú)法保存時(shí)候會(huì)提示)等編輯好了,保存時(shí)候才發(fā)現(xiàn)沒權(quán)限。曲線方法是先保存?zhèn)€臨時(shí)文件,退出后再 sudo cp 回去。不過(guò)實(shí)際上在 vim 里面可以直接完成這個(gè)過(guò)程的,命令就是如此。
查閱 vim 的文檔(輸入 :help :w),會(huì)提到命令 :w!{cmd},讓 vim 執(zhí)行一個(gè)外部命令 {cmd},然后把當(dāng)前緩沖區(qū)的內(nèi)容從 stdin 傳入。
tee 是一個(gè)把 stdin 保存到文件的小工具。而 %,是 vim 當(dāng)中一個(gè)只讀寄存器的名字,總保存著當(dāng)前編輯文件的文件路徑。
所以執(zhí)行這個(gè)命令,就相當(dāng)于從 vim 外部修改了當(dāng)前編輯的文件,[END]。