vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。
基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
- 命令行模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段等。 - 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
基本操作
- 打开文件
vi example.log
- 编辑内容
- 在
「command mode」
下, 按i
键进入「Last line mode」
, 进行内容编辑
- 在
- 保存文件
- 在
「command mode」
下, 按:
键进入「Last line mode」
; - 在
「Last line mode」
下, 输入w
保存;
- 在
- 退出文件
在「Last line mode」
下,- 输入
q
退出; - 输入
wq
保存修改并退出; - 输入
q!
不保存修改并退出;
- 输入
- 移动光标
- 「ctrl」+「b」/「f」:屏幕往“后”/“前”移动一页。
- 「ctrl」+「u」/「d」:屏幕往“后”/“前”移动半页。
- 「0」/「G」:移到文章的开头/最后。
- 「$」/「^」:移动到光标所在行的“行尾”/“行首”。
- 「#l」:光标移到该行的第#个位置,如:5l,56l
- 恢复/撤消/还原上一次操作
- 「u」:如果误执行一个命令,按下「u」,撤消上一个操作。按多次“u”可以执行多次撤消。
- 跳至指定的行
- 「ctrl」+「g」列出光标所在行的行号。
- 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
- 「n」<Enter> n 为数字。光标向下移动 n 行(常用)
其它操作
先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
- 列出行号
「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。 - 跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 - 查找字符
「/关键字」:向光标之下寻找字符串,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:向光标之上寻找字符串,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 - 搜索替换
- 「n1,n2s/word1/word2/g」
- n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则::100,200s/vbird/VBIRD/g
- n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2
- 「1,$s/word1/word2/g」
- 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
- 「1,$s/word1/word2/gc」
- 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
- 「n1,n2s/word1/word2/g」