Vi(Vim)是一款功能强大的文本编辑器,广泛应用于Linux和Unix系统中,掌握其快捷命令能极大提升编辑效率,以下为Vi的常用快捷命令大全,分为普通模式、插入模式、命令行模式、可视模式及高级操作五部分,并辅以表格说明。

在普通模式下,移动光标的命令是基础。h、j、k、l分别控制光标左、下、上、右移;w、b、e按单词移动,0(数字零)移至行首,移至行尾;gg跳至文件首行,G跳至末行,nG跳至第n行,删除操作中,x删除当前字符,dd删除整行,ndd删除n行;d$删除至行尾,d^删除至行首,复制粘贴方面,yy复制整行,nyy复制n行,p粘贴到光标后,P粘贴到光标前,撤销与重做通过u和Ctrl+r实现,切换当前字符大小写。
插入模式下,i在光标前插入,a在光标后插入,o在下一行插入新行,O在上一行插入新行;I跳至行首插入,A跳至行尾插入,退出插入模式需按Esc返回普通模式。
命令行模式下,w保存文件,q退出,wq或x保存并退出,q!强制退出不保存;s/old/new替换当前行首个匹配项,%s/old/new/g全局替换;set nu显示行号,set nonu隐藏行号,syntax on开启语法高亮,文件操作中,e filename打开文件,saveas newname另存为,r filename读取文件内容至光标后。
可视模式下,v进入字符选择,V进入行选择,Ctrl+v进入块选择;选中后可配合d删除、y复制、c剪切并进入插入模式。

高级操作包括多窗口编辑(split水平分割,vsplit垂直分割,Ctrl+w+w切换窗口)、宏录制(qa开始录制宏a,q停止,@a执行宏)、标签跳转(gd跳转至定义处,Ctrl+o返回上位置,Ctrl+i前进)以及自动补全(Ctrl+x Ctrl+f补全文件名,Ctrl+x Ctrl+l补全行)。
以下是常用命令的简要总结表格:
| 模式 | 命令 | 功能 |
|---|---|---|
| 普通模式 | h/j/k/l | 光标左/下/上/右移 |
| dd/ndd | 删除当前行/n行 | |
| yy/nyy | 复制当前行/n行 | |
| u/Ctrl+r | 撤销/重做 | |
| 插入模式 | i/a/o/O | 光标前/后/下/上插入 |
| 命令行模式 | w/:q/:wq | 保存/退出/保存并退出 |
| %s/old/new/g | 全局替换 | |
| 可视模式 | v/V/Ctrl+v | 字符/行/块选择 |
相关问答FAQs
Q1: 如何在Vi中同时编辑多个文件?
A1: 使用命令行模式的split filename1和vsplit filename2可分别水平和垂直打开新文件窗口,通过Ctrl+w+w在窗口间切换,q关闭当前窗口。split test.txt打开新窗口编辑test.txt,Ctrl+w+w切回原窗口。

Q2: 如何在Vi中批量替换特定字符串?
A2: 在命令行模式下使用s命令,替换当前行首个匹配项用s/old/new,全局替换当前文件用%s/old/new/g,若需确认每个替换可加c参数(%s/old/new/gc),将文件中所有“error”替换为“warning”需输入:%s/error/warning/g。
