vi编辑器的使用:
vi编辑器有三种基本工作模式,分别是命令行模式、文本输入模式、末行模式。
1.命令行模式
该模式是进入vi编辑器后的默认模式,任何时候,不管用户处于何种模式,按下esc键即可进入命令行模式。
在命令行模式下,可以输入vi命令来管理自己的文档。此时在键盘上输入任何字符都被当作编辑命令,而不是输入字符。
输入的字符并不会在屏幕上显示,若是合法的vi命令,则会完成相应的动作,否则会响铃报警。
2.文本输入模式
命令行模式下输入以下几个命令则会进入文本输入模式。
- i: 插入命令,会将文本插入到光标所在位置之前
- I: 插入命令,会将文本插入到光标所在行的行首
- a: 追加文本命令,会将文本追加到光标当前位置之后
- A: 追加文本命令,会将文本追加到光标所在行的末尾
- o: 空行插入命令,将在光标所在行的下面插入一个空行,并将光标置于该行的行首
- O: 空行插入命令,将在光标所在行的上面插入一个空行,并将光标置于该行的行首
- c: 修改命令
- r: 取代命令
- s: 替换命令
在该模式下,用户输入的任何字符都被当做文件内容保存起来,并显示在屏幕上。
3.末行模式
命令行模式下,用户按下:键即可进入末行模式,此时vi会在显示窗口的最后一行显示一个:作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。
末行命令执行完后,vi会自动回到命令行模式
4.vi文本的删除命令:
vi编辑器可以在编辑模式和命令行模式下删除文本。命令行模式下,vi常用删除命令
-
x 删除光标处的字符。若在
x之前加上一个数字n,则删除从光标所在位置开始向右的n个字符。 -
X 删除光标前面的字符。若在
X之前加上一个数字n,则删除从光标前面那个字符开始向左的n个字符。 - dd 删除光标所在的整行。前面加上数字n,则删除当前行以及其后的n-1行。
- D 或 d$ 删除从光标所在处开始到行尾 的内容 。
- d( 删除到上一句开始的所有字符
- d) 删除到下一句开始的所有字符
- d{ 删除到上一段开始的所有字符
- d} 删除到下一段开始的所有字符
- d0 删除从光标前一个字符开始到行首的内容
- dw 删除一个单词。若光标处在某个单词的中间,则从光标所在位置开始删至词尾。前面加数字n,表示删除n个指定的单词。
-
d
删除包括当前行在内的两行字符,其中 表示回车
5.vi文本复制命令
vi编辑器可以在编辑模式和命令模式下复制文本。
- yy 命令:复制光标所在的整行。在 yy 前可加一个数字 n,表示复制当前行及其后 n-1 行的内容。
- Y 或 y$ 命令:两命令功能一样,都是复制从光标所在处开始到行尾的内容。
- yw 命令:复制一个单词。若光标处在某个词的中间,则从光标所在位置开始复制至词尾。同 yy 命令一样,可在 yw 之前加一个数字 n,表示复制 n 个指定的单词。
- y(:复制到上一句幵始的所有字符。
- y) 命令:复制到下一句幵始的所有字符。
- y{: 复制到上一段开始的所有字符。
- y} 命令:复制到下一段开始的所有字符。
-
y
命令( 表示回车):复制包括当前行在内的两行内容。
与文本复制有关的命令分为两类。
- 文本粘贴命令
- p 命令:粘贴命令,粘贴当前缓冲区中的内容。
- 文本选择命令
- v 命令:在命令模式下进行文本选择。在需要选择的文本的起始处按下 v 键进入块选择模式,然后移动光标到块尾处。这之间的部分被高亮显示,表示被选中。
- V 命令:在命令模式下按行进行文本选择。在需要选择的文本的第一行按下 V 键,然后移动光标到块的最后一行。这之间的所有行被高亮显示,表示被选中。
6.vi撤销命令
- u 命令:该命令撤销上一次所做的操作。多次使用 u 命令会一步一步依次撤销之前做过的操作(在一次切换到文本输入模式中输入的所有文本算一次操作)。
- U 命令:该命令会一次性撤销自上次移动到当前行以来做过的所有操作,再使用一次 U 命令则撤销之前的 U 命令所做的操作,恢复被撤销的内容。
7.vi重复命令
命令行模式下,按下.键可以重复执行前面刚完成的命令。
8.vi退出命令
在末行模式下输入命令
-
:q 如果退出时当前编辑文件尚未保存,则vi不会退出,而是继续等待用户的命令,并且会在末行说明如下信息。
No write since last change(use! to overrides) -
:q! 该命令不问文件是否改变都会强行退出vi编辑器。
-
:w 新文件名 vi保存当前编辑文件。等待用户继续输入命令。当+新文件名时,相当于另存为一个新的文件,源文件保持为编辑前的样子。可以放置因误操作覆盖已经存在的文件。
-
w! 新文件名 和
:w命令相同,不同的是若指定的新文件存在,vi编辑器也会用当前编辑文件对其进行替换,且不再询问用户。 -
:wq vi将先保存文件,然后退出vi返回到shell。如果当前文件尚未取名,则需要先指定一个文件名
-
:x 若当前编辑文件曾被修改过,则vi会保存该文件,否则直接退出。
9.字符替换命令
- r命令 该命令将当前光标所指的字符替换为提供的字符。可以在该命令之前加上数字 n,表示将从当前字符开始的 n 个字符替换为提供的字符。
-
R命令 该命令会让 vi 进入 replace 模式。在此模式下,每个输入的字符都会替换当前光标下的字符,直到输入
结束该模式。
10.光标移动命令
- h 光标左移一个字符
- H 将光标移动到当前屏幕的第一行。前面+数字n,则将光标一直第n行的行首。
- j 光标下移一行
- k 光标上移一行
- i 光标右移一个字符
- M 将光标移至中间行的行首。
- L 将光标移至屏幕显示文件的最底行的行首。
- G 全文范围内移动光标,光标的移动不再受到屏幕的限制。前面加上数字n,表示将光标移动到文件的第五行行首。
- w 将光标右移至下一个字的字首,这里的字表示英文单词、标点符号和非字母字符
- W 将光标右移至下一个字的字首,这里的字表示两个空格之间的任何内容
- e 把光标移到本字字尾,光标起始位置处于字尾,则把光标移动到下一个字的字尾。这里的字是指英文单词、标点符号和非字母字符
- E 把光标移到本字字尾,光标起始位置处于字尾,则把光标移动到下一个字的字尾。这里的字是指两个空格之间的任何内容
- b 把光标移至本字字首,光标起始位置处于字首,则把光标移动到上一个字的字首。这里的字是指英文单词、标点符号和非字母字符
- B 把光标移至本字字首,光标起始位置处于字首,则把光标移动到上一个字的字首。这里的字是指两个空格之间的任何内容
- { 该命令将光标向前移至上一个段落的开头。
- **} ** 该命令将光标向后移至下一个段落的开头。
11.文本移动命令
-
>n 将指定的正文向右移动,通常是右移8个空格。移动正文的范围由光标所在行和随后输入的光标移动命令所限定。n 表示光标所在位置后面的文本行数。可 以不写 n,此时默认为 1;换句话说,只使用
>命令将会移动光标所在的文本行,以及下一个文本行。如果只想移动光标所在的文本行,可以写>0。 - <n 将指定的正文向右移动
- >> 该命令将光标所在行右移 8 个空格。前面加数字n则移动当前行加n-1行
-
<< 与
>>相反 - m命令:imj 表示把第i行移至第j行的下方。
12.vi屏幕滚动命令
如果文件太大,一个屏幕无法显示全部内容,vi编辑器采用分屏显示的方法。使用屏幕滚动命令可以以屏幕为单位移动光标。
| 滚屏和分页命令 | 命令意义 |
|---|---|
| Ctrl+u | 将屏幕向前(文件头方向)翻滚半屏 |
| Ctrl+d | 将屏幕向后(文件尾方向)翻滚半屏 |
| Ctrl+f | 将屏幕向文件尾方向翻滚一整屏 |
| Ctrl+b | 将屏幕向文件首方向翻滚一整屏 |
可以在滚屏和分页命令之前加上一个数字 n,表示屏幕向前或向后翻滚 n 行,或者屏幕向前或向后移动 n 页。这些设置会被 vi 编辑器记住,下次用户在使用滚屏和分页命令时,还会滚动和上次设置相同的行数或者页数。
13.vi字符串检索命令
字符串检索命令要在末行模式下
- / /string,从光标处向后寻找字符串string
- ? ?string,从光标向前寻找字符串string
- n 重复上一条检索命令
- N 重复上一条检索命令,但是改变检索方向
-
g/ g/string 检索string,
g/命令使光标停止在第一个检索到的 string 串的行首。
14.vi字符串替换命令
字符串替换命令在末行模式下
[range]s/s1/s2/[option]
- 其中[range]表示检索范围,省略时表示当前行。
- 1,10 表示从第一行到第10行
- % 表示整个文件,同
1,$ - .,$ 表示从当前行到文件尾
- s为替换命令
- s1表示要被替换的串,s2为替换的串
- option 表示选项
- /g 表示再全局文件中进行替换
- /c 表示再每次替换之前需要用户进行确认
- 省略时表示仅对每行第一个匹配串进行替换
在执行替换命令指令时,可以加入简单的模式匹配
<word 表示以word为开头的单词
$s/\<abc/cde 表示在全文将以abc为开头的单词替换为cde
15.vi窗口切分命令
窗口切分命令在末行模式下
:sqlit文件名 可以实现窗口的切分,将窗口切分为上下两部分,下半部分对应原来的文件,上半部分对应新打开的文件。
有时用户需要在多窗口之间进行切换,vi编辑器提供了一组命令支持用户切换多个窗口。
| 切换命令 | 命令的意义 |
|---|---|
| Ctrl+w,然后 j | 移动光标到下面的一个窗口 |
| Ctrl+w,然后 k | 移动光标到上面的一个窗口 |
| Ctrl+w,然后 q | 关闭当前窗口 |
| Ctrl+w,然后 w | 移动光标到另一个窗口 |
16.vi属性设置命令
vi属性设置命令在末行模式下
-
行号设置命令
:set nu(nonu)该命令显示行号(或者不显示行号) -
显示设置命令
:set hlsearch(nohlsearch)该命令设定搜寻字符串反白显示(或者不反白显示)。 -
语法缩进命令
:set autoindent该命令显示程序语法自动缩进。 -
文件存储命令
:set backup(nobackup)该命令自动存储备份文件(或者不自动备份文件)。 -
显示选项命令
:set all该命令显示所有的选项。 -
语法高亮命令
syntax on(off)该命令实现程序语法高亮显示(或者不高亮显示)。 -
大小写区分命令
:set ignorecase(noignorecase)该命令忽略大小写(或者区分大小写)。