Loading... <h2 id="vim简介">VIM简介</h2> <p>VIM是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。</p> <hr /> <h2 id="vim的使用">VIM的使用</h2> <blockquote class="white-blockquote"><p style="margin-top: 0px;margin-bottom: 0px;line-height: 25px">在介绍基本使用前,先了解下VIM的基本模式</p> </blockquote> <p>基本模式可分为三种:命令模式、输入模式、末行模式 <br /><span style="font-weight: 700">命令模式</span>:Vim启动后的默认模式,通过输入指令完成对应的编辑操作。输入模式和末行模式从命令模式进入 <br /><span style="font-weight: 700">输入模式</span>:可以正常输入字符、编辑文本的状态 <br /><span style="font-weight: 700">末行模式</span>:可以理解为Vim内置的命令行接口,可以进行保存退出等操作</p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">打开文件</span></p> </li> </ul> <p>格式:vim [OPTION]… FILE… <br />选项: <br /><span style="font-weight: 700">+#</span>:打开文件后,直接让光标处于弟#行的行首 <br /><span style="font-weight: 700">+/PATTERN</span>:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 <br /><span style="font-weight: 700">注</span>:如果不指定文件,将会出现如下界面 <br /><img src="//cto.wang/usr/uploads/2016/07/20160703180906-38.png" alt="" title="" style="height: auto;max-width: 100%;vertical-align: middle;border: 0px" /></p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">模式转换</span></p> </li> </ul> <p>命令模式–>输入模式 <br /><span style="font-weight: 700">i</span>:insert,在光标所在处输入 <br /><span style="font-weight: 700">I</span>:在当前光标所在行的行首输入 <br /><span style="font-weight: 700">a</span>:append,在光标所在处后面输入 <br /><span style="font-weight: 700">A</span>:在当前光标所在行的行尾输入 <br /><span style="font-weight: 700">o</span>:在当前光标所在行的下方打开一个新行 <br /><span style="font-weight: 700">O</span>:在当前光标所在行的上方打开一个新行</p> <p>输入模式–>命令模式 <br />按ESC键</p> <p>命令模式–>末行模式 <br />键入<span style="font-weight: 700">:</span></p> <p>末行模式–>命令模式 <br />按ESC键后稍等或者连按两次ESC键</p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">关闭文件</span></p> </li> </ul> <p>末行模式下 <br /><span style="font-weight: 700">:q</span> 退出 <br /><span style="font-weight: 700">:q!</span> 强制退出。丢弃作出的修改 <br /><span style="font-weight: 700">:wq</span> 保存退出 <br /><span style="font-weight: 700">: x</span> 保存退出 <br /><span style="font-weight: 700">:w /PATH/TO/SOMEWHERE</span> 表示当前文本所有内容保存到指定路径 <br />命令模式下 <br /><span style="font-weight: 700">ZZ</span>:保存退出</p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">光标跳转</span></p> </li> </ul> <p>字符间跳转: <br /><span style="font-weight: 700">h</span>:左 <br /><span style="font-weight: 700">l</span>:右 <br /><span style="font-weight: 700">j</span>:下 <br /><span style="font-weight: 700">k</span>:上 <br /><span style="font-weight: 700">#COMMAND</span>:跳转由#指定个数的字符 <br />注:#为数字,COMMAND为上述字符</p> <p>单词间跳转: <br /><span style="font-weight: 700">w</span>:下一个单词的词首 <br /><span style="font-weight: 700">e</span>:当前或下一个单词的词尾 <br /><span style="font-weight: 700">b</span>:当前或前一个单词的词首 <br /><span style="font-weight: 700">#COMMAND</span>:由#指定一次跳转的单词数</p> <p>行首行尾跳转: <br /><span style="font-weight: 700">^</span>: 跳转至行首的第一个非空白字符 <br /><span style="font-weight: 700">0</span>: 跳转至行首 <br /><span style="font-weight: 700">$</span>: 跳转至行尾</p> <p>行间移动: <br /><span style="font-weight: 700">#G</span>:跳转至由#指定行 <br /><span style="font-weight: 700">G</span>:跳转至最后一行 <br /><span style="font-weight: 700">1G</span>或<span style="font-weight: 700">gg</span>:跳转至第一行</p> <p>句间和段间移动: <br /><span style="font-weight: 700">)</span>:下一句 <br /><span style="font-weight: 700">(</span>:上一句 <br /><span style="font-weight: 700">}</span>:下一段 <br /><span style="font-weight: 700">{</span>:上一段 <br /><span style="font-weight: 700">#COMMAND</span>:由#指定一次跳转的句数或段数</p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">命令模式的命令</span></p> </li> </ul> <p>字符编辑: <br /><span style="font-weight: 700">x</span>:删除光标处的字符 <br /><span style="font-weight: 700">#x</span>:删除光标处起始的#个字符 <br /><span style="font-weight: 700">xp</span>:交换光标所在处的字符及后面字符的位置</p> <p>替换命令: <br /><span style="font-weight: 700">r</span>:替换光标所在处的字符</p> <p>删除命令: <br /><span style="font-weight: 700">d</span>:删除命令。可结合光标跳转字符,实现范围删除 <br />例:d$删除光标所在处到行尾的字符,d^和d0表示删除光标所在处到行首的字符 <br /><span style="font-weight: 700">#COMMAND</span>:例如3dl表示删除光标所在处及其右两位字符 <br /><span style="font-weight: 700">dd</span>:删除光标所在的行 <br /><span style="font-weight: 700">#dd</span>:多行删除 <br /><span style="font-weight: 700">注意</span>:最后一次删除的内容会被保存至缓冲区</p> <p>粘贴命令: <br /><span style="font-weight: 700">p</span>:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 <br /><span style="font-weight: 700">P</span>:缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面</p> <p>复制命令 <br /><span style="font-weight: 700">y</span>:复制命令,可结合光标跳转字符,实现范围复制 <br /><span style="font-weight: 700">注</span>:y命令使用方式与d命令相似,参照即可</p> <p>修改命令: <br /><span style="font-weight: 700">c</span>:使用修改命令会触发模式转换,由命令模式–>输入模式,其功能表现为先删除,在转换为输入模式,可结合光标跳转字符使用。 <br /><span style="font-weight: 700">cc</span>:删除光标所在行的字符并转换为输入模式 <br /><span style="font-weight: 700">C</span>:删除光标所在处到行尾的所有字符并转换为输入模式</p> <p>其它编辑操作: <br />可视化模式: <br /><span style="font-weight: 700">v</span>:按字符选定 <br /><span style="font-weight: 700">V</span>:按行选定 <br />注意:经常结合编辑命令(d,y,c)使用 <br />撤销此前的编辑: <br /><span style="font-weight: 700">u</span>:撤销此前的操作 <br /><span style="font-weight: 700">#u</span>:撤销由#指定次数的操作 <br />撤销此前的撤销:<span style="font-weight: 700">Ctrl+r</span> <br />重复前一个编辑操作:<span style="font-weight: 700">.</span> <br />翻屏操作: <br /><span style="font-weight: 700">Ctrl+f</span>:向文件尾部翻一屏 <br /><span style="font-weight: 700">Ctrl+b</span>:向文件首部翻一屏 <br /><span style="font-weight: 700">Ctrl+d</span>:向文件尾部翻半屏 <br /><span style="font-weight: 700">Ctrl+u</span>:向文件首部翻半屏 <br />vim自带练习教程:vimtutor</p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">末行模式的操作</span></p> </li> </ul> <blockquote class="white-blockquote"><p style="margin-top: 0px;margin-bottom: 0px;line-height: 25px">注:默认已进入末行模式,以下命令就不加<span style="font-weight: 700">:</span></p> </blockquote> <p><span style="font-weight: 700">地址定界</span> <br />格式:star_pos,end_pos <br /><span style="font-weight: 700">#</span>:具体第#行,例如2表示第2行 <br /><span style="font-weight: 700">#,#</span>:从左侧#行表示起始,到右侧#行表示行尾 <br /><span style="font-weight: 700">#,+#</span>:从左侧#表示的行起始,加上右侧#表示的行数 <br /><strong><span style="font-weight: 700">.</span></strong>:当前行 <br /><strong>$</strong>:最后一行 <br /><strong>.,$-1</strong>:当前行到倒数第二行 <br /><span style="font-weight: 700">%</span>:全文,相当于1,$ <br /><span style="font-weight: 700">/pat1/,/pat2/</span>:从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 <br />使用方法:后跟一个编辑命令 <br />d:删除 <br />y:复制 <br />w /PATH/TO/SOMEWHERE:将范围内的行另存至指定文件中 <br />r /PATH/FROM/SOMEFILE:在指定位置插入指定文件中的所有内容</p> <p><span style="font-weight: 700">查找</span> <br /><span style="font-weight: 700">/PATTERN</span>:从当前光标所在处向文件尾部查找 <br /><span style="font-weight: 700">?PATTERN</span>:从当前光标所在处向文件首部查找 <br />n:跳转到下一个与命令同方向的结果 <br />N:跳转到下一个与命令反方向的结果</p> <p><span style="font-weight: 700">查找并替换</span> <br /><span style="font-weight: 700">s</span>:在末行模式下完成查找替换操作 <br /><span style="font-weight: 700">s/要查找的内容/替换为的内容/修饰符</span> <br />要查找的内容:可使用模式 <br />替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容 <br />修饰符: <br />i:忽略大小写 <br />g: 全局替换 <br />注:默认情况下,每一行只替换第一次出现 <br />查找替换中的分隔符/可替换为其它字符,例如s/123/321/g可替换为s#123#321#g</p> <p><span style="font-weight: 700">多文件模式</span> <br />启动格式:vim FILE1 FILE2 FILE3 … <br /><span style="font-weight: 700">next</span>:下一个文件 <br /><span style="font-weight: 700">prev</span>:前一个文件 <br /><span style="font-weight: 700">first</span>:第一个文件 <br /><span style="font-weight: 700">last</span>:最后一个文件 <br /><span style="font-weight: 700">wall</span>:保存所有 <br /><span style="font-weight: 700">qall</span>:退出所有</p> <p><span style="font-weight: 700">窗口分割模式</span> <br />启动格式:vim -o|-O FILE1 FILE2 … <br /><span style="font-weight: 700">-o</span>: 水平分割 <br /><span style="font-weight: 700">-O</span>::垂直分割 <br />在窗口间切换:Ctrl+w,Arrow(↑↓←→) <br />单文件窗口分割: <br />Ctrl+w,s:split,水平分割 <br />Ctrl+w,v:vertical,垂直分割</p> <ul class=" list-paddingleft-2"> <li> <p><span style="font-weight: 700">定制VIM的工作特性</span></p> </li> </ul> <p>配置文件:永久有效 <br />全局:/etc/vimrc <br />个人:~/.vimrc(需要自行创建) <br />末行模式:当前vim进程有效</p> <p>(1) 行号 <br />显示:set number, 简写为set nu <br />取消显示:set nonumber, 简写为set nonu</p> <p>(2) 括号匹配 <br />匹配:set showmatch, 简写为set sm <br />取消:set nosm</p> <p>(3) 自动缩进 <br />启用:set ai <br />禁用:set noai</p> <p>(4) 高亮搜索 <br />启用:set hlsearch <br />禁用:set nohlsearch</p> <p>(5) 语法高亮 <br />启用:syntax on <br />禁用:syntax off</p> <p>(6) 忽略字符的大小写 <br />启用:set ic <br />不忽略:set noic</p> <p>获取帮助: <br />:help <br />:help subject</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信