Linux 编辑器 vi 命令详解
vi
是 Linux/Unix 系统中功能强大的文本编辑器,以其高效和灵活性著称。以下是 vi
的核心命令和操作详解,帮助用户快速上手。
一、vi 的三种模式
-
命令模式(Normal Mode)
- 默认进入的模式,用于执行命令(如移动光标、删除文本、保存文件等)。
- 特点:不能直接输入文本。
-
插入模式(Insert Mode)
- 用于编辑文本内容。
- 进入方式:在命令模式下按
i
、a
、o
等键。 - 退出方式:按
Esc
键返回命令模式。
-
底行模式(Command-Line Mode)
- 用于执行保存、退出、搜索等全局命令。
- 进入方式:在命令模式下按
:
。
二、常用命令分类详解
1. 命令模式下的操作
| 命令 | 功能说明 |
|------------|-------------------------------------------|
| h
/ j
/ k
/ l
| 光标左移/下移/上移/右移 |
| w
/ b
| 光标跳到下一个/上一个单词的开头 |
| 0
/ $
| 光标跳到行首/行尾 |
| G
/ gg
| 光标跳到文件末尾/开头 |
| x
| 删除光标所在字符 |
| dd
| 删除当前行 |
| yy
| 复制当前行 |
| p
| 粘贴复制的内容(光标后) |
| P
| 粘贴复制的内容(光标前) |
| u
| 撤销上一步操作 |
| Ctrl + r
| 重做撤销的操作 |
| /pattern
| 向下搜索 pattern
(按 n
查找下一个) |
| ?pattern
| 向上搜索 pattern
(按 n
查找上一个) |
2. 插入模式下的操作
- 进入插入模式:
i
:在光标前插入文本。a
:在光标后插入文本。o
:在当前行下方插入新行。O
:在当前行上方插入新行。
- 退出插入模式:按
Esc
键。
3. 底行模式下的操作
| 命令 | 功能说明 |
|---------------------|-------------------------------------------|
| :w
| 保存文件 |
| :q
| 退出 vi |
| :wq
/ :x
| 保存并退出 |
| :q!
| 强制退出(不保存) |
| :w filename
| 另存为 filename
|
| :set nu
| 显示行号 |
| :set nonu
| 隐藏行号 |
| :s/old/new/
| 替换当前行个 old
为 new
|
| :s/old/new/g
| 替换当前行所有 old
为 new
|
| :%s/old/new/g
| 替换全文中所有 old
为 new
|
| :n
| 跳到第 n
行(如 :10
跳到第 10 行) |
三、高效操作技巧
-
快速移动
Ctrl + f
/Ctrl + b
:向下/向上翻页。Ctrl + d
/Ctrl + u
:向下/向上滚动半屏。
-
多行操作
ndd
:删除n
行(如3dd
删除 3 行)。nyy
:复制n
行(如2yy
复制 2 行)。
-
替换与搜索
- 搜索后按
n
/N
查找下一个/上一个匹配项。 - 替换命令支持正则表达式(如
:%s/foo\d+/bar/g
)。
- 搜索后按
-
分屏编辑
:sp filename
:水平分屏打开文件。:vsp filename
:垂直分屏打开文件。Ctrl + w w
:在分屏间切换。
四、vi 配置与扩展
-
永久显示行号
- 编辑
~/.vimrc
文件,添加set nu
。
- 编辑
-
语法高亮
- 在
~/.vimrc
中添加syntax on
。
- 在
-
自动缩进
- 添加
set autoindent
和set smartindent
。
- 添加
-
插件管理
- 使用
vim-plug
或Vundle
管理插件,扩展功能(如代码补全、文件树)。
- 使用
五、常见问题解决
-
无法退出插入模式
- 按
Esc
键返回命令模式。
- 按
-
误操作后如何恢复
- 使用
u
撤销,或重新打开文件并对比备份(如.filename.swp
)。
- 使用
-
搜索高亮关闭
- 在底行模式输入
:noh
。
- 在底行模式输入
六、
- 学习路径:从基本移动、插入、保存开始,逐步掌握搜索、替换、多行操作。
- 实践建议:多用
vi
编辑配置文件(如/etc/hosts
),熟悉快捷键。 - 替代工具:若需图形界面,可尝试
vim
(vi 的增强版)或nano
。
通过系统练习,vi
将成为高效编辑的得力工具!