Vi 的使用
vi 是一个强大的文本编译器。它可以通过不同模式的切换,使用户可以不用鼠标,通过键盘完成对所有文本的操控。
vi 的四种模式:
- 正常模式(Normal-model)
- 插入模式(Insert-model)
- 命令模式(Command-model)
- 可视模式(Visual-model)
命令行输入 vi ,会进入vim 文本编译器的版本,vim 是对 原始 vi 编译器的扩展。可以用命令 man vi 获取到相应的帮助。可以在终端输入 vim 进入其主界面。
vi
man vi
vim
vim 的正常模式
光标移动按键:
按键 | 含义 |
---|
l or 右箭头 | 向右移动一个字符 | h or 左箭头 | 向 左 移动一个字符 | j or 下箭头 | 向 下 移动一个字符 | k or 上箭头 | 向 上 移动一个字符 | 0(零按键) | 移动到当前行的行首 | $ | 移动到当前行的行尾 | ^ | 移动到当前行的第一个非空字符 | w | 移动到下一个单词或标点符号的开头 | W | 移动到下一个单词的开头(忽略标点符号) | b | 移动到上一个单词或标点符号的开头 | B | 移动到上一个单词的开头(忽略标点符号) | Ctrl + f or Page Down | 向下翻一页 | Ctrl + b or Page Up | 向上翻一页 | numberG | 移动到第 number 行(例:1G 表示移动到文件的第一行) | G | 移动到文件末尾 |
vi 中的许多命令都可以在前面加上一个数字,比如上面的 G 命令。在命令之前加上一个数字,就可以指定命令执行的次数。例:命令 5j 表示将光标下移 5 行。
复制、剪切和粘贴
y 命令用来复制文本,可以将 y 命令和各种光标移动命令结合起来使用:
命令 | 复制的内容 |
---|
yy | 当前行 | 5yy | 当前行及随后的四行文本(数字表示从当前行开始复制的行数) | y0 | 从当前光标位置到 行首 | y$ | 从当前光标位置到 行尾 | y^ | 从当前光标位置到文本行的第一个非空字符 | yW | 从当前光标位置到下一个单词的开头 | yG | 从当前行到文件末尾 | y20G | 从当前行到文件的第 20 行(数字可以根据自己需求设置) |
d 命令用来剪切文本,用法和 y 命令类似
p 命令用来粘贴文本。
- 小
p 命令把剪切板中的文本粘贴到光标位置之后 - 大
P 命令把剪切板中的文本粘贴到光标位置之前
删除文本
用 x 和 d 命令来删除字符。 x 按键会删除光标位置的一个字符。d 按键更通用一些。
命令 | 删除的文本 |
---|
x | 当前字符 | 3x | 当前字符及其后的两个字符 | dd | 当前行 | 5dd | 当前行及随后的四行文本 | d0 | 从光标位置开始到当前行的行首 | d$ | 从光标位置开始到当前行的行尾 | d^ | 从光标位置开始到文本行的第一个非空字符 | dW | 从光标位置开始到下一个单词的开头 | dG | 从当前行到文件末尾 | d20G | 从当前行到文件的第 20 行 |
撤销与重做
vim 的插入模式
进入插入模式的几种方式:
命令 | 含义 |
---|
i | 进入插入模式,光标位置不变 | I | 进入插入模式,光标来到原来光标所在行的开头位置 | a | 进入插入模式,光标来到原来光标的下一位置 | A | 进入插入模式,光标来到原来光标所在行的结尾位置 | o | 进入插入模式,光标来到原来光标位置的下一行,原来下面的行依次下移 | O | 进入插入模式,光标来到原来光标位置的上一行,原来下面的行依次下移 |
按 Esc 键退出插入模式。
vim 的命令模式
保存与退出
执行 Linux 命令
在文本编辑的同时,想临时执行 linux 命令,可执行代码::! <命令> 。例:查看 IP 地址::!ifconfig
查找与替换
-
查找
- 查找一行:
f 。例:fa 表示在当前行查找字符 a - 查找整个文件:
/ 。 例:/a 表示在全文查找字符 a 。如果查到的字符有多个,可以按 n 来查找下一个匹配的字符;shift + n 用来查找上一个匹配的字符。 -
替换 命令::%s/<被替换字符>/<替换成字符>/gc 。对该命令的分解如下:
条目 | 含义 |
---|
: | 冒号字符运行一个 ex 命令 | % | 指定要操作的行数。%是一个快捷方式,表示从第一行到最后一行。1,5 表示从第一个行到第五行,如果省略文本行的范围,那么操作只对当前行生效。 | s | 指定命令,这里是:替换(查找与替换) | /<被替换字符>/<替换成字符> | 查找类型与替换文本 | g | 全局。对文本行中所有匹配的字符串执行查找和替换操作。如果省略 g,则只替换每个文本行中第一个匹配的字符串 | c | 替换确认。在执行每个替换命令之前,vi 会停下来,通过信息(replace with <替换文本> (y/n/a/q/l/E/Y)?)来要求我们确认这个替换 |
例::s/x/a :表示对光标所在行,把 x 替换成 a ? :%s/x/a : 表示对全文,把 x 替换成 a ? :3,5s/x/a :表示对第 3 到 5 行,把 x 替换成 a ? :s/x/a/g :表示对全局,把 x 替换成 a 替换确认按键如下:
按键 | 行为 |
---|
y | 执行替换操作 | n | 跳过当前匹配的实例 | a | 对当前及随后所有匹配的字符串执行替换操作 | q or Esc | 退出替换操作 | l | 执行这次替换并退出 | Ctrl+e, Ctrl+y | 分别是向下滚动和向上滚动。用于查看建议替换的上下文 |
显示行号
vim 的可视模式
可视模式主要是用于对重复的大量操作,可以一次性执行完成的一种功能。进入可视模式的三种方式:
命令 | 行为 |
---|
v | 字符可视模式 | V | 行可视模式 | Ctrl+v | 块可视模式(配合 d 和I 命令可以进行块的便捷操作) |
I 在当前块的前面插入内容。
d 删除当前的块。
|