⒈ 进入vi: 要使用vi,应先注册进入一用户,然后如下所示进行操作: $ vi <filename>
<Enter> ($ 为提示符) ⒉ 退出vi: (1) "Esc"
退出插入方式进入命令方式 :w <Enter> 将文件存盘 :q
<Enter> 退出vi (2) "Esc"
退出插入方式进入命令方式 :q! <Enter> 无条件退出vi,修改内容不存盘 (3)
"Esc" 退出插入方式进入命令方式 :x <Enter>
将文件存盘并退出vi ⒊ 临时退出vi: (1) "Esc" 退出插入方式进入命令方式
:!command <Enter> 执行命令command
命令执行完成后,按<Enter>返回编辑画面。 (2) "Esc"
退出插入方式进入命令方式 :!sh <Enter> 进入子shell
进入子shell后出现$提示符,按Ctrl_d退出子shell,再按<Enter>返回编辑画面。 (3)
"Esc" 退出插入方式进入命令方式 !!command <Enter>
执行命令command的结果代替当前行 【注】 前面没有“∶”,当前行原来的内容消失,代之以命令执行的结果。 ⒋
移动光标及屏幕命令: (1) 移动一个字符的位置
-------------------------------------------------------- h
左 也可一次移动n个字符,如5h,就向左 l 右 移动5个字符的位置。
-------------------------------------------------------- (2) 移动一行的位置
-------------------------------------------------------- j
下 也可一次移动n个字符,如5j,就向下 k 上 移动5行。
nG 移到第n行 :n <Enter> 移到第n行
-------------------------------------------------------- (3) 移动一个字的位置
-------------------------------------------------------- W或w 右移一字
(光标 ①小写字母键把标点及非字母符号 定位在字首) (例如,!@#$%^&*
()_-=+等)也看作 E或e 右移一字 (光标 一个词; 定位在字尾)
②大写字母以空格为字的分界符; B或b 左移一字 (光标 ③前面加数字n将移动n个字的位置;
定位在字首) ④从行尾右移则移向下一行的行首, 从行首左移则移向上一行的行尾。
-------------------------------------------------------- (4) 移动一句的位置
-------------------------------------------------------- (
移至句首 以.?!后加两个空格或换行符的字 ) 移至句尾 符序列定义为句子。 n
( 执行n次 ( n) 执行n次)
-------------------------------------------------------- (5) 屏幕滚动
-------------------------------------------------------- Ctrl_u
上滚半屏 大写字母与小写字母等价 Ctrl_d 下滚半屏 Ctrl_f 下滚一屏
Ctrl_b 上滚一屏
-------------------------------------------------------- (6) 其他常用命令
-------------------------------------------------------- 0
行首 ①这些命令都在命令方式下 ^ 移到行首第一个可
使用; 见字符处 ②H、L、G、M都必须是大写 $
行尾 字母; Ctrl_G 显示当前行行号 ③z是小写字母,且按回车才
Ctrl_L 屏幕重显 有效。 H 屏幕左上角 L
屏幕正文最低行 G 文件最末行 M 屏幕中间行
z<Enter> 当前行翻到屏幕顶 nz<Enter> 第n行翻到屏幕顶
-------------------------------------------------------- ⒌ 插入命令
-------------------------------------------------------- I
当前行的行首前插入 ①按"Esc"就退出插入方式 A 当前行的行尾附加 ②大小写字母作用不同
i 光标前插入 a 光标后插入 O 当前行前开新行
o 当前行后开新行 >> 当前行整个右移一个制表符的位置
<< 当前行整个左移一个制表符的位置
-------------------------------------------------------- ⒍ 删除命令
-------------------------------------------------------- dd
删除当前行,并将删 ①在命令dd,dw,x,X前加数 除的内容存入缓冲区 dw
删除一个词 (光标到词 字n等于命令执行n次 尾部分) ②Ctrl_u
要在插入方式下 x 删除光标所在字符, 使用,按下ESC键后生效
并将删除的内容存入缓 冲区 X
删除光标之前字符, 并将删除的内容存入缓 冲区 D,d$
删除光标至行尾的内容 d0 删除光标至行首的内容 d^
删除光标至行首第一个 可见字符的内容 Ctrl_u 删除刚插入的所有内容
--------------------------------------------------------
要删除刚插入的内容,应在没按ESC键(插入状态下)时按下 Ctrl_u键。光标回到插入的开始处,原有插入的正文仍显示在屏
幕上,它将被键入的新内容所代替。当按下ESC键后,原插入 的正文将被删除。下面是几个删除的例子: 3x
删除光标后三个字符 3X 删除光标前三个字符 2dd
删除当前行和下面的一行共两行 :15,20d 删除第15到20行 :.,$d
删除当前行到最后一行。"."代表当前行,$代 表最后一行。 :.,+3d
删除当前行和下面的三行 :.,-3d 删除当前行和上面的三行
⒎ 恢复 按下ESC键
进入命令方式 按下u 恢复到上一命令以前的状态 再按下u 恢复到上一个u以前的状态
⒏
重复一条命令
任何一条编辑命令执行一次后,如果还需要再执行同样的命令,应该用重复命令“.” 来节省时间,例如在一行中连续插入三个字符串abcdef,那么可以用如下的方法:
键入i 进入插入方式 键入abcdef 插入第一个字符串 按下ESC键
进入命令方式 光标移到正确 的位置,连续 按两个园点. 重复插入两个字符串abcdef
⒐
搜索命令 (1)模式匹配特殊字
-------------------------------------------------------- ^
一行的开始 $ 一行的末尾,或文件的最后一行 . 任一字符 (除换行符外) [
] 字符集内的任一字符,如[abc]代表a,b,c中的任一
字符,[1-5]代表1,2,3,4,5中的任一个。 [^ ]
字符集外的任一字符,如[^abc]代表除a,b,c外的任 一字符 \
转义,去掉特殊字符的特殊意义,如\$仅代表$字 符本身
-------------------------------------------------------- (2)常用搜索命令
-------------------------------------------------------- /串 <Enter>
向下搜索 串 <Enter> 向上搜索 n 继续搜索 N
继续向相反方向搜索 --------------------------------------------------------
搜索命令必须在命令方式下使用。按下"/"或"?"时它会自动出现在状态行上,键入要搜 索的字符串并按回车,光标会移动到该字符串所在行,并定位在该字符串的第一个字符上。 下面的格式把光标移到字符上一行的行首:
/字符串/- <Enter> 下面是一些例子: /abc/-2 <Enter>
光标移到含abc的行的上两行的行首 /abc/+2 <Enter> 光标移到含abc的行的下两行的行首 123mn
<Enter> 向上搜索串123mn n
继续执行前面的搜索命令 /^this<Enter> 搜索开头为this的行 /p\.r\.c<Enter>
向下搜索字符串p.r.c,因为"."是特殊字符,所 以前面要加反斜线"\"转义。
⒑
作标记 在光标所在处作一标记,以备需要时及时查找到该处,这也是一种重要的检索方式,完 成该功能的命令是m。
标记命令 --------------------------------------------------------
m标记 光标所在处作标记 ①标记是任选的小写字母 `标记 移到标记位置 ②注意左撇 ' 与右撇
` '标记 移到有标记的行的开头 的不同
--------------------------------------------------------
例如有一正文前三行内容如下: 1 This is Line one 2 3 This is Line
two 把光标移到第一行的L处,键入 mb,作标记b (不要回车),以后某一时候要删除从当前 光标处到标记处,只要键入: d`b
即可。 如果再把光标移到第三行的"n"处,再作一标记s,只要键入:
ms即可。如果光标在别的 地方,什么时候想把光标移到第三行的"n"处,只要键入: `s 即可。如果仅是想把光标移到 第三行,只要键入: 's
即可。
⒒ 搜索并代替
对文件进行更复杂的修改,最好用搜索替代合在一起的命令。这类命令往往是一些简单 命令的组合。 搜索替代命令
-------------------------------------------------------- g
全局搜索 用于开头,代表搜索所有行,用于末 尾,代表搜索整行。
s 替代命令 如果出现在命令行中,应与其他命令 用"/"隔开。
p 显示命令 c 提问命令
对要替代的内容用符号"^"提示,若按 下"y"才发生替换,否则不替换。
v 不匹配命令
--------------------------------------------------------
搜索替代命令是在ex转换方式下使用的,即按下"ESC"键和":"之后才能使用。键入的命 令出现在状态行上,按回车执行。被搜索替代的字符串两边要加斜线"/",
如果不使用全局 命令"g",则只对第一个找到的字符串起作用。命令前面也可以加地址范围的选择。 下面是使用命令的例子:
:s/abc/xyz/<Enter> 用xyz替换当前行找到的第一个abc
:s/ab/x/g<Enter> 用x替换当前行所有的ab
:g/22/s//456/<Enter>
每行找到的第一个字符串"22"都用 字符串"456"替换
:g/22/s//456/g<Enter>
全文找到的所有字符串"22"都用串
"456"替换,第一个"g"代表"每行", 第二个"g"代表一行中的全部。
:g/this/p<Enter> 显示所有含"this"的行
:v/this/p<Enter> 显示所有不含"this"的行
:g!/this/p<Enter> 显示所有不含"this"的行 :g/^/s//abc/g
在文件每一行开头插入abc,"^"代 表行首。
:g/this/s//THIS/gp<Enter>
全文所有"this"都用"THIS"替代, 并且显示发生替代的行。
:3,7s/this/THIS/<Enter>
第3行到第7行中第一个"this"都用 "THIS"替代。
:3,7s/this/THIS/g<Enter>
第3行到第7行中所有的"this"都用 "THIS"替代。
:1,$s/this/THIS/g<Enter> 第一行到最后一行
(全文)中所有的 "this"都用"THIS"替代。
⒓ 替代
在命令方式下执行替代命令,按"ESC"结束。
-------------------------------------------------------- r
替代一个字符 R 替代可以到行尾,超过行尾的部分被附加 ns
替代n个字符,超过数目的输入被插入 nS 删除n行,并处于插入状态 cw
替代一个字 cc 删除当前行,并进入插入状态
-------------------------------------------------------- ⒔ 其他常用命令
-------------------------------------------------------- :r 文件名
将文件名所指文件读入,并放在当前行下面 nyw 将光标后的n个字放入缓冲区 "anyw
将光标后的n个字放入a缓冲区 "Anyw 将光标后的n个字附加到a缓冲区 nyy
将当前行及下面的行共n行放入缓冲区 "anyy 将当前行及下面的行共n行放入a缓冲区,a可用其
他小写字母代替 "Anyy 将当前行及下面的行共n行附加到a缓冲区,A可用
其他大写字母代替 p 将缓冲区的内容放入当前行下面或光标后,这取决
于缓冲区中是否有完整的行。 P 将缓冲区的内容放入当前行上面或光标前,这取决
于缓冲区中是否有完整的行。 "ap 将命令"ayy保存的内容放入当前行下面,a可用其
他小写字母代替 m 移动正文 t 拷贝正文 w
写文件 --------------------------------------------------------
下面是一些例子: :r fn 将文件fn读入,并放在当前行下面 2yy
将当前行及下一行放入缓冲区 p 将执行2yy保存的两行放到当前行下面 2,4m6
将第2到4行移到第6行下面 2,4t6 将第2到4行拷贝到第6行下面 2,4wfn
将第2到4行写到文件fn中
|