> For the complete documentation index, see [llms.txt](https://slackwarecn.gitbook.io/slackbook_cn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://slackwarecn.gitbook.io/slackbook_cn/chapter_12/opening_saving_and_quitting.md).

# 打开、保存和退出

既然你要学习如何使用 vi，第一件需要掌握的事情就是如何打开和保存文件。打开文件实际上是很容易的，只需将文件路径作为 vi 的命令行参数，vi 就会快速载入文件并呈现给你。例如指令 `vi chapter_11.xml` 会打开文件 `chapter_11.xml` 并将其内容加载到屏幕上，够简单吧！但是当我们编辑完一个文档并希望保存它的时候又该怎么办？我们可以在命令模式下使用 `:w` 命令来完成任务。在命令模式下输入 `:` 会临时将光标移动到窗口最下方并允许你执行一些特殊命令。在术语上我们将这个模式称之为 ex 模式（ex-mode），但是原谅我不会在此提及令人肃然起敬的 `ex` 指令。保存当前工作的指令是 `:w`，一旦这个指令被执行，vi 会将你当前的修改从缓冲区写入到文件。如果你想打开其他文件，只需使用 `:e` 指令（后跟文件路径）就可以让 vi 为你愉快地加载它。但如果你在缓冲区中有未保存的修改，`:e` 指令会失败并在底部打印警告信息。你可以使用 `:e!` 指令强行执行这个动作。绝大多数 EX 模式下的指令支持在其后添加 `!` 字符作为强制执行的标记。 `:e` 告诉 vi，你想立刻打开另一个文件并舍弃缓冲区中未保存的修改。

> 译者注：`ex` 是一个被绝大多数发行版默认安装的行编辑器，在 `ex` 里你所能见到的只有 vi 中的“命令模式”。

但是如果我想丢弃修改并重新开始编辑又该如何？其实这也很容易办到——不加任何参数执行 `:e!` 指令就会舍弃修改并重新载入当前文件。如果你的缓冲区中没有未保存的修改，简单地执行 `:q` 指令就可以退出 vi。当然如果你的缓冲区有为未保存的修改，执行 `:q!` 丢弃这些修改并强制退出 vi。
