摘抄自: http://linux.vbird.org/linux_basic/
作者: 鸟哥的 Linux 私房菜
vi 编辑器有 3 种基本工作模式
vi filename
打开已存在的文件或者新建一个文件
vi +行号 filename
在进入 vi 后,光标处于文件中特定的某行上,可在 vi 命令上加上行号和文件名
vi + filename
如果希望在进入 vi 之后光标处于文件最末行,则只需去掉命令中+后面的数字 n 即可
vi +/匹配的关键字 filename
进入 vi 后,光标就处于文件中第一个与指定模式串相匹配的那行上
vi *.filename
使用 vi 可以同时编辑多个文件,只要在进入 vi 的命令中写入所要操作的文件即可,还可以使用通配符
插入文本命令:i 和 I
i 命令将文本插入到光标所在位置前
I 命令将文本插入当前行的行首。
追加文本命令:a 和 A
a 命令将新文本追加到光标当前所在位置之后
A 命令将新文本追加到所在行的行尾。
空行插入命令:o 和 O
o 命令将在光标所在行的下面插入一个空行,并将光标置于该行的行首。
O 命令在光标所在行的上面插入一个空行,并将光标置于该行的行首。
vi文本删除命令(删除文件内容)
文本删除命令 |
命令的意义 |
文本删除命令 |
命令的意义 |
x |
删除光标处的字符 |
d( |
删除到上一句开始的所有字符 |
X |
删除光标前面的字符 |
d) |
删除到下一句开始的所有字符 |
dd |
删除光标所在的整行 |
d{ |
删除到上一段开始的所有字符 |
D 或 d$ |
删除从光标所在处开始到行尾 的内容 |
d} |
删除到下一段开始的所有字符 |
d0 |
删除从光标前一个字符开始到 行首的内容 |
d<CR> |
删除包括当前行在内的两行字符 |
dw |
删除一个单词 |
|
|
vi文本复制命令(复制文件内容)
文本复制命令 |
命令的意义 |
文本复制命令 |
命令的意义 |
yy |
复制光标所在的整行 |
y{ |
复制到上一段的开始 |
Y 或 y$ |
复制从光标所在处开始到行尾的内容 |
y} |
复制到下一段的开始 |
y0 |
复制从光标前一个字符开始到行首的内容 |
y<CR> |
复制包括当前行在内的两行内容 |
y( |
复制到上一句的开始 |
yw |
复制一个单词 |
y) |
复制到下一句的开始 |
|
|
1. 文本粘贴命令
- p 命令:粘贴命令,粘贴当前缓冲区中的内容。
2. 文本选择命令
- v 命令:在命令模式下进行文本选择。在需要选择的文本的起始处按下 v 键进入块选择模式,然后移动光标到块尾处。这之间的部分被高亮显示,表示被选中。
- V 命令:在命令模式下按行进行文本选择。在需要选择的文本的第一行按下 V 键,然后移动光标到块的最后一行。这之间的所有行被高亮显示,表示被选中。
vi撤销命令(u和U),撤销上一次的操作
撤销命令分为以下两种。
- u 命令:该命令撤销上一次所做的操作。多次使用 u 命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。
- U 命令:该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。
vi重复命令(重复上次操作)
重复命令只能在命令模式下工作,在该模式下按下.键
vi退出命令
:q
当用户不清楚自己当前编译的文件是否被修改时,可以使用该命令进行测试,而不必担心因为误操作导致文件数据丢失。
:q!
该命令不论文件是否改变都会强行退出 vi 编辑器,对于此命令用户应当慎用。
:w 新文件名
vi 保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用 w 命令时,可以再给当前编辑文件起一个新的文件名。这个功能相当于将该文件另存为为一个新的文件。
:w! 新文件名
说明:该命令与:w命令相同,所不同的是,即使指定的新文件存在,vi 编辑器也会用当前编辑文件对其进行替换,而不再询问用户。
:wq
vi 将先保存文件,然后退出 vi 返回到 shell。如果当前文件尚未取名,则需要现指定一个文件名。
:x
说明:若当前编辑文件曾被修改过,则 vi 会保存该文件。否则 vi 直接退出,不保存该文件。
vi字符替换命令(r和R命令)
1. r 命令
该命令将当前光标所指的字符替换为提供的字符。可以在该命令之前加上数字 n,表示将从当前字符开始的 n 个字符替换为提供的字符
2. R命令
该命令会让 vi 进入 replace 模式。在此模式下,每个输入的字符都会替换当前光标下的字符,直到输入 <Esc> 结束该模式。
vi文本跨行移动(m命令)
vi 编辑器使用 m 命令实现文本的跨行移动。该命令的使用方法为:imj
表示把第 i 行移至第 j 行的下方。
vi屏幕滚动命令(滚屏命令)
在命令模式下和文本输入模式下均可以使用滚屏和分页命令。滚屏和分页命令如下表所示。
滚屏和分页命令 |
命令意义 |
Ctrl+u |
将屏幕向前(文件头方向)翻滚半屏 |
Ctrl+d |
将屏幕向后(文件尾方向)翻滚半屏 |
Ctrl+f |
将屏幕向文件尾方向翻滚一整屏 |
Ctrl+b |
将屏幕向文件首方向翻滚一整屏 |
可以在滚屏和分页命令之前加上一个数字 n,表示屏幕向前或向后翻滚 n 行,或者屏幕向前或向后移动 n 页。这些设置会被 vi 编辑器记住,下次用户在使用滚屏和分页命令时,还会滚动和上次设置相同的行数或者页数。
vi字符串检索(查找)命令
查找命令有 5 种
/string
/命令从光标处开始向后寻找字符串 string。
?string
? 命令从光标处开始向前寻找字符串 string。
n 命令重复上一条检索命令。
N 命令重复上一条检索命令,但检索方向改变。例如上次的检索命令是向前检索,那么此次检索的方向是向后;如果上次的检索命令是向后检索,那么此次检索的方向是向前。
g/string
检索 string。g/命令使光标停止在第一个检索到的 string 串的行首。
vi字符串替换命令
[range]s/s1/s2/ [option]
- [range] 表示检索范围,省略时表示当前行。下面是一些检索范围的例子。
-
- 1,10表示从第 1 行到 10 行。
- %表示整个文件,同1, $。
- . ,$从当前行到文件尾。
- s 为替换命令。
- s1 要被替换的串,s2 为替换的串。
- option 表示选项:
-
- /g表示在全局文件中进行替换。
- /c表示在每次替换之前需要用户进行确认。
- 省略时仅对每行第一个匹配串进行替换。
vi窗口切分命令(split命令)
在末行模式中,输入 split 命令即可实现窗口的切分,其命令格式 : split文件名
split 也可简写为 sp。这时窗口切分为上下两部分,下半部分对应原来的文件,上半部分对应新打开的文件。
有时用户需要在多窗口之间进行切换,vi 编辑器提供一组命令支持用户切换多个窗口,其命令如下表所示。
切换命令 |
命令的意义 |
Ctrl+w,然后 j |
移动光标到下面的一个窗口 |
Ctrl+w,然后 k |
移动光标到上面的一个窗口 |
Ctrl+w,然后 q |
关闭当前窗口 |
Ctrl+w,然后 w |
移动光标到另一个窗口 |
vi属性设置命令
:set nu (nonu)
该命令显示行号(或者不显示行号)。
:set hlsearch (nohlsearch)
该命令设定搜寻字符串反白显示(或者不反白显示)。
:set all
该命令显示所有的选项。
:syntax on (off)
该命令实现程序语法高亮显示(或者不高亮显示)。
:set ignorecase(noignorecase)
该命令忽略大小写(或者区分大小写)。