Linux之vi命令详解

Vi 简介
      文本编辑大概是系统运行中最为频繁的操作了,而在Linux下有一种标准而功能极为强大的编辑器,那就是Vi(Visual Edtior)。
      对于Linux的初学者来说,vi可能显得极为不友好――所有操作都要用特殊的击键或者组合键来控制,而且似乎这些命令跟要执行的操作并没有什么关系,非常难记,比起Windows下的notepad实在是"恐怖"多了。其实这只是转移工作环境中的正常现象,如果经过大量的实践,你会发现其实vi对于键盘的利用非常合理,如果用的熟练了,vi不仅可以成为你的文本编辑利器,而且对于系统配置甚至编程都有莫大的帮助。

Vi实用操作指南
   作为一个Unix系统下标准的全屏幕文本编辑器,vi可以方便的实现插入、修改、拷贝粘贴三种基本的编辑操作。但是不像其他的字处理器,vi是以指令模式作为缺省的模式运行的。
更复杂的操作可以用一系列的按键来完成。

   基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

    1) 命令行模式command mode)

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

    2) 插入模式(Insert mode)

  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

    3) 底行模式(last line mode)

  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

    不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。

 

打开文件

vi filename :打开或新建文件,并将光标置于第一行首 
vi +n filename :打开文件,并将光标置于第n行首 
vi + filename :打开文件,并将光标置于最后一行首 
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename 
vi filename....filename :打开多个文件,依次进行编辑

关闭文件

 可以随时用ESC键切换到指令模式,连续按一两次就够了,这时系统会发出哔哔声以确定进入指令模式。然后再指令模式下有多种退出方法:
      ZZ         保存并退出
      :x         保存并退出
      :wq        保存并退出
      :w         保存并返回指令模式
      :30,60w   [新文件] 将30到60行的内容写入[新文件]
      :30,60w>> [文件] 将第30到60行的内容写入[文件]的末尾
      :w %.new 将当前缓冲区中的内容写入file.new中,File是当前编辑的文件名
      :q        退出
      :q!        退出并丢掉所有未保存信息
      Q         退出vi,激活ex
      :e file2 在不离开vi的条件下编辑file2
      :n        编辑下一个文件
      :e!        回到当前编辑文件上次保存的状态

移动光标
      移动光标自然是编辑过程中的基本技能,这个步骤一定要熟练掌握。
      1.逐字符移动
      h       左移一个字符
      j       下移一行
      k       上移一行
      l      右移一个字符
      2.逐单词移动
      w,W   跳至后一个单词词首(W忽略标点)
      b,B   跳至前一个单词词首(B忽略标点)

      e  跳至当前或下一个单词的词尾

      3.行内跳转

      $       至行尾
      ^       至本行第一个非空字符
      0       至行首

      4. 行间跳转
      G       至缓冲区的起始处
      nG      n是整数,至第n行

      gg       跳转到文件头

      GG     跳转到文件尾

翻屏
      CTRL-d 向下半页
      CTRL-f 向下一页
      CTRL-u 向上半页
      CTRL-b 向上一页
      H       移动到当前窗口的第一列
      M       移动到当前窗口的中间列
      L       移动到视窗的最后列 │
删除、复制、粘贴、修改

很多指令都是控制键和数字等结合起来控制的。没错!其中很多大致是由指令与范围所构成。

例如 dw 是由删除指 d 与范围w 所组成,代表删除一个字 d(elete) w(ord)

  指令列表有:
      d       删除(delete) 剪切
      y       复制(yank)
      p       放置(put)
      c       修改(change)

      范围可以是下列几个:
      e       光标所在位置到该字的最后一个字母
      w       光标所在位置到下个字的第一个字母
      b       光标所在位置到上个字的第一个字母
      $       光标所在位置到该列的最后一个字母
      0       光标所在位置到该列的第一个字母
      )       光标所在位置到下个句子的第一个字母
      (       光标所在位置到该句子的第一个字母
      )       光标所在位置到该段落的最后一个字母
      {       光标所在位置到该段落的第一个字母
      其实组合命令远远不止这些,更多的需要在实践中慢慢体会。

插入文本类命令
i: 在光标前
I: 在当前行首
a: 光标后
A: 在当前行尾
o: 在当前行之下新开一行
O: 在当前行之上新开一行
r: 替换当前字符
R: 替换当前字符及其后的字符,直至按ESC键
s: 从当前光标位置处开始,以输入的文本替代指定数目的字符
S: 删除指定数目的行,并以所输入文本代替之
ncw或nCW: 修改指定数目的字
nCC: 修改指定数目的行

替换

r 替换光标所在字符

R 进入替换模式,直到按下ESC

撤销编辑操作

u

#u

可视化模式

v:按字符选取

V:按矩形选取

搜索及替换命令

/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换

s/vivian/sky/ # 替换当前行第一个 vivian 为 sky 
s/vivian/sky/g # 替换当前行所有 vivian 为 sky 
n,$s/vivian/sky/ # 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky 
n,$s/vivian/sky/g # 替换第 n 行开始到最后一行中每一行所有 vivian 为sky 
%s/vivian/sky/g # (等同于 g/vivian/s//sky/) 替换每一行的每一个 vivian 为 sky 
s#vivian/#sky/# # 替换当前行第一个 vivian/ 为 sky/(可以使用 #或+作为分隔符,此时中间出现的 / 不会作为分隔符) 
s/p1/p2/g # 将当前行中所有p1均用p2替代 
n1,n2s/p1/p2/g # 将第n1至n2行中所有p1均用p2替代 
g/p1/s//p2/g # 将文件中所有p1均用p2替换 

 

 

 

转载于:https://www.cnblogs.com/wangyi429111/p/8350349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值