菜鸟科技网

vi命令末行模式

什么是末行模式?

末行模式是 vi 编辑器三种模式之一(另外两种是普通模式插入模式),它通过在普通模式下输入冒号 来进入,它的主要特点是光标会跳转到屏幕的最底部一行,并显示一个冒号 ,等待你输入命令。

vi命令末行模式-图1
(图片来源网络,侵删)

你可以把末行模式想象成 vi 的“命令行控制中心”,在这里你可以执行保存、退出、搜索、替换、配置设置等高级操作。


如何进入和退出末行模式?

  • 进入末行模式

    1. 确保你当前处于普通模式(按 Esc 键可以确保进入普通模式)。
    2. 按下冒号 键。
    3. 光标就会跳到屏幕底部,出现 提示符。
  • 退出末行模式

    • 按下 Enter 键:执行你输入的命令,然后返回普通模式。
    • 按下 Esc 键:取消当前输入,直接返回普通模式,这是最常用的退出方式,尤其是在输错命令时。

末行模式的核心命令分类

末行模式的命令非常丰富,下面我们将其分为几大类进行详细介绍。

vi命令末行模式-图2
(图片来源网络,侵删)

文件操作(保存与退出)

这是末行模式最基本也是最常用的功能。

命令 全称 功能说明
w write 保存对文件的修改,但不退出。
q quit 退出 vi 编辑器,如果文件有未保存的修改,会报错。
wq write and quit 保存修改并退出,这是最标准的保存退出方式。
x 保存修改并退出,与 wq 类似,但如果文件没有修改,它不会更新文件时间戳,更高效。
q! quit without saving 强制退出不保存任何修改,当你改乱了文件想放弃所有更改时非常有用。
wq! write and quit force 强制保存并退出,当你对文件没有写入权限但又想保存时使用(需要文件所有者权限)。
w newfile.txt write to new file 将当前文件的内容另存为 newfile.txt,原文件保持不变。
r filename read filename 文件的内容读取并插入到当前光标所在位置的下方。

组合使用示例:

  • 修改完代码后,输入 wq 然后回车,保存并退出。
  • 不小心改错了很多东西,想全部放弃,输入 q! 然后回车,直接退出。
  • 想把当前文件备份一份,输入 w my_backup.txt 然后回车。

搜索与替换

vi 的搜索和替换功能非常高效,使用正则表达式。

命令 功能说明
/pattern 光标位置向下搜索 pattern(字符串或正则表达式),按 n 跳到下一个匹配项,N 跳到上一个。
?pattern 光标位置向上搜索 pattern,同样按 nN 在匹配结果间跳转。
s/old/new 当前行中,将第一个 old 替换为 new
s/old/new/g 当前行中,将所有的 old 全部替换为 new (g 代表 global)。
%s/old/new/g 整个文件中,将所有的 old 全部替换为 new,这是最常用的全局替换命令。
%s/old/new/gc 整个文件中,将所有的 old 全部替换为 new,但每次替换前都会询问你是否确认 (c 代表 confirm)。

搜索与替换示例:

vi命令末行模式-图3
(图片来源网络,侵删)
  • 搜索 "error":输入 /error 回车。
  • 将当前文件所有的 "color" 替换为 "colour":输入 %s/color/colour/g 回车。
  • 将文件中所有的 "foo" 替换为 "bar",但每次都先问你:输入 %s/foo/bar/gc 回车,然后你会看到 replace with bar (y/n/a/q/l/^E/^Y)? 的提示,按 y 确认,n 跳过,a 全部替换,q 退出替换。

窗口与标签页操作(vim 特有)

如果你使用的是 vim,末行模式还提供了强大的窗口和标签页管理功能。

命令 功能说明
e filename 打开一个新文件 filename 到当前窗口。
sp filename 水平分割窗口,并在新窗口中打开 filename
vs filename 垂直分割窗口,并在新窗口中打开 filename
tabe filename 在一个新标签页中打开 filename
wq 在分割窗口中,关闭当前窗口并保存。
q 在分割窗口中,关闭当前窗口(如果所有窗口都关闭了,vim 也会退出)。
bn / bp 切换到下一个 / 上一个缓冲区。

窗口操作示例:

  • 想同时查看两个文件:打开 file1.txt 后,输入 sp file2.txt 回车,屏幕就会上下分成两个窗口。
  • 在一个窗口中修改代码,另一个窗口查看参考文档,非常方便。

其他实用命令

命令 功能说明
set nu 显示行号。
set nonu 取消显示行号。
set ic 搜索时忽略大小写。
set noic 搜索时区分大小写(默认)。
syntax on 开启语法高亮。
noh 高亮取消,执行搜索后,匹配项会被高亮显示,输入 noh 回车可以取消这些高亮。
help 打开 vim 的内置帮助文档。help w 会查看 w 命令的帮助。

总结与技巧

  1. Esc 是你的朋友:如果在末行模式输错了命令,或者想取消,直接按 Esc 键,它会让你安全地回到普通模式。
  2. 命令补全:在输入命令时,可以按 Tab 键进行补全,比如输入 se 然后按 Tab,会自动补全为 set
  3. 命令历史:在末行模式下,可以使用上下方向键 和 来浏览你之前输入过的命令。
  4. 从普通模式开始:所有强大的末行模式命令,都必须从普通模式(按 Esc 进入)通过 来启动。

掌握末行模式,意味着你真正开始解锁 vi/vim 编辑器的强大潜力,它能让你的文本编辑效率得到质的飞跃。

分享:
扫描分享到社交APP
上一篇
下一篇