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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值