当你在 nano 中编辑配置文件时,最常见的困惑点是如何在不丢失更改的情况下离开编辑器。Nano 使用键盘快捷键而不是菜单,因此保存和退出取决于几个键组合。

本指南展示了如何在 nano 中保存文件、退出 nano、一次性保存并退出,以及在你不想保留更改时丢弃更改。

有关编辑、导航和搜索的更广泛说明,请参阅如何使用 Nano 文本编辑器。

快速参考

操作快捷键
打开文件nano filename
保存更改(留在编辑器中)Ctrl+O,然后 Enter
无需提示保存Ctrl+S
保存并退出Ctrl+X,然后 Y,然后 Enter
不保存退出Ctrl+X,然后 N
以新名称保存Ctrl+O,编辑文件名,然后 Enter
取消退出提示Ctrl+X,然后 Ctrl+C
显示所有命令Ctrl+G

有关可打印的快速参考,请参阅 nano 速查表。

Nano 的命令符号

在屏幕底部,Nano 显示两条常用命令的帮助行。Nano 中的所有命令都以 ^ 或 M 字符开头。

  • 插入符号 (^) 代表 Ctrl 键。例如,^X 表示同时按下 Ctrl 和 X。
  • 字母 M 代表 Alt 键。

要查看完整的命令列表,请按 Ctrl+G。

大多数 Linux 系统使用 nano 的默认快捷键,其中 Ctrl+O 写入文件,Ctrl+X 退出。自 nano 2.9.0 以来,默认设置还将 Ctrl+S 绑定到保存当前文件,因此简单的保存根本不需要经过写入提示。

Nano 8.0 添加了一组可选的现代绑定,通过以 nano -/ 或 nano --modernbindings 启动编辑器启用。这些绑定遵循图形编辑器的约定:Ctrl+S 保存,Ctrl+Q 退出,而 Ctrl+X 剪切当前行而不是退出。如果 Ctrl+X 开始删除文本而不是关闭编辑器,那就是原因。

打开文件

要打开现有文件或创建新文件,键入 nano 后跟文件名:

终端

nano filename

将打开一个新的编辑器窗口,你可以开始编辑文件。

Nano 中保存更改

完成更改后,按 Ctrl+O(字母 O,不是零)来保存你的工作。

Nano 将在底部显示当前文件名并提示你确认。

  • 按 Enter 以相同名称保存文件。
  • 或者输入新名称并按 Enter 将其保存为不同的文件。

按下 Ctrl+O 保存文件后显示的 Nano 文件名提示

该提示的措辞取决于 nano 版本。Nano 8.3 及更早版本将其标记为 File Name to Write:,如上截图所示,而 nano 8.4 及更新版本将其标记为 Write to File:。两种版本的按键行为相同。

提示下方的帮助行列出了在写入文件之前可以应用的选项:M-D 切换到 DOS 行尾,M-A 将缓冲区附加到目标文件,M-P 将其前置,M-B 保留先前内容的备份副本,而 ^T 打开文件浏览器。Nano 9.0 及更早版本还显示 M-M 用于旧 Mac 行尾,但 nano 9.1 移除了该格式。按 Ctrl+C 离开提示而不写入任何内容。

警告要保存文件,你必须对该文件具有写入权限。如果你正在创建新文件,你需要对将保存文件的目录具有写入权限。

使用 Ctrl+S 保存

当文件已有名称时,Ctrl+S 是更短的路径。它将缓冲区直接写入磁盘而不询问任何问题,并在状态栏上报告结果:

输出

[Wrote 24 lines]

Nano 自版本 2.9.0 以来已将 Ctrl+S 绑定到此直接保存,因此它在当前发行版中可用而无需任何配置。唯一的例外是尚未具有文件名的缓冲区,例如你从裸 nano 获得的缓冲区,其中 Ctrl+S 打开与 Ctrl+O 使用的相同的写入提示。

退出 Nano

当你完成并希望退出 Nano 时,按 Ctrl+X。

如果你没有修改文件,Nano 将立即退出并返回到终端。

如果有未保存的更改,Nano 将询问:“Save modified buffer?”

退出时显示未保存更改的 Nano 保存修改缓冲区提示

  • Y:保存更改。Nano 将显示文件名并提示你确认。按 Enter 保存并退出。
  • N:丢弃更改并返回到终端。
  • Ctrl+C:取消退出提示并留在编辑器中。

故障排除

保存时“权限拒绝”
Nano 在状态栏上报告失败,例如 Error writing /etc/hosts: Permission denied。你对文件或其目录没有写入权限。使用 ls -l 检查权限。如果你需要 root 访问权限,请使用 sudo nano filename 重新打开文件。

文件以只读方式打开
Nano 在缓冲区加载时立即在状态栏上显示 File '/etc/hosts' is unwritable。你仍然可以在其中键入,但写入将失败,因此使用 Ctrl+X 退出并使用 sudo nano filename 重新打开文件。查看模式是一个单独的案例:使用 nano -v 打开的文件在标题栏中显示 View,并且 nano 拒绝编辑本身。

意外按下了 Ctrl+X
如果 Nano 显示保存提示,请按 Ctrl+C 取消并返回编辑器而不会丢失更改。

保存覆盖了错误的文件
当 Nano 提示文件名时,清除当前名称并在按 Enter 保存为不同文件之前输入新名称。

Ctrl+S 冻结了终端
这发生在 nano 之外,其中 Ctrl+S 是暂停终端输出的 XOFF 字符。按 Ctrl+Q 恢复。在编辑器内部,该键保存文件,除非 nano 是以 --preserve 启动的,它将 Ctrl+S 和 Ctrl+Q 交还给终端。

Ctrl+X 剪切行而不是退出
Nano 正在使用现代绑定运行,通过 nano -/ 或 nano --modernbindings 启动。按 Ctrl+Q 退出,或在不使用该选项的情况下重新启动编辑器。

常见问题解答

Nano 中 Ctrl+O 和 Ctrl+X 有什么区别?
Ctrl+O 保存文件并保持编辑器打开,以便你可以继续编辑。Ctrl+X 退出编辑器,如果有未保存的更改则提示你保存。

如何在 Nano 中不退出时保存文件?
按 Ctrl+O,然后按 Enter 确认文件名。Nano 保存文件,你仍然在编辑器中。

如何在不保存更改的情况下退出 Nano?
按 Ctrl+X,然后在“Save modified buffer?”提示时按 N。Nano 丢弃所有未保存的更改并返回到终端。

如何在 Nano 下以不同名称保存文件?
按 Ctrl+O。当 Nano 显示文件名提示时,清除当前名称,输入新文件名,然后按 Enter。

Nano 中的“Save modified buffer?”是什么意思?
这意味着 Nano 检测到未保存的更改。按 Y 保存,N 丢弃更改并退出,或 Ctrl+C 取消并返回编辑。