永樂 發表於 2023-11-20 00:00:00

Vim编辑器常用的命令总结

<p>
        <span><strong>前言</strong></span></p>
<p>
        作为开发者,有两个顶级编辑器,即使你不用,你也一定要知道它们是什么——</p>
<p>
              ·编辑器之神——Vim</p>
<p>
              ·神的编辑器——Emacs</p>
<p>
        所以本文就来介绍vim以及它的常用命令,Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用</p>
<p>
        <span><strong>vim键盘图中文版:</strong></span></p>
<p>
        <img title="Vim编辑器常用的命令总结" alt="Vim编辑器常用的命令总结" src="https://zhuji.jb51.net/uploads/img/202305/b27b1362050e6f0fc6a3d76f3b03f02e.jpg"></p>
<p>
        tips:在linux环境下,可以在命令行输入vimtutor命令学习使用vim,当然前提是你安装上了vim</p>
<p>
        <span><strong>模式</strong></span></p>
<p>
        共有三种模式,分别是命令模式、插入模式和底线命令模式.这三种模式的作用分别是:</p>
<p>
        <strong>命令模式:</strong></p>
<p>
        用户刚刚启动vim编辑文件时,便进入了命令模式</p>
<p>
        此状态下敲击键盘动作会被Vim识别为命令,而非输入字符</p>
<p>
        <strong>输入模式:</strong></p>
<p>
        在命令模式下按下i、a、o就进入了输入模式</p>
<p>
        在输入模式中,可以使用以下按键:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterplain" id="highlighter_671356">
                        <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>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="plain plain">字符按键以及Shift组合   //输入字符</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="plain plain">Enter           //换行</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="plain plain">Back Space      //删除光标前一个字符</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="plain plain">Del             //删除光标后一个字符</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="plain plain">方向键             //在文本中移动光标</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="plain plain">Home/End        //移动光标到行首/行尾</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="plain plain">Page Up/Page Down   //上/下翻页</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="plain plain">Insert      //切换光标为输入/替换模式,光标将变成竖线/下划线</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="plain plain">Esc             //退出输入模式,切换到命令模式</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>底线命令模式:</strong></p>
<p>
        在命令模式下按下:就进入了底线命令模式</p>
<p>
        按Esc键退出底线命令模式</p>
<p>
        简单的说,可以用下图来更直观展示:</p>
<p>
        <img title="Vim编辑器常用的命令总结" alt="Vim编辑器常用的命令总结" src="https://zhuji.jb51.net/uploads/img/202305/b7aea3f1a931a15fb1986c7fa158878c.jpg"></p>
<p>
        <strong>插入</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_479566">
                        <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>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">i </code><code class="bash plain">//</code><code class="bash plain">光标前插入</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">I </code><code class="bash plain">//</code><code class="bash plain">光标所在行首插入</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">o </code><code class="bash plain">//</code><code class="bash plain">光标所在行下面新建一行</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">O </code><code class="bash plain">//</code><code class="bash plain">光标所在行上面新建一行</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">a </code><code class="bash plain">//</code><code class="bash plain">光标后插入</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">A </code><code class="bash plain">//</code><code class="bash plain">光标所在行尾部插入</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>查找</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_506327">
                        <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>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">/search_str</code> <code class="bash plain">//</code><code class="bash plain">向光标之下查找值为search_str的字符串</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">?search_str </code><code class="bash plain">//</code><code class="bash plain">向光标之上查找值为search_str的字符串</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">n </code><code class="bash plain">//</code><code class="bash plain">重复前一个搜寻的动作</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">N </code><code class="bash plain">//</code><code class="bash plain">反向进行前一个搜寻动作</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>替换</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_64658">
                        <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>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">%s</code><code class="bash plain">/old/new/</code> <code class="bash plain">//</code><code class="bash plain">用old替换new,替换所有行的第一个匹配</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">%s</code><code class="bash plain">/old/new/g</code> <code class="bash plain">//</code><code class="bash plain">用old替换new,替换整个文件的所有匹配,g表示全局</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash plain">s</code><code class="bash plain">/old/new/</code> <code class="bash plain">//</code><code class="bash plain">用old替换new,替换当前行的第一个匹配</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">s</code><code class="bash plain">/old/new/g</code> <code class="bash plain">//</code><code class="bash plain">用old替换new,替换当前行所有匹配,g表示全局</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>删除、拷贝、粘贴</strong></p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_341894">
                        <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>
                                                        <div class="line number3 index2 alt2">
                                                                3</div>
                                                        <div class="line number4 index3 alt1">
                                                                4</div>
                                                        <div class="line number5 index4 alt2">
                                                                5</div>
                                                        <div class="line number6 index5 alt1">
                                                                6</div>
                                                        <div class="line number7 index6 alt2">
                                                                7</div>
                                                        <div class="line number8 index7 alt1">
                                                                8</div>
                                                        <div class="line number9 index8 alt2">
                                                                9</div>
                                                        <div class="line number10 index9 alt1">
                                                                10</div>
                                                        <div class="line number11 index10 alt2">
                                                                11</div>
                                                        <div class="line number12 index11 alt1">
                                                                12</div>
                                                        <div class="line number13 index12 alt2">
                                                                13</div>
                                                        <div class="line number14 index13 alt1">
                                                                14</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">x,X </code><code class="bash plain">//x</code><code class="bash plain">为向后删除一个字符,X为向前删除一个字符</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">nx </code><code class="bash plain">//</code><code class="bash plain">连续向后删除n个字符</code>
</div>
                                                                <div class="line number3 index2 alt2">
                                                                        <code class="bash functions">dd</code> <code class="bash plain">//</code><code class="bash plain">删除光标所在行(常用)</code>
</div>
                                                                <div class="line number4 index3 alt1">
                                                                        <code class="bash plain">ndd </code><code class="bash plain">//</code><code class="bash plain">删除光标所在行开始n行</code>
</div>
                                                                <div class="line number5 index4 alt2">
                                                                        <code class="bash plain">d1G </code><code class="bash plain">//</code><code class="bash plain">删除光标所在行到第一行</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">dG </code><code class="bash plain">//</code><code class="bash plain">删除光标所在行到尾行</code>
</div>
                                                                <div class="line number7 index6 alt2">
                                                                        <code class="bash plain">yy </code><code class="bash plain">//</code><code class="bash plain">拷贝光标所在行(常用)</code>
</div>
                                                                <div class="line number8 index7 alt1">
                                                                        <code class="bash plain">nyy </code><code class="bash plain">//</code><code class="bash plain">拷贝光标所在行开始n行</code>
</div>
                                                                <div class="line number9 index8 alt2">
                                                                        <code class="bash plain">d1G </code><code class="bash plain">//</code><code class="bash plain">拷贝光标所在行到第一行</code>
</div>
                                                                <div class="line number10 index9 alt1">
                                                                        <code class="bash plain">dG </code><code class="bash plain">//</code><code class="bash plain">拷贝光标所在行到尾行</code>
</div>
                                                                <div class="line number11 index10 alt2">
                                                                        <code class="bash plain">p,P </code><code class="bash plain">//p</code><code class="bash plain">为将已复制的内容粘贴在光标下一行,P则为粘贴在光标上一行</code>
</div>
                                                                <div class="line number12 index11 alt1">
                                                                        <code class="bash plain">u </code><code class="bash plain">//</code><code class="bash plain">复原前一个工作</code>
</div>
                                                                <div class="line number13 index12 alt2">
                                                                        <code class="bash plain">ctrl+r </code><code class="bash plain">//</code><code class="bash plain">重做上一个动作</code>
</div>
                                                                <div class="line number14 index13 alt1">
                                                                        <code class="bash plain">. </code><code class="bash plain">//</code><code class="bash plain">重复前一个动作</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        显示/隐藏行号</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_908614">
                        <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="bash plain">:</code><code class="bash functions">set</code> <code class="bash plain">nu </code><code class="bash plain">//</code><code class="bash plain">显示行号</code>
</div>
                                                                <div class="line number2 index1 alt1">
                                                                        <code class="bash plain">:</code><code class="bash functions">set</code> <code class="bash plain">nonu </code><code class="bash plain">//</code><code class="bash plain">隐藏行号</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
        原文链接:https://blog.luckyw.cn/2017/03/05/vim-cmd/</p>
頁: [1]
查看完整版本: Vim编辑器常用的命令总结