tee命令读取标准输入,然后将其写到文件和标准输出中,在vim中%代表当前编辑缓冲区的文件名,
用下面的命令可以解决:
w !sudo tee % > /dev/null
其中,w filename是将当前vim编辑的文件内容缓冲写到一个file中。在此处为写入到tee。而tee是一个双向重定向工具,tee file1 file2读取来自stdin的输入,并将内容输出到file1和file2中,在这里tee % > /dev/null,vim中%指当前编辑缓冲区的文件名,/dev/null为黑洞。这样就将当前编辑缓冲写入到tee,由sudo的tee再重写回%当前编辑缓冲。