甜果果 發表於 2024-2-13 00:00:00

Vim 强制保存只读类型文件的方法

<p>
        <span><strong>发现问题:</strong></span></p>
<p>
        在使用vim时,当我们以普通用户去打开一个只有root用户才有权限操作的文件时,我们编辑完成之后,正要保存,却发现,这个文件我们没有权限修改。</p>
<p>
        每次遇到这样的问题,我都很头疼,好不容易把文件编辑完了,却无法保存,就只能放弃,然后退出,再以root权限打开,重新编辑。</p>
<p>
        我总是相信,所有的问题都有解决的方法。通过查阅资料,终于解决了这个问题。</p>
<p>
        <span><strong>解决方案:</strong></span></p>
<p>
        底行命令模式执行:<code> :w !sudo tee %</code></p>
<p>
             w: 表示保存文件</p>
<p>
            !: 表示执行外部命令</p>
<p>
             tee: linux命令,这个有点复杂,可以查看linux命令帮助</p>
<p>
             %: 在执行外部命令时,%会扩展成当前文件名;这个%区别于替换时的%,替换时%的意义是代表整个文件,而不是文件名</p>
<p>
        上述方式非常完美的解决了不能保存只读文件的问题,但毕竟命令还是有些长,为了避免每次输入一长串的命令,可以将它映射为一个简单的命令加到 .vimrc 中:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_787372">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                        <div class="line number2 index1 alt1">
                                                                2</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">" Allow saving of files as sudo when I forgot to start vim using sudo.</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain spaces"> </code><code class="plain plain">cmap w!! w !sudo tee &gt; /dev/null %</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        这样,简单的运行<code>:w!!</code>即可。命令后半部分<code>&gt; /dev/null</code>作用为显式的丢掉标准输出的内容。</p>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是关于Vim强制保存只读文件的方法,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。</p>
<p>
        原文链接:http://kuanghy.github.io/2015/12/30/sudo-vim</p>
頁: [1]
查看完整版本: Vim 强制保存只读类型文件的方法