感谢支持
我们一直在努力

Linux的Vi编辑器使用笔记

以前用过一段时间的vi编辑器,但是感觉用起来非常不顺手。因为之前用惯了word,所以对这种命令行风格的编辑器就很不习惯。在网上看到说高手一般都比较青睐于vi编辑器,对于菜鸟来说vi编辑器是把钝器,对高手来说却是利器。我在linux系统下一般都是用gedit编辑器来写代码,因为gedit类似于windows下面的记事本,用起来舒服点。相信大多数像我一样的菜鸟都是这样的吧。最近看到一本linux的书上有讲vi编辑器的,我想就干脆再复习一下,当是为今后成为高手打下铺垫,哈哈~ 


讲到vi编辑器,首先不得不说的是它的3种工作模式:命令模式、输入模式及末行模式。我们先理解一下这三种模式到底是怎么回事。


命令模式:在这个模式下,输入的所有字符被当做vi的编辑命令。vi的命令模式相当于windows的记事本中的编辑菜单。复制、粘贴、删除等等这些文本编辑功能都在这个模式下实现。这个模式下输入的命令不在屏幕上显示出来。


输入模式:这个模式很容易理解,输入的字符就是你想要的编辑的内容。


末行模式:也叫ex转义模式。这个模式相当于windows记事本的文件菜单,文件的保存、退出功能都在末行模式下完成。这个模式下输入的命令会在屏幕上显示出来。


好了,我们已经理解了这三种模式是怎么回事,接下来就是了解在使用vi编辑器时怎么在这三种模式间进行转换





从图中可以看到,用户刚开始进入vi编辑器时,默认是命令行模式,在该模式中如果输入i或a则可以进入输入模式,如果输入shift+;则可以进入末行模式。当处于输入模式或者末行模式中时,可以输入Esc来返回命令行模式


现在已经理解了vi编辑器的3种模式以及它们的转换,接下来就开始实战吧!


进入vi


①vi  进入vi编辑器,对一个vi空文件进行操作


②vi  filename 若文件不存在则建立新文件,光标定位在第一行第一列


③vi + filename若文件不存在则建立新文件,光标定位在最后一行第一列


④vi +n filename 若文件不存在则建立新文件,光标定位在第n行第一列


⑤vi +/pattern filename  若文件不存在则建立新文件,光标定位在第一个与pattern串匹配的行首

退出vi


在Windows记事本中,退出时在文件菜单下的。文中前面提到vi的末行模式相当于windows记事本的文件菜单。所以可以想象,vi的退出是在末行模式下进行的。下面说明在末行模式下怎么退出vi


①:w[文件名] 将编辑的文件进行保存,但是不退出vi;若指定了文件名,则将编辑的文件保存到指定的文件中


②:wq  将编辑的文件内容写回文件中,并且退出vi,返回到shell中


③ZZ 与:wq的作用一样


④:x与:wq的作用一样


⑤:q 退出vi,当文件已经被修改时,在屏幕的底行显示提示信息


⑥q! 不保存文件,强行退出vi。vi中的!常常具有强制执行的意思



移动光标


移动光标的动作在Windows记事本中相当于编辑功能,对应于vi编辑器的命令模式,因此以下命令式在命令模式下执行的。


l右移一个字符,nl右移n个光标


h左移一个字符,nh左移n个光标


j下移一行,nj下移n


k:上移一行,nk上移n


Ctrl+f向上滚动一屏


Ctrl+b向下滚动一屏


Ctrl+u向上滚动半屏


Ctrl+d向下滚动半屏


删除命令


该命令也是在命令模式下执行的


x删除光标所在的字符,nx删除光标所在位置开始的后n个字符


X删除光标前的字符,nX删除光标前的n个字符


dw删除光标所在字, ndw删除光标位置后的n个字


dd删除光标所在行


D从光标位置开始删除至行尾


重复及恢复命令


该命令是在命令模式下执行的


. 重复刚才执行过得命令


u :取消前面刚执行过的更改操作


U把当前行恢复成编辑前的状态,不管对此行编辑了多少次


复制、更改及取代命令


yw:复制光标处的字到缓冲区,nyw复制光标开始处后的n个字到缓冲区


yy:复制当前行到缓冲区。nyy复制当前行开始的后n行到缓冲区


p:将缓冲区内容贴在当前光标所在行的下一行


P:将缓冲区内容贴在当前光标所在行的上一行


rx:用x取代光标所在位置的字符,这里x代表一个字符。nrxx取代光标所在位置开始的后n个字符


R:进入替换状态。随后键入的字符一一取代光标所在位置及后面若干字符,直到按ESC退出替换状态


查找及替换命令


该命令是在命令模式下执行的


/字符串:从当前光标所在位置向下查找该字符串


?字符串:从当前光标所在位置向上查找该字符串


n:往下继续寻找下一个相同的字符串,这是在使用了上述两个查找命令后使用的


N:往上继续寻找下一个相同的字符串,这是在使用了上述两个查找命令后使用的


n1,n2 s/字符串1/字符串2:在第n1行和第n2行之间,寻找当前行上的第一个字符串1,并用字符串2替换之。


n1,n2 s/字符串1/字符串2/g:在第n1行和第n2行之间,寻找当前行开始的所有字符串1,并用字符串2替换之。其中g代表全程替换




显示行号


set nu

赞(0) 打赏
转载请注明出处:服务器评测 » Linux的Vi编辑器使用笔记
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏