一、vi 编辑器的基本概念
vi 编辑器是Linux系统自带的一种功能强大的文本编辑工具。
vi 可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。不过我们在使用时,一般将“底行模式”也算成是“命令行模式”。三种模式的功能如下:
- 命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段,以及从命令行模式进入插入模式或底行模式。
- 底行模式: 将文件保存或退出vi编辑器,也可以用来设置编辑环境,如查找字符串、列出行号等(底行输入" : + 命令 "的方式)。
- 插入模式: 只有在插入模式下,才可以做文本的编辑和修改;在插入模式下,按「ESC」键可回到命令行模式。
二、快捷导航 - vi 常用命令
注:以下介绍vi命令时,统一按照两种模式进行区分,即:命令行模式、插入模式。
1、从【命令行模式】切换到【插入模式】
- 按「i」键:进入插入模式后,是从当前光标位置开始输入字符;
- 按「a」键:进入插入模式后,是从当前光标的下一个位置开始输入字符;
- 按「o」键:进入插入模式后,是在当前光标之下插入新的一行,从行首开始输入字符;
- 按「shift + o」(即:大写‘’O‘’)键:进入插入模式后,是在当前光标之上插入新的一行,从行首开始输入字符。
2、从【插入模式】切换到【命令行模式】
- 按「ESC」键:在【插入模式】下,按「ESC」键,切换到【命令行模式】。
3、【命令行模式】保存修改的内容、退出vi编辑器
: w filename #保存编辑的文件内容,并将文件的名称设为filename : wq #保存编辑的文件内容,并退出vi 编辑器 : q! #不保存编辑的内容,并直接退出vi 编辑器
4、【命令行模式】文本内容被修改后,对修改的内容进行撤销、撤销取消
u #在命令模式下,按“u”键,撤销修改的内容,即将内容回退到上次修改之前的状态 Ctrl + r #在命令模式下,按“Ctrl+r”键,撤销取消,即在执行【u撤销】之后,再执行【Ctrl + r】将数据恢复到【u撤销】操作之前的状态
5、【命令行模式】移动光标--上下翻页
vi可以使用键盘的“home”、“end”键,来进行上下翻页。
vi也可以使用“crtl + 小写字母”,来控制翻页。
- 按「ctrl」+「b」:屏幕往“后”移动一页。
- 按「ctrl」+「f」:屏幕往“前”移动一页。
- 按「ctrl」+「u」:屏幕往“后”移动半页。
- 按「ctrl」+「d」:屏幕往“前”移动半页。
6、【命令行模式】移动光标--显示行号、跳转到指定行
:set nu #显示行号
:set nonu #取消显示行号
:行号 #跳到指定行
:1 #跳到文件的第一行
:$ #跳到文件的最后一行
gg #跳到文件的第一行
Shift + g #跳到文件的最后一行
7、【命令行模式】移动光标--上下左右
vi可以直接用键盘上的上下左右键来控制光标的移动。也可以用小写英文字母,来控制光标的移动。
- 「h」:向左
- 「j」:向下
- 「k」:向上
- 「l」:向右
8、【命令行模式】移动光标--快速跳到本行的指定位置
按「$」:移动到光标所在行的“行尾”。 按「^」:移动到光标所在行的“行首” 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头
9、【命令行模式】删除文字、删除行
「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 「dd」:删除光标所在行。 「#dd」:从光标所在行开始删除#行
10、【命令行模式】复制文字、复制行
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
11、【命令模式】查找字符
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
注:"n"正向查找,"shift + n"反向查找
12、【命令行模式】替换字符
「r」:替换光标所在处的字符(仅替换当前光标所在的一个字符)。
「R」:从当前光标所在位置开始,替换光标所在之处的字符,直到按下「ESC」键为止。
13、【命令行模式】按字进行更改(相当于删除指定的一个字 或 多个字)
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字