vi编辑器是Linux和Unix系统中广泛使用的文本编辑工具,其基本命令掌握对于系统管理和日常操作至关重要,vi有三种主要模式:命令模式(用于输入指令)、插入模式(用于文本输入)和末行模式(用于保存、退出等操作),理解这三种模式的切换是使用vi的基础。

在命令模式下,用户可以通过按键进行光标移动、文本删除、复制粘贴等操作,光标移动是最基本的操作,h键向左移动一个字符,j键向下移动一行,k键向上移动一行,l键向右移动一个字符;0键(数字零)移动到行首,键移动到行尾,gg快速跳转到文件首行,G跳转到文件末行,nG跳转到第n行(如5G跳转到第5行),文本删除方面,x删除光标所在处的字符,nx删除从光标开始的n个字符(如3x删除3个字符),dd删除整行,ndd删除n行(如2dd删除2行),d$删除从光标到行尾的内容,d^删除从光标到行首的内容,复制粘贴操作中,yy复制当前行,nyy复制n行(如4yy复制4行),p在光标后粘贴,P在光标前粘贴,u撤销上一步操作,Ctrl+r恢复撤销的操作。
进入插入模式需要在命令模式下按下特定按键:i在光标前插入,a在光标后插入,o在当前行下方新建一行并插入,O在当前行上方新建一行并插入,I在行首插入,A在行尾插入,插入模式下,可以直接输入文本,按Esc键可返回命令模式。
末行模式通过在命令模式下输入进入,主要用于文件保存和退出。w保存当前文件,q退出vi,wq保存并退出,q!不保存强制退出,w filename将文件另存为filename,r filename读取文件内容并插入到光标位置,末行模式还支持搜索替换,/keyword从光标处向下搜索keyword,?keyword从光标处向上搜索keyword,n跳转到下一个搜索结果,N跳转到上一个搜索结果;s/old/new替换当前行的old为new,s/old/new/g替换当前行所有old为new,%s/old/new/g替换文件中所有old为new。
以下为常用vi基本命令的总结表格:

| 操作类型 | 命令 | 功能说明 |
|---|---|---|
| 光标移动 | h/j/k/l | 左/下/上/右移动一个字符 |
| 0/$ | 移动到行首/行尾 | |
| gg/G/nG | 跳转到首行/末行/第n行 | |
| 文本删除 | x/nx | 删除光标处/n个字符 |
| dd/ndd | 删除当前行/n行 | |
| d$/d^ | 删除到行尾/行首 | |
| 复制粘贴 | yy/nyy | 复制当前行/n行 |
| p/P | 光标后/前粘贴 | |
| 撤销与恢复 | u/Ctrl+r | 撤销/恢复操作 |
| 进入插入模式 | i/a/o/O/I/A | 光标前/后/下方/上方/行首/行尾插入 |
| 保存退出 | w/:q/:wq/:q! | 保存/退出/保存退出/强制退出 |
| 文件操作 | w filename | 另存为filename |
| r filename | 读取文件内容 | |
| 搜索 | /keyword/?keyword | 向下/向上搜索keyword |
| n/N | 下一个/上一个搜索结果 | |
| 替换 | s/old/new | 替换当前行old为new |
| s/old/new/g | 替换当前行所有old为new | |
| %s/old/new/g | 替换文件中所有old为new |
掌握vi基本命令需要通过反复练习,熟悉命令模式与插入模式的切换,以及常用操作的快捷键,能够显著提高在Linux系统下的文本编辑效率。
相关问答FAQs
Q1: vi编辑器中如何快速跳转到文件的指定行?
A1: 在命令模式下,输入行号后按G即可跳转到指定行,跳转到第20行,输入20G;跳转到文件末行,直接输入G;跳转到文件首行,输入gg。
Q2: 在vi编辑器中,如何批量替换文件中的特定内容?
A2: 在末行模式下,使用替换命令,若替换整个文件中的old为new,输入s/old/new/g;若替换文件中所有行的old为new,输入%s/old/new/g(表示整个文件范围),注意,替换前建议先保存文件或使用w!备份,避免误操作导致内容丢失。

