VI入门教程

发布于:2022-11-01 ⋅ 阅读:(324) ⋅ 点赞:(0)

1 VI入门

1.1 为什么学习VI

  • VI基本上总是可用的,如果所在的系统没有图形界面,例如远程服务器或者X Windows系统配置有故障。
  • VI轻巧流畅,是一个轻量化的工具

1.2 背景知识

大多数Linux发行版自带的并不是真正的Vi,而是Vi增强版Vim。Vim对于传统的UNIX系统的Vi进行了重大的改进,在Linux系统中,Vi通常是指向Vim的符合链接或作为Vim的别名。

1.3 启动和退出Vi

  1. 启动vi

    [root@lvs ~]# vi
    ~
    ~                                                                                             VIM - Vi IMproved
    ~
    ~                                                                                              version 7.4.629
    ~                                                                                          by Bram Moolenaar et al.
    ~                                                                                     Modified by <bugzilla@redhat.com>
    ~                                                                                Vim is open source and freely distributable
    ~
    ~                                                                                       Help poor children in Uganda!
    ~                                                                               type  :help iccf<Enter>       for information
    ~
    ~                                                                               type  :q<Enter>               to exit
    ~                                                                               type  :help<Enter>  or  <F1>  for on-line help
    ~                                                                               type  :help version7<Enter>   for version info
    
    
  2. 退出vi

     :q
    
  3. 强制退出Vi
    如果由于某些原因,Vi未能退出,通常因为修改了文件,但没有保存,可以加上感叹号,强行退出Vi。

     :q!
    

    如果在Vi中迷路,搞不清楚当前所处的模式,连按两次Esc键就可以返回命令模式。

1.4 编辑模式

Vi是一款模式编辑器,当Vi启动时,进入命令模式。在该模式下,几乎每个按键都是命令。

1.4.1 插入模式

向文件中添加文本,必须先进入插入模式,只需按i键即可。如果Vi是以增强方式运行的,屏幕底部会看到INSERT字样,现在就可以输入文本了

	The test scripts

按Esc键,可以退出插入模式返回命令模式。

1.4.2 保存文件

保存对文件的改动,按Esc先退回命令模式,然后输入冒号,之后输入w,然后按Enter完成保存,输入wq保存并退出。

1.5 光标移动

命令模式下,Vi提供了大量的光标移动命令,如下:

命令 光标移动
l或右方向键 向右移动一个字符
h或左方向键 向左移动一个字符
j或下方向键 向下移动一行
k或上方向键 向上移动一行
数字0 移动到当前行首
^ 移动到当前行中第一个非空白字符处
$ 移动到当前行尾
w 移动到下一个单词开头或标点符号
W 移动到下一个单词开头,忽略标点符号
b 移动到上一个单词开头或标点符号
B 移动到上一个单词开头,忽略标点符合
数字键G 移动到指定行,1G可以使光标移动到文件的第一行
G 移动到文件的最后一行

1.6 基本编辑

大多数编辑是由少数基本操作组成的,例如插入文本,删除文本,而通过剪切、粘贴可以移动文本。除此之外,Vi还提供了有限形式的撤销操作。在命令模式下按u键,Vi会撤销上一次做出的改动。

1.6.1追加

想在句末添加一些文本,可以使用文本追加命令a(append的缩写),将光标移动至行尾并输入a,光标会移动过行尾,同时Vi进入插入模式,编辑完成后按Esc键退出插入模式。

一种更便捷的方式是输入A,将光标移动至当前行的行尾并进行追加,追加完成后,按Esc退出插入模式。

1.6.2 新建

插入文本的另一种方法是新建,可以在已有的两行直接插入一个空行并进入插入模式,新建命令有两种,如下表

命令 新建内容
o 在当前行之下新建一行
O 在当前行之上新建一行

1.6.3 删除

Vi提供了多种删除文本的方法

命令 删除内容
x 删除当前字符
3x 删除当前字符和接下来的两个字符
dd 删除当前行
5dd 删除当前行及接下来的4行
dW 删除从光标所在处一直到下一个单词的开头
d$ 删除从光标所在处一直到行尾
d0 删除从光标所在处一直到行首
dG 删除从当前行一直到文件末尾
d20G 删除从当前行一直到第20行

标准的Vi支持单级撤销,Vim支持多级撤销。

1.6.4 剪切、复制和粘贴

d命令不仅能删除文本,还可以剪切文本。每次使用d命令,被删除的文本就会被复制到粘贴缓存区,可将其想象成粘贴板。随后可以使用p命令将粘贴缓存区中的内容粘贴到光标的下一行,使用P命令将粘贴缓存区中的内容粘贴到光标的上一行。

y命令可用于复制文本,其使用方式和用于剪切文本的d命令差不多,y命令示例:

命令 删除内容
yy 复制当前行
5yy 复制当前行及接下来的4行
yW 复制从光标所在处一直到下一个单词的开头
y$ 复制从光标所在处一直到行尾
y0 复制从光标所在处一直到行首
yG 复制从当前行一直到文件末尾
y20G 复制从当前行一直到第20行

1.6.5 合并

Vi提供了一个用于合并的特殊命令J

The quick brown for jumped over the lazy dog. It was cool.
Line 2
Line 3 Line 4
Line 5

1.6.6 搜索和替换

Vi能够在单行或整个文件范围内将光标移动至搜索结果处。另外,还可以执行文本搜索,用户可选择替换时是否需要确认。

1.6.6.1 行内搜索

f命令在行内搜索并将光标移动至指定支付的下一次出现处。例如,命令fa会将光标移动至字符a在行内的下一次出现的位置。输入分号可以重复先前的搜索。

1.6.6.2 搜索整个文件

/命令可以将光标移动至指定单词或短语的下一次出现处,其工作方式和之前讲过的less命令一样。当输入/命令时,/字符会出现在屏幕底部。接着,输入待搜索字符串,然后按Enter键。光标会移动到包含待搜索字符串的下一个位置。要想重复搜索上一次指定的字符串,使用n命令即可。Vi也能够使用正则表达式。

1.6.6.3 全局搜索和替换

Vi使用ex命令在若干行或整个文件范围内执行搜索和替换操作,要想将文件中所有的单词Line更改为line,可以输入下列命令。

:%s/Line/line/g

上述命令拆开,看看各部分的含义

组成 含义
: 冒号表示接下来是ex命令
% 指定操作的行范围,%是一种便捷写法,代表从第一行到最后一行。也可以将范围写作1,5或者1, ( ( 表示从第一行到最后一行)。如果未指定行范围,则仅对当前行执行操作。
s 替换(substitution)
/Line/line/ 指定搜索模式和替换文本
g 代表全局(global),表示对行中所有搜索字符串执行替换操作。如果不指定,则仅替换每行搜索到的第一个字符串。
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到