dbr*_*dbr 44
Run Code Online (Sandbox Code Playgroud):w !sudo tee %
在编辑我没有写权限的文件之前,我经常忘记 sudo。当我要保存该文件并遇到权限错误时,我只需发出该 vim 命令即可保存该文件,而无需将其保存到临时文件中,然后再将其复制回来。
Bru*_*sky 17
请不要为此投票给我。我不建议实施这个答案,但这是 rkthkr 要求的答案。
rkthkr 说:
但是重新启动 vim 并以 root 身份运行会很好
这样做的方法是使用:!sudo vim %
我对 ipozgaj 提到的,作为参数(甚至是子参数)的 % 被替换为当前缓冲区的路径。(可能会提示您输入密码。)您最终会得到一个由 root 拥有的新 vim 进程,它是原始 vim 进程的子进程。听起来很傻,对吧?这是它在ps中的样子:
~# ps afo pid,ppid,user,stat,comm
PID PPID USER STAT COMMAND
16187 30478 rbronosky Ss bash
16510 16187 rbronosky R+ \_ ps
30482 30478 rbronosky Ss bash
16244 30482 rbronosky S+ \_ vim
16318 16244 root S+ \_ vim
Run Code Online (Sandbox Code Playgroud)
如果您对包含该文件的目录具有写权限并对其进行了编辑,您可能会收到交换文件退出的警告。选择 [R]ecover,将反映父 vim 进程所做的大部分更改。(*我认为交换更新可能是定时的或者有一个增量阈值。我已经在这方面投入了太多时间并且不关心研究它。)当你去退出 vim 时,不要惊慌仍在 vim 中……您打开了第二个 vim 进程。记住?
现在,说了这么多……我几乎永远不会这样做。也许,如果我没有喝足够或太多的咖啡,并且我意识到我将需要以 root 身份编辑更多文件......我可能会尝试这个。在管理系统的 14 年中,我从未有过。但是,直到您对我的首选解决方案(这正是 dbr 提供的)表示不满之前,我从未想过这个问题。
归档时间: |
|
查看次数: |
8389 次 |
最近记录: |