这篇文档按一个更实用的思路重新整理:主角是 nano,使用场景是 WSL、Linux、SSH、远程服务器里的配置文件编辑,vim 只保留一个很短的附录,不再放在中间打断阅读。

如果你的真实需求是改 ~/.bashrc~/.zshrc~/.gitconfig/etc/hosts,或者改 sshnginxdocker composeyamlenv 之类的配置,那么 nano 往往比 vim 更适合你。

目录

    1. Nano 速查表
    1. 为什么 Nano 特别适合改配置文件
    1. Nano 最常用的操作
    1. 配置文件场景里的高频用法
    1. 常用启动参数
    1. 推荐的 .nanorc
    1. WSL / SSH 里的常见问题
    1. Vim 极简附录
    1. 我的建议

1. Nano 速查表

先看这个。你平时真正高频会用到的,通常就是下面这些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
打开文件            nano file.txt
跳到指定行 nano +120,8 file.txt
保存 Ctrl+O
退出 Ctrl+X
搜索 Ctrl+W
替换 Ctrl+\
跳行 Ctrl+_
剪切当前行 Ctrl+K
粘贴 Ctrl+U
开始/结束选区 Ctrl+6 或 Alt+A
复制 Alt+6
撤销 Alt+U
重做 Alt+E
帮助 Ctrl+G
只读打开 nano -v file.txt
显示行号 nano -l file.txt
启用鼠标 nano -m file.txt
软换行显示 nano -S file.txt
备份原文件 nano -B file.txt

如果你只想先记住一套最小命令集,记这 8 个就够用了:

  • Ctrl+O 保存
  • Ctrl+X 退出
  • Ctrl+W 搜索
  • Ctrl+\ 替换
  • Ctrl+K 剪切当前行
  • Ctrl+U 粘贴
  • Ctrl+_ 跳行
  • Ctrl+G 帮助

2. 为什么 Nano 特别适合改配置文件

如果你不是想把终端编辑器当主力代码编辑器,而只是想高效改配置文件,那 nano 的优势非常明显。

2.1 没有模式切换负担

nano 是无模式编辑器:

  • 打开就能直接输入
  • 不需要先按 i
  • 不需要记 :wq
  • 不容易发生“我到底现在在哪个模式”这种问题

这一点对临时改配置特别重要,因为你追求的是:

  • 快速打开
  • 改掉问题
  • 保存退出

而不是研究一套复杂命令系统。

2.2 底部自带快捷键提示

nano 底部通常会直接显示帮助提示,例如:

  • ^O 写入文件
  • ^X 退出
  • ^W 搜索

这里的:

  • ^ 表示 Ctrl
  • M- 表示 Alt / Meta

这对配置文件编辑很友好,因为你不需要靠背诵完整命令系统才能开始工作。

2.3 在 Linux / WSL / SSH 环境里几乎随处可用

很多服务器、容器、WSL 环境里,nano 都更容易直接上手。

它特别适合这些场景:

  • 远程机器突然要改一行配置
  • sudo 编辑系统文件
  • 改完就退出,不做复杂跳转
  • 看日志、改 yaml、改 env、改 shell 配置

2.4 你本来就不打算用终端编辑器写大量代码

如果你的真实工作流是:

  • 写代码用专门编辑器,比如 VS Code、JetBrains、Notepad++
  • 终端里只负责改配置、修小问题

nano 通常更符合你的目标。


3. Nano 最常用的操作

这一节只讲配置文件场景里最有用的内容。

3.1 打开文件

最常见:

1
nano file.txt

打开常见配置文件:

1
2
3
4
nano ~/.bashrc
nano ~/.zshrc
nano ~/.gitconfig
nano ~/.ssh/config

编辑系统文件:

1
2
3
sudo nano /etc/hosts
sudo nano /etc/ssh/sshd_config
sudo nano /etc/nginx/nginx.conf

如果文件不存在,nano 会在保存时创建它。

3.2 保存

按:

1
Ctrl+O

然后回车确认文件名。

3.3 退出

按:

1
Ctrl+X

如果文件有改动但没保存,nano 会问你:

  • Y:保存后退出
  • N:不保存退出
  • Ctrl+C:取消这次退出

3.4 搜索

按:

1
Ctrl+W

输入关键词后回车。

这是改配置文件时最高频的操作之一,比如查:

  • proxy
  • timeout
  • host
  • listen
  • PATH

3.5 替换

按:

1
Ctrl+\

然后按提示:

  1. 输入要查找的内容
  2. 输入替换后的内容
  3. 逐个确认,或者全部替换

这个功能非常适合改配置项,比如:

  • 把端口 8080 改成 3000
  • 把旧路径替换成新路径
  • 把某个域名替换成新域名

3.6 跳到指定行

按:

1
Ctrl+_

然后输入:

  • 120 表示跳到第 120 行
  • 120,8 表示跳到第 120 行第 8 列

适合:

  • 根据报错行定位问题
  • 跳到配置文件中的某一段

3.7 剪切与粘贴

没有选区时:

  • Ctrl+K:剪切当前整行
  • Ctrl+U:在当前光标位置粘贴

连续按多次 Ctrl+K

  • 会把多行连续剪下来
  • 然后一次 Ctrl+U 可以整段贴回去

这在调整配置块顺序时非常有用,比如:

  • 调整 server 段顺序
  • 调整 aliasexport 的顺序
  • 调整 docker compose 里的某个服务块

3.8 选择与复制

开始选区:

  • Ctrl+6
  • Alt+A

然后移动光标,经过的内容就会被选中。

复制选区:

1
Alt+6

剪切选区:

1
Ctrl+K

3.9 撤销与重做

较新的 nano 版本通常支持:

  • Alt+U:撤销
  • Alt+E:重做

如果某些环境下 Alt 键不稳定,可以尝试:

  • 先按 Esc
  • 再按 UE

3.10 帮助

忘了按键时,直接按:

1
Ctrl+G

这是最稳的保底方案。


4. 配置文件场景里的高频用法

这一节只讲你真正会遇到的配置文件工作流。

4.1 改 shell 配置

1
2
nano ~/.bashrc
nano ~/.zshrc

常见动作:

  • 增加 alias
  • 修改 PATH
  • 增加环境变量
  • 调整 prompt

改完后通常别忘了:

1
source ~/.bashrc

或:

1
source ~/.zshrc

4.2 改 Git 配置

1
nano ~/.gitconfig

常见动作:

  • 改用户名和邮箱
  • 配别名
  • 配默认分支行为
  • 配颜色或编辑器

4.3 改 SSH 配置

1
nano ~/.ssh/config

这个文件非常适合用 nano,因为通常只是:

  • 增加一个 Host
  • 改端口
  • 改用户名
  • IdentityFile

4.4 改系统文件

1
2
3
sudo nano /etc/hosts
sudo nano /etc/fstab
sudo nano /etc/ssh/sshd_config

这类文件一般不需要复杂编辑,只需要:

  • 搜索
  • 改几行
  • 保存退出

这正是 nano 最擅长的场景。

4.5 改 YAML / Docker Compose / Nginx 配置

例如:

1
2
3
nano docker-compose.yml
nano compose.yaml
sudo nano /etc/nginx/nginx.conf

这类文件的关键是:

  • 不要改错缩进
  • 快速搜索关键字段
  • 尽量少做复杂文本操作

nano 在这种场景下比 vim 更不容易带来额外心智负担。

4.6 只读查看,避免误改

如果你只是想先看:

1
nano -v file.txt

非常适合:

  • 先确认配置结构
  • 查某个值
  • 查某段内容

4.7 保存前自动留备份

如果你改的是比较关键的配置,建议:

1
nano -B file.txt

保存后会自动生成:

  • file.txt~

这对系统配置文件尤其有用。

4.8 根据报错直接跳行

1
nano +87,1 nginx.conf

很适合:

  • nginx 报第几行语法错误
  • shell 脚本报某一行
  • yaml 报某一行格式错误

4.9 临时查看命令输出

1
git diff | nano -

这里的 - 表示从标准输入读取。

这个用法适合:

  • 临时查看输出
  • 复制一段内容
  • 先人工读一下再决定怎么改

5. 常用启动参数

下面这些选项,和配置文件编辑关系最大。

5.1 显示行号

1
nano -l file.txt

5.2 只读打开

1
nano -v file.txt

5.3 启用鼠标

1
nano -m file.txt

5.4 软换行显示超长行

1
nano -S file.txt

它只是显示成多行,不会真的写入换行。

5.5 自动创建备份

1
nano -B file.txt

5.6 自动缩进

1
nano -i file.txt

5.7 Tab 转空格

1
nano -E file.txt

这个对很多配置文件有帮助,但要注意:

  • Makefile 这类严格依赖 Tab 的文件要小心

5.8 记住光标位置

1
nano -P file.txt

5.9 打开时定位到指定行列

1
nano +120,8 file.txt

6. 推荐的 .nanorc

如果你主要是用 nano 改配置文件,我建议用一份偏实用、偏稳的配置。

用户配置文件通常是:

  • ~/.nanorc

推荐示例:

1
2
3
4
5
6
7
8
9
10
11
set linenumbers
set mouse
set autoindent
set softwrap
set atblanks
set historylog
set positionlog
set indicator
set minibar

include "/usr/share/nano/*.nanorc"

这些配置的含义:

  • set linenumbers:显示行号
  • set mouse:启用鼠标
  • set autoindent:新行自动继承缩进
  • set softwrap:超长行按屏幕宽度显示
  • set atblanks:软换行优先在空白处分行
  • set historylog:记住搜索和替换历史
  • set positionlog:记住上次光标位置
  • set indicator:右侧显示滚动指示
  • set minibar:底栏信息更紧凑
  • include "/usr/share/nano/*.nanorc":启用系统语法高亮

6.1 一个更保守的版本

如果你不喜欢软换行,也可以用这个:

1
2
3
4
5
6
7
8
set linenumbers
set mouse
set autoindent
set historylog
set positionlog
set indicator

include "/usr/share/nano/*.nanorc"

这更适合:

  • 代码片段
  • yaml
  • 不想看到长行自动换屏的场景

7. WSL / SSH 里的常见问题

7.1 终端粘贴和 Nano 粘贴不是一回事

这是最常见的坑。

nano 内部的剪切与粘贴是:

  • Ctrl+K
  • Ctrl+U

终端自己的系统粘贴通常是:

  • Ctrl+Shift+V
  • 鼠标右键

不要把这两套逻辑混在一起。

7.2 Ctrl+C 在传统 Nano 里不是复制

传统 nano 中:

  • Ctrl+C 通常是显示当前位置等状态信息
  • 不是复制

所以最稳妥的复制方式仍然是:

  • 选区后按 Alt+6

7.3 Alt 键不工作怎么办

有些终端里 Alt 不会直接传进去。

可以尝试:

  • 按一次 Esc,再按目标键
  • 检查终端是否把 Alt 用作菜单快捷键
  • 在终端里打开“Alt 作为 Meta 发送”之类的选项

7.4 nano -S 只是显示换行,不是真的插入换行

这个点很重要。

1
nano -S file.txt

只是为了让超长行看起来更容易读,不会真的改写文件内容结构。

7.5 关键配置建议先留备份

改重要系统配置前,优先考虑:

1
nano -B file.txt

或者你自己先复制一份:

1
cp file.txt file.txt.bak

8. Vim 极简附录

这一节只是为了防止你偶尔遇到 vim,不是为了让你系统学习它。

如果你并不想用 vim,其实只记下面几个就够了:

1
2
3
4
5
6
i        进入输入模式
Esc 回普通模式
:wq 保存并退出
:q! 不保存退出
/text 搜索
dd 删除当前行

一句话理解:

  • nano 更适合“改配置文件”
  • vim 更适合“长期高频文本操作”

既然你写代码本来就会用专门编辑器,那这里不用花太多精力。


9. 我的建议

如果你的目标已经很明确:

  • 写代码用专门编辑器
  • 终端里只想快速改配置

那我建议就是:

  1. nano 用熟
  2. 把上面的速查表记住
  3. .nanorc 配起来
  4. 遇到 vim 时只会退出就够了

对你这种使用方式来说,最值得练熟的不是一整套 vim,而是这几个 nano 动作:

  • 打开文件
  • 搜索
  • 替换
  • 跳行
  • 保存
  • 退出

这已经足够覆盖大多数配置文件场景。