linux里vi命令
linux里vi命令详细介绍
在 Linux 中,vi 是一款经典的文本编辑器,常用于命令行环境。以下是其核心用法和操作逻辑:
一、基本模式
vi 有三种主要模式,通过不同按键切换:
- 命令模式(默认启动模式)
- 用于导航、执行操作(如删除、复制、查找等),不接受输入字符。
- 插入模式
- 输入
i、a、o等按键进入,用于编辑文本内容。
- 输入
- 底行模式(末行模式)
- 输入
:进入,用于执行保存、退出、查找替换等高级操作。
- 输入
二、常用操作
1. 进入 / 退出编辑
| 操作 | 说明 |
|---|---|
vi 文件名 |
打开文件(若文件不存在则创建新文件,但需保存后才会实际生成)。 |
i |
在当前光标位置前插入文本(进入插入模式)。 |
a |
在当前光标位置后追加文本(进入插入模式)。 |
o |
在当前行下方新建一行并插入文本(进入插入模式)。 |
Esc |
从插入模式或底行模式返回命令模式。 |
2. 光标移动(命令模式)
| 操作 | 说明 |
|---|---|
h/j/k/l |
左 / 下 / 上 / 右移动(等价于方向键,部分老旧环境可能需用此)。 |
G |
跳转到文件末尾。 |
1G 或 gg |
跳转到文件开头。 |
nG |
跳转到第 n 行(如 5G 到第 5 行)。 |
w/b |
按单词向右 / 向左移动(跳过空格和标点)。 |
$ |
移动到当前行末尾。 |
^ 或 0 |
移动到当前行开头(0 是绝对行首,^ 是第一个非空格字符)。 |
3. 文本修改(命令模式)
| 操作 | 说明 |
|---|---|
x |
删除当前光标处的字符。 |
nx |
删除当前光标处开始的 n 个字符(如 3x 删除 3 个字符)。 |
dd |
删除当前行(ndd 删除 n 行,如 2dd 删除 2 行)。 |
d$ |
删除当前光标到行尾的内容。 |
u |
撤销上一步操作(可多次撤销)。 |
Ctrl + r |
重做(恢复撤销的操作)。 |
y(如 yy/yn) |
复制(yy 复制当前行,yn 复制 n 行,yw 复制一个单词)。 |
p |
在光标后粘贴已复制的内容;P 在光标前粘贴。 |
4. 保存与退出(底行模式,输入 : 后执行)
| 操作 | 说明 |
|---|---|
:w |
保存文件(:w 新文件名 另存为新文件)。 |
:q |
退出(若文件未修改)。 |
:q! |
强制退出,不保存修改。 |
:wq |
保存并退出(等价于 :x)。 |
:set nu |
显示行号(:set nonu 关闭行号)。 |
5. 搜索与替换(底行模式)
| 操作 | 说明 |
|---|---|
/关键词 |
向下搜索 “关键词”(?关键词 向上搜索)。 |
n/N |
搜索下一个 / 上一个匹配项。 |
:s/旧内容/新内容 |
在当前行替换第一个匹配的旧内容为新内容。 |
:s/旧内容/新内容/g |
在当前行替换所有匹配的旧内容。 |
:%s/旧内容/新内容/g |
在所有行中替换所有匹配项(% 表示全文)。 |
三、示例流程
- 编辑文件:bash
example.txt - 输入内容:
- 按
i进入插入模式,输入文本,完成后按Esc返回命令模式。
- 按
- 保存退出:
- 按
:进入底行模式,输入wq并回车。
- 按
四、进阶技巧
- 可视化模式:按
v选中字符,V选中行,配合d/y进行删除 / 复制。 - 多文件编辑:bash
file1.txt file2.txt:n 切换到下一个文件,:N 切换到上一个文件
- 执行 shell 命令:
在底行模式输入!命令(如!ls查看当前目录文件)。
vi 的学习曲线较陡,但熟练后能高效处理文本。如果需要更友好的界面,可尝试 vim(vi 的增强版,支持更多功能,如语法高亮)。