vi的基本概念
- 基本上vi可以分为三种状态,分别是(command mode)、(Insert mode)和(last line mode),各模式的功能区分如下:
- (command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 - (Insert mode)
只有在Insert mode下,才可以做文字输入,按ESC
键可回到命令行模式。 - (last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
- (command mode)
vi的基本操作
-
进入vi
- 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
vi myfile
- 进入vi之后,是处于(command mode),要切换到(Insert mode)才能够输入文字。
- 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
-
切换至(Insert mode)编辑文件
- 在(command mode)下按一下字母
i
就可以进入(Insert mode)。
- 在(command mode)下按一下字母
-
Insert 的切换
- 目前处于(Insert mode),就只能一直输入文字,如果发现输错了字!想用光标键往回移动,将该字删除,就要先按一下
ESC
键转到(command mode)再删除文字。
- 目前处于(Insert mode),就只能一直输入文字,如果发现输错了字!想用光标键往回移动,将该字删除,就要先按一下
-
退出vi及保存文件
- 在(command mode)下,按一下
:
冒号键进入(Last line mode),例如:-
: w filename
(将文章以指定的文件名filename保存) -
: wq
(输入「wq」,存盘并退出vi) -
: q!
(输入q!, 不存盘强制退出vi)
-
- 在(command mode)下,按一下
(command mode)功能键
-
插入模式
- 按
i
切换进入(Insert mode),按"i"进入插入模式后是从光标当前位置开始输入文件; - 按
a
进入(Insert mode),是从目前光标所在位置的下一个位置开始输入文字; - 按
o
进入(Insert mode),是插入新的一行,从行首开始输入文字。
- 按
-
从(Insert mode)切换为(command mode)
- 按
ESC
键
- 按
-
移动光标
- vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往"后"移动一页。
按「ctrl」+「f」:屏幕往"前"移动一页。
按「ctrl」+「u」:屏幕往"后"移动半页。
按「ctrl」+「d」:屏幕往"前"移动半页。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的"行尾"。
按「^」:移动到光标所在行的"行首"
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l。
- vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
删除文字
「x」:每按一次,删除光标所在位置的"后面"一个字符。
「#x」:例如,「6x」表示删除光标所在位置的"后面"6个字符。
「X」:大写的X,每按一次,删除光标所在位置的"前面"一个字符。
「#X」:例如,「20X」表示删除光标所在位置的"前面"20个字符。
dd
:删除光标所在行。
「#dd」:从光标所在行开始删除#行复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
yy
:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
p
:将缓冲区内的字符贴到光标所在位置。(所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能 )替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。回复上一次操作
u
:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
15G
,表示移动光标至文章的第15行行首。
Last line mode下命令简介
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
- 列出行号
「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
- 跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
- 查找字符
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
- 保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来。
- 离开vi
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。