Loading... <p> vim是vi的增强版本,具有比vimi更加强大的功能,对于尤其适合编写脚本,下面总结一下vim的常用方法。 </p> <p> vim三种工作模式。 </p> <p> 1. 编辑模式: </p> <p> 以vim打开文件就直接进入此模式,可以在此模式中删除、复制、粘贴等操作。 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-86.png" /> </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-85.png" /> </p> <p> 如上图所示,使用vim打开/etc/inittab文件,直接进入编辑模式。 </p> <p> 2. 输入模式: </p> <p> 在此模式下进行文件内容的输入和编辑。 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-88.png" /> </p> <p> 看到“INSERT”即进入了输入模式 </p> <p> 3. 末行模式: </p> <p> 可以提供查找数据、替换字符、设置vim环境、保存文件等功能。 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-6.png" /> </p> <p> 看到“:”即进入了末行模式。 </p> <p> 打开文件: </p> <p> vim [option]…[FILE] </p> <p> 当指定的文件存在则打开文件,如果不存在则可以保存为新的文件。 </p> <p> 编辑模式 –> 输入模式 </p> <p> 当使用vim打开文件时默认进入的是编辑模式,如果想要切换到输入模式,可以使用以上方法 </p> <p> i:在光标所在处切换为输入模式。 </p> <p> I:光标移至行首切换为输入模式。 </p> <p> a:在光标所在处的后方切换为输入模式。 </p> <p> A:光标移至行尾切换为输入模式。 </p> <p> o:在光标所在处的下方新建一个空行并切换为输入模式。 </p> <p> O:在光标所在处的上方新建一个空行并切换为输入模式。 </p> <p> 输入模式 –> 编辑模式 </p> <p> 按 ESC 键即可由输入模式回到编辑模式 </p> <p> 编辑模式 –> 末行模式 </p> <p> 直接输入“:”即可进入末行模式 </p> <p> 末行模式 –> 编辑模式 </p> <p> 按 ESC 键可以回到编辑模式 </p> <p> 注:从输入模式不能直接进入末行模式,必须经由编辑模式方可切换,输入模式 –> 编辑模式 –> 末行模式 </p> <p> vim +# file:打开文件时光标直接处于第#行行首。 </p> <p> </p> <p> 退出文件: </p> <p> 末行模式下 </p> <p> 不保存强制退出 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-42.png" /> </p> <p> 保存退出 </p> <p> 两种方法效果相同 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-81.png" /> </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-25.png" /> </p> <p> 强制保存 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-38.png" /> </p> <p> 强制保存退出 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-28.png" /> </p> <p> 编辑模式下 </p> <p> 输入ZZ也可以保存退出。 </p> <p> 编辑模式 </p> <p> 光标移动 </p> <p> 字符间移动 </p> <p> h或左箭头:光标向左移动一个字符 </p> <p> j或下箭头:光标向下移动一个字符 </p> <p> k或上箭头:光标向上移动一个字符 </p> <p> l或右箭头:光标向右移动一个字符 </p> <p> 一次移动多个字符 #{h|j|k|l} </p> <p> eg:输出3j即可向下移动3行 </p> <p> 单词间跳转: </p> <p> w:光标移至下一个单词的词首 </p> <p> b:光标移至当前单词或前一个单词的词首 </p> <p> e:光标移至当前单词或下一个单词的词尾 </p> <p> 一次移动多个单词 #{w|b|e} </p> <p> 行内移动: </p> <p> ^:光标移至行首(第一个非空字符) </p> <p> 0:光标移至行首(绝对行首) </p> <p> $:光标移至行尾(绝对行尾) </p> <p> 句子间移动: </p> <p> ):下一句的句首 </p> <p> (:上一句的句首 </p> <p> 段落间移动: </p> <p> }:下一段 </p> <p> {:上一段 </p> <p> 行间移动: </p> <p> G:最后一行 </p> <p> #G:直接跳转至第#行 </p> <p> gg:直接跳转至首行 </p> <p> #[Enter]:光标向下移动#行 </p> <p> 翻屏操作: </p> <p> Ctrl+f:向文件尾部翻一屏 </p> <p> Ctrl+b:向文件首部翻一屏 </p> <p> Ctrl+d:向文件尾部翻半屏 </p> <p> Ctrl+u:向文件乎部翻半屏 </p> <p> 编辑命令 </p> <p> 删除操作: </p> <p> x:删除光标所在处的字符(相当于[Del]键) </p> <p> X:删除光标前面的一个字符(相当于[Backspace]键) </p> <p> #x:删除后面的#个字符 </p> <p> d:删除命令 </p> <p> 结合光标跳转字符使用,删除跳转范围内的字符 </p> <p> #d+光标跳转符(w,b,e,$,0,^) </p> <p> dd:删除光标所在行 </p> <p> dG:删除从光标所在到最后一行的所有数据 </p> <p> d1G:删除光标所在到第一行的所有数据 </p> <p> D:删除从光标所在处至行尾的内容,与d$相同 </p> <p> 注意:最后一次删除的内容会被保存到缓冲区 </p> <p> 复制操作: </p> <p> y:复制命令 </p> <p> 结合光标跳转字符使用,复制跳转范围内的字符 </p> <p> #y+光标跳转符(w,b,e,$,0,^) </p> <p> yy:复制光标所在的那一行 </p> <p> #yy:复制光标所在的向下n行 </p> <p> y1G:复制光标所在行到第一行的所有数据 </p> <p> yG:复制光标所在行到最后一行的所有数据 </p> <p> Y:复制光标所在处至行尾的内容,与y$相同 </p> <p> 粘贴操作 </p> <p> 粘贴的位置取决于最后一次删除、复制操作的内容,如果删除或复制的操作为行则: </p> <p> p:粘贴至光标所在行的下方 </p> <p> P:粘贴至光标所在行的上方 </p> <p> 如果删除或复制操作为字符或单词则: </p> <p> p:粘贴于当前光标所在处后方 </p> <p> P:粘贴于当前光标所在处前方 </p> <p> 修改操作 </p> <p> 修改操作可以在进行删除操作后直接切换为输入模式 </p> <p> c:删除命令 </p> <p> 结合光标跳转字符使用,删除跳转范围内的字符 </p> <p> #c+光标跳转符(w,b,e,$,0,^) </p> <p> cc:删除光标所在行并切换至输入模式 </p> <p> cG:删除从光标所在到最后一行的所有数据并切换至输入模式 </p> <p> c1G:删除光标所在到第一行的所有数据并切换至输入模式 </p> <p> C:删除从光标所在处至行尾的内容并切换到输入模式,与c$相同 </p> <p> 撤消编辑 </p> <p> u:撤消最近一次的操作 </p> <p> #u:撤消最近的#次操作,最多可撤消50次的内容 </p> <p> 撤消此前的撤消操作 </p> <p> Ctrl+r </p> <p> 重复前一条命令 </p> <p> . </p> <p> 查找与替换 </p> <p> /pattern:向下查找与pattern匹配的字符串 </p> <p> ?pattern:向上查找与pattern匹配的字符串 </p> <p> n:重复前一个查找的操作。如果使用/进行查找,则n表示向下查找,如果使用?进行查找,则n表示向上查找 </p> <p> N:与n相反,表示与前一个查找进行反向操作 </p> <p> 末行模式 </p> <p> 行间跳转 </p> <p> :#[Enter]:光标直接跳转至第#行 </p> <p> $:可跳转至最后一行 </p> <p> 内容定界 </p> <p> 指定起始位置和结束位置来定义内容的范围 </p> <p> eg: :20 +3 表示从20行开始的4行 </p> <p> #:第#行 </p> <p> .:当前行 </p> <p> $:最后一行 </p> <p> %:全文,相当于1,$ </p> <p> :10,$-1 表示从第10行到倒数第2行 </p> <p> c,d,y等命令可直接附加在指定的范围后使用 </p> <p> :10,$-1 d:表示删除从第10行到倒数第2行的内容 </p> <p> w:将指定范围的内容另存至其它文件 </p> <p> :.$w /root/test:将从当前行至最后一行的内容另存为/root/test </p> <p> 如不指定范围,直接使用w命令,则可将整个文件另存为一个新的文件 </p> <p> r:在指定位置读入其它文件的内容 </p> <p> :.r /root/test:在当前位置读入/root/test文件内容 </p> <p> 查找与替换 </p> <p> s/查找模式/要替换成的内容/gic </p> <p> 查找模式:可以使用正则表达式 </p> <p> 要替换成的内容:不能使用模式,仅能使用引用 </p> <p> 引用模式匹配到的所有内容可以使用&符号来替代\1等字符 </p> <p> g:global,全行替换 </p> <p> 如果不使用g,查找的字符所在行中存在不止一个匹配项时,只替换第一个 </p> <p> i:不区分字符大小写 </p> <p> :%s/\<file\>/FILE/gi:只替换file单词,忽略包含在单词中的file字符,且不区分大小写 </p> <p> c:替换前提示用户确认是否替换,常与g同时使用 </p> <p> </p> <p> 可视化模式: </p> <p> 用于选取整块范围的模式 </p> <p> 在编辑模式下输入以下命令: </p> <p> v:光标走过的字符都被选中 </p> <p> V:光标走过的行都被选中 </p> <p> Ctrl+v:以长方形的方式进行选择 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-74.png" /> </p> <p> 以上图为例,将光标移到Default的词首,按下Ctrl+v键,可以看到模式切换为块选择,此时选中Default单词并向下移动光标,与Default字符相对齐的字符都被选中。 </p> <p> y:将选中的数据复制 </p> <p> d:将选中的数据删除 </p> <p> 多文件模式 </p> <p> 可以同时打开多个文件,并在各个文件中进行切换 </p> <p> vim file1,file2…… </p> <p> :file:列出目前这个vim打开的所有文件 </p> <p> :n:下一个文件 </p> <p> :N:上一个文件 </p> <p> :next:与:n相同 </p> <p> :previous:与:N相同 </p> <p> :last:最后一个文件 </p> <p> :first:第一个文件 </p> <p> :wqa:保存并退出所有文件 </p> <p> :wqall:与:wqa相同 </p> <p> 多窗口模式 </p> <p> 多文件操作 </p> <p> vim [option] file1,file2 …… </p> <p> [option]: </p> <p> -o:水平分割多个文件 </p> <p> -O:垂直分割多个文件 </p> <p> 在已打开的文件中再次的打开一个文件并且以水平分割的方式放置: :sp [filename] </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-30.png" /> </p> <p> 文件默认以水平分割的方式打开 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-94.png" /> </p> <p> 在多个窗口中进行切换: Ctrl+w,方向键 </p> <p> </p> <p> 单文件操作 </p> <p> Ctrl+w,s:水平分割单个文件 </p> <p> Ctrl+w,v:垂直分割单个文件 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-65.png" /> </p> <p> 首先以将文件水平分割成上面两个窗口,再把上面的窗口以垂直方式分割成两个窗口 </p> <p> :sp:水平分割单个文件 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-45.png" /> </p> <p> 窗口属性定义 </p> <p> 以下操作均在末行模式下进行: </p> <p> :set nu:显示行号 </p> <p> :set nonu:取消显示行号 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-42-1.png" /> </p> <p> </p> <p> :set ai:自动缩进 </p> <p> :set noai:取消自动缩进 </p> <p> 设置了自动缩进后,换行时光标会自动对齐上面行的行首位置,而不会回到绝对行首 </p> <p> </p> <p> :set ic:忽略字符大小写 </p> <p> :set noic:取消忽略字符大小写 </p> <p> 设置此项后在查找字符时会忽略大小,默认关闭 </p> <p> </p> <p> :set sm:显示与之匹配的括号的另外半边 </p> <p> :set nosm:取消显示与之匹配的辞呈的另外半边 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-82.png" /> </p> <p> 上图中将光标移至左中括号时,自动高亮显示与之匹配的右中括号 </p> <p> </p> <p> :set hlsearch:开启搜索高亮显示 </p> <p> :set nohlsearch:关闭搜索高亮显示 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-29.png" /> </p> <p> 上图中搜索f,会自动高亮标识所有的f,此选项会默认开启,并且即使关闭了当前文件,再次打开其它文件时也会高亮标识之前的搜索结果。 </p> <p> </p> <p> :set syntax= [on|off]:语法高亮显示控制 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155814-85-1.png" /> </p> <p> 上图中带颜色的字符即为开启语法高亮显示的结果,可以帮忙用户标识语法结构,查找语法错误,如果关闭此功能则如下图所示 </p> <p> <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703155815-29.png" /> </p> <p> </p> <p> :set all:显示目前所有环境参数设置值 </p> <p> :set:显示与系统默认值不同的设置参数,一般就是用户改动过的设置 </p> <p> 配置文件 </p> <p> 可将属性命令写在配置文件中设置vim默认属性,注释使用双引号。 </p> <p> 全局配置文件:/etc/vimrc </p> <p> 用户配置文件:~/vimrc </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信