vi 的常用命令

以下是一些常用的 vi 文本编辑器指令,可以帮助你在 vi 中进行基本的文本编辑操作:
模式切换
基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。

模式切换
i,a,o:进入输入模式。a: 进入输入模式,在光标下一个位置开始输入文本。i:进入输入模式,在光标当前位置开始输入文本。o:在当前行的下方插入一个新行,并进入输入模式。
Esc:退出插入模式回到命令模式。v:进入可视模式(用于选择文本)。
输入模式
- 字符按键以及 Shift 组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
启动和退出
vi filename:打开一个文件进行编辑。:w:保存文件。:q:退出vi。:wq或ZZ:保存并退出。:q!:强制退出不保存。
光标移动
h:左移一个字符。j:下移一行。k:上移一行。l:右移一个字符。0:移动到行首。$:移动到行尾。gg:移动到文件首。G:移动到文件尾。:n:跳转到第 n 行。
编辑操作
删除
x:向后删除一个字符 (相当于 [del] 按键)。X:向前删除一个字符(相当于 [backspace] 亦即是退格键)。nx:n 为数字,连续向后删除 n 个字符。如:连续删除 10 个字符,(命令模式) 『10x』。dw:删除一个单词。dd:删除当前行。ndd:n 为数字。剪切光标所在的向下 n 行,如 20dd 则是剪切 20 行(命令模式),用 p/P 可以粘贴。
复制
yy:复制当前行。nyy:n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(命令模式)
粘贴
-
p:在光标后粘贴。p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
撤销重做
u:撤销上一个操作。Ctrl + r:重做上一个操作。
搜索和替换
/pattern:搜索模式,按n查找下一个,N查找上一个。?pattern:同上,搜索方向为向上搜索。:s/old/new/g:在当前行替换所有出现的old为new。:%s/old/new/g:在整个文件中替换所有出现的old为new。
高级操作
:set nu:显示行号。:set nonu:隐藏行号。:w [filename]:将编辑的数据储存成另一个档案(类似另存新档)。:r [filename]:在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面。:! command:暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息。