Skip to main content

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
  • :wqZZ:保存并退出。
  • :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:在当前行替换所有出现的 oldnew
  • :%s/old/new/g:在整个文件中替换所有出现的 oldnew

高级操作

  • :set nu:显示行号。
  • :set nonu:隐藏行号。
  • :w [filename]:将编辑的数据储存成另一个档案(类似另存新档)。
  • :r [filename]:在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面。
  • :! command:暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息。