vi编辑器

第四章 vi编辑器

4.1       vi 简介

vi 是 UNIX世界里使用非常普遍的全屏幕文本编辑器,几乎任何一种UNIX系统都会提供这套软件。AIX当然也支持这种编辑器。熟悉DOS下的文本处理后,用户在开始接触vi时也许会感到它并不好用,然而一旦用户熟悉、掌握了vi,就会发现它实在是一种功能强大、使用灵活方便的编辑器。

UNIX提供一系列的ex编辑器,包括ex,edit和vi。相对于全屏幕编辑器,现在可能很难想像如何使用ex,edit这种行列编辑器。 vi的原意是“Visual”,它是一个立即反应的编辑程式,也就是说可以立刻看到操作结果。vi必须控制整个终端屏幕的显示输出,而终端的种类有许多种,特性又不尽相同,所以 vi有必要知道现在所使用的是哪一种终端。这是通过 TERM 这个环境变量来设定的。

在命令行键入vi就可以进入vi的编辑环境vi有三种模式:命令模式、文本输入模式以及命令项模式。执行vi以后,会先进入命令模式,此时用户可输入各种子命令对行进行编辑,如删除行、拷贝行等。在文本输入模式下,用户可以修改一行的内容并添加新行。在命令模式下键入i、I、a、A或o等即可进入文本输入模式,键入ESC键即可返回命令模式。在命令项模式下,用户可以通过子命令输入更多的参数,如“/”子命令要求输入下一个查找项。用户使用ESC键返回命令模式。

4.2       vi的进入与离开  

  vi可以在全屏幕方式下编辑一个或多个文件。如果在执行vi时没有指定文件名,则vi命令会自动产生一个无名的空文件。如果指定的文件不存在,则vi将按指定的文件名创建一个新的文件。进入 vi后屏幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。要离开 vi 可以在命令模式下键入:q :wq命令则是存档后再离开(注意冒号)。注意vi并不锁住所编辑的文件,因此多个用户可能同时编辑一个文件,那么最后保存的文件版本将被保留。

 以下是vi 命令使用的一些选项及说明:

    -c command  :在对文件进行编辑前,先执行command命令;

    -rfilename     :恢复文件filename;

    -R                 :以只读方式编辑文件;

    -ynumber     :每屏只编辑number 行文本。 

4.3       vi 的文本输入模式  

 使用以下几种命令可以进入文本输入模式(用户在任何时候都可以按ESC键返回命令模式):

新增 (append) :

a     :从光标所在位置之后开始输入文本

A    :从光标所在行尾开始输入文本

插入 (insert)

i     :从光标所在位置之前开始输入文本

I       :从光标所在行的第一个非空白字符前面开始输入文本  

开始 (open) :

o    :在光标所在行后插入一新行。

O    :在光标所在行前插入一新行。  

4.4       vi 基本编辑命

在 vi里,输入跟编辑是两码事。编辑是在命令模式下操作的,先利用命令移动光标来定位要进行编辑的地方,然后才下命令做编辑。 

 

 

命令

说明

备注

cc 或S

修改一整行的文本

 

C

改变一行中光标所在位置之后的部分

 

dd

删除光标所在的列

 

D

删除一行中光标所在位置之后的部分

 

dw

删除光标所在的单词

 

J

将下一行文本内容合并到本行行尾

 

r

修改光标所在字符,r 后接要修正的字符

 

R

修改本行内容

 

s

修改光标所在字符

 

u

恢复上一次所做的修改

 

x

删除光标所在字符

 

X

删除光标左侧字符

 

~

改变光标所在字符的大小写

 

.

重复上一次的操作

 

<< 

将当前行移到左边

 

>> 

将当前行移到右边

 

p

将缓冲区的内容拷贝到光标所在行的下一行

 

P

将缓冲区的内容拷贝到光标所在行的上一行

 

“ad

将文本删除至缓冲区a

 

“ap

粘贴缓冲区a中的内容

 

yy或Y

将当前行存入缓冲区

 

yw

将光标所在的单词存入缓冲区

 

0

移动到光标所在列的最前面

=[Home]

移动到光标所在列的最后面

=[End]

[CTRL+d]

向下半页

=[PageDown]

[CTRL+f]

向下一页

 

[CTRL+u]

向上半页                 

 

[CTRL+b]

向上一页

=[PageUp]

[CTRL+e]

下滚一行

 

[CTRL+y]

上滚一行

 

H

移动到屏幕的第一行

 

M

移动到屏幕的中间

 

L

移动到屏幕的最后一行

 

b

移动到上个小字的第一个字母

 

B

移动到上个大字的第一个字母

 

w

移动到下个小字的第一个字母  

 

W

移动到下个大字的第一个字母  

 

e

移动到下个小字的最后一个字母

 

E

移动到下个大字的最后一个字母

 

^

移动到光标所在列的第一个非空白字符

 

n-

减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以上 n 行

 

n+

加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n 行

 

nG

直接用数字 n 加上 G 移动到第 n 行

 

fx

往右移动到 x 字符上

 

Fx

往左移动到 x 字符上

 

tx

往右移动到 x 字符前

 

Tx

往左移动到 x 字符前

 

;

配合 f&t 使用,重复一次

 

,

配合 f&t 使用,反方向重复一次

 

/string

往右移动到有 string 的地方

 

?string

往左移动到有 string 的地方

 

n

配合 /&? 使用,重复一次

 

配合 /&? 使用,反方向重复一次

 

%

移到匹配的”()”或”{}”上

 

n(

左括号移动到句子的最前面,前面加上数字可以指定往前移动 n 个句子

句子是以! . ? 三种符号来界定

n)

右括号移动到下个句子的最前面,前面加上数字可以指定往后移动 n 个句子

段落是以段落间的空白列界定

n{

左括弧移动到段落的最前面,前面加上数字可以指定往前移动 n 个段落

 

n}

右括弧移动到下个段落的最前面,前面加上数字可以指定往后移动 n 个段落

 

 

 

这些编辑命令非常有弹性,基本上可以说是由命令与范围所构成。例如 dw 是由删除指令d 与范围 w 所组成,代表删除一个字 d(elete) w (ord) 。命令列表如下:

d   删除(delete)

y   复制(yank)

p   放置(put)

c   修改(change)

范围可以是下列几个:

e   光标所在位置到该字的最后一个字母

w   光标所在位置到下个字的第一个字母

b   光标所在位置到上个字的第一个字母

$   光标所在位置到该行的最后一个字母

0   光标所在位置到该行的第一个字母

)   光标所在位置到下个句子的第一个字母

(   光标所在位置到该句子的第一个字母

}   光标所在位置到该段落的最后一个字母

{  光标所在位置到该段落的第一个字母  

4.5       文件处理子命令

  :q 结束编辑(quit)

   如果不想存档而要放弃编辑过的档案则用 :q! 强制离开。

  :w 存档(write)

   其后可加所要存档的档名。 可以将档案命令合在一起,例如 :wq 即存档后离开。

  zz  功能与 :wq相同。

  :n 开始编辑vi激活的文件列表中的下一个文件。

  :n filename 指定被编辑的新的文件。

  :e filename 在vi中编辑另一个文件filename。

  :e #  开始编辑另一个文件。

  :e ! 重新装入当前文件,如果当前文件有改动,则丢弃以前的改动。

  :r filename 将文件filename合并至当前文件的文件尾。 

另外值得一提的是 vi 的部份存档功能。可以用 :n,m w filename 将第 n 行到第 m 行 的文字存放的所指定的filename 里去。

### vi 编辑器使用指南 vi 编辑器是一种功能强大的文本编辑工具,广泛应用于 Unix 和 Linux 系统中。以下是关于 vi 编辑器的使用方法和相关操作的详细说明。 #### 1. 基本概念 在 vi 的设计哲学中,输入与编辑是两个独立的概念。编辑操作需要在 **指令模式** 下完成,用户通过移动光标定位到目标位置后执行相应的编辑指令[^1]。 #### 2. 编辑操作 vi 提供了丰富的编辑指令,主要包括删除、复制、修改等操作。以下是一些常见的编辑指令及其用法: - **删除操作** - `d`:删除指令。例如,`dw` 表示删除光标所在位置到下一个字的第一个字母[^2]。 - `dd`:删除整行内容。 - `D`:删除光标到该行末尾的所有内容。 - **复制操作** - `y`:复制指令。例如,`yw` 表示复制光标所在位置到下一个字的第一个字母[^2]。 - `yy`:复制整行内容。 - **粘贴操作** - `p`:将暂存区的内容粘贴到当前光标位置之后[^2]。 - **修改操作** - `c`:修改指令。例如,`cw` 表示修改光标所在位置到下一个字的第一个字母[^2]。 - `cc`:修改整行内容。 #### 3. 范围定义 vi 的编辑指令通常由一个操作符(如 `d`, `y`, `c`)和一个范围组成。范围可以是以下几种: - `e`:光标所在位置到该字的最后一个字母。 - `w`:光标所在位置到下一个字的第一个字母。 - `b`:光标所在位置到上一个字的第一个字母。 - `$`:光标所在位置到该行的最后一个字符。 - `0`:光标所在位置到该行的第一个字符。 - `)`:光标所在位置到下一个句子的第一个字母。 - `(`:光标所在位置到当前句子的第一个字母。 - `}`:光标所在位置到当前段落的最后一个字母。 - `{`:光标所在位置到当前段落的第一个字母。 #### 4. 文件操作 vi 提供了一些以 `:` 开头的文件操作指令,用于保存和退出编辑器: - `:q`:退出编辑器。 - `:q!`:强制退出,不保存任何更改。 - `:w`:保存文件。可以在后面指定文件名以另存为新文件。 - `:wq` 或 `zz` 或 `:x`:保存并退出编辑器[^2]。 #### 5. 可视化选择 某些 vi 版本(如 elvis)支持可视化选择模式。按下 `v` 键后,可以通过移动光标来选择文本区域,然后执行相应的编辑指令[^2]。 ### 示例代码 以下是一个简单的 vi 操作流程示例: ```bash # 打开文件 vi example.txt # 进入指令模式后,执行以下操作 dw # 删除光标所在位置到下一个字的第一个字母 yy # 复制整行 p # 将复制的内容粘贴到当前位置之后 # 保存并退出 :wq ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值