Linux: 文本编辑器——nano 入门与 vim 基础
在 Linux 服务器上,没有 VS Code 的图形界面。你只能靠终端文本编辑器修改配置文件、写代码。最常用的两个是:nano(零门槛)和 vim(效率之王)。
📋 前置知识:需要先掌握以下内容
- 第3课:终端入门
1. 你将学到
- nano 的基本使用
- vim 的三种模式
- vim 光标移动和编辑
- vim 搜索与替换
- 选择适合自己的编辑器
2. 一个在终端里编辑文件的故事
(1) 痛点:SSH 登录后没法用 VS Code
小明用 ssh 登录服务器后想修改 Nginx 配置文件,但服务器上没有 VS Code,也没有图形界面。他听说过 vim 但不知道怎么操作——打开后连退出都不会。
资深工程师 Bob 教了他最关键的几个按键:i 进入编辑模式开始写内容,Esc 回到普通模式,:wq 保存退出。
(2) 三步法
Bob 说:"记住这三步,你就能用 vim 编辑任何文件了。"
i 进入插入模式开始编辑、Esc 回到普通模式、:wq 保存退出。只要记住这三步,你就能用 vim 完成绝大多数编辑任务,其余技巧可以逐步学习。
vim /etc/nginx/nginx.conf
# 1. 按 i 进入插入模式——开始编辑
# 2. 编辑完成后按 Esc 回到普通模式
# 3. 输入 :wq 然后按回车——保存并退出
(3) 收益:从此不怕改配置文件
小明学会了 vim 基础后,发现改服务器配置其实很快——打开文件、找到要改的行、按 i 修改、:wq 保存,整个过程不到 30 秒。
3. 知识点讲解
(1) nano——零门槛编辑器
nano 是所有 Linux 系统都预装的简单编辑器。它的操作提示直接显示在屏幕底部。
ℹ️ 说明:如果只是偶尔改一下配置文件,nano 完全够用且零学习成本;如果每天需要大量编辑文本,vim 的效率远超 nano。建议先用 nano 入门,等觉得它不够快了再转 vim。
打开文件:
nano filename
nano /etc/nginx/nginx.conf # 需要 sudo 时:sudo nano /etc/nginx/nginx.conf
常用快捷键(^ 表示 Ctrl 键):
| 快捷键 | 作用 |
|---|---|
Ctrl + O |
保存文件 |
Ctrl + X |
退出 nano |
Ctrl + W |
搜索文本 |
Ctrl + K |
剪切当前行 |
Ctrl + U |
粘贴 |
Ctrl + G |
显示帮助 |
Alt + U |
撤销 |
Alt + E |
重做 |
(2) vim 的三种模式
vim 最大的特点是模式驱动——同一个按键在不同模式下功能不同。
┌─────────────────────────────┐
│ 普通模式 (Normal) │ ← 启动时的默认模式,用于移动和操作
│ 按 i / a / o → 插入模式 │
│ 按 v / V → 可视模式 │
│ 按 : → 命令行模式 │
└──────────────┬──────────────┘
│
┌──────────┴──────────┐
↓ ↓
┌──────────────┐ ┌──────────────┐
│ 插入模式 │ │ 可视模式 │
│ (Insert) │ │ (Visual) │
│ 按 Esc → │ │ 按 Esc → │
│ 回到普通模式 │ │ 回到普通模式 │
└──────────────┘ └──────────────┘
(3) vim 光标移动(普通模式)
h ← 左移一个字符
j ↓ 下移一行
k ↑ 上移一行
l → 右移一个字符
w 跳到下一个单词开头
b 跳到上一个单词开头
0 跳到行首
$ 跳到行尾
gg 跳到文件开头
G 跳到文件末尾
:行号 跳到指定行(如 :42 跳到第 42 行)
Ctrl+F 向下翻一页
Ctrl+B 向上翻一页
3dd 删除 3 行、5yy 复制 5 行、10j 向下移动 10 行。这是 vim 效率的关键之一:用计数前缀避免重复按键。
(4) vim 编辑操作(普通模式)
i 在光标前插入(进入插入模式)
a 在光标后插入
o 在当前行下方插入新行
O 在当前行上方插入新行
x 删除光标下的字符
dd 删除当前行
dw 删除一个单词
d$ 删除到行尾
yy 复制当前行(yank)
yw 复制一个单词
p 在光标后粘贴
P 在光标前粘贴
u 撤销
Ctrl+R 重做
(5) vim 搜索与替换
# 搜索(普通模式)
/pattern 向下搜索 pattern
?pattern 向上搜索 pattern
n 跳到下一个匹配
N 跳到上一个匹配
# 替换(命令行模式)
:%s/old/new/g 全文替换 old 为 new
:%s/old/new/gc 全文替换(逐个确认)
:5,20s/old/new/g 第 5-20 行替换
▶ 示例:用 nano 编辑文件
# 创建并编辑一个文件
nano hello.txt
# 在 nano 中:
# 1. 输入 "Hello Linux!"
# 2. Ctrl + O → 按回车保存
# 3. Ctrl + X → 退出 nano
# 查看文件内容
cat hello.txt
输出:
TEXT 📖 仅展示Hello Linux!
▶ 示例:vim 基础操作
# 打开文件
vim practice.txt
# 练习序列:
# 1. 按 i → 进入插入模式
# 2. 输入 "This is line 1" → 按回车
# 3. 输入 "This is line 2"
# 4. 按 Esc → 回到普通模式
# 5. 输入 :wq → 按回车保存并退出
▶ 示例:vim 复制粘贴
# 1. 用 vim 打开一个文件
vim practice.txt
# 2. yy 复制当前行
# 3. p 在下方粘贴
# 4. 重复按 p 粘贴多次
# 5. 5yy 复制 5 行
# 5p 粘贴 5 次
# 6. dd 删除当前行
# 7. 3dd 删除 3 行
▶ 示例:vim 搜索替换
vim config.txt
# 搜索 nginx
/nginx
n # 下一个匹配
N # 上一个匹配
# 将 port 全部替换为 PORT
:%s/port/PORT/g
# 替换前先确认
:%s/port/PORT/gc
# 每个匹配会询问:y 确认 / n 跳过 / a 全部
▶ 示例:vim 配置(~/.vimrc)
创建一个简单的 .vimrc 配置文件让 vim 更友好:
cat > ~/.vimrc << 'EOF'
syntax on " 语法高亮
set number " 显示行号
set tabstop=2 " Tab 宽度 2
set shiftwidth=2 " 缩进宽度 2
set expandtab " 用空格代替 Tab
set autoindent " 自动缩进
set cursorline " 高亮当前行
set hlsearch " 搜索结果高亮
set ignorecase " 搜索忽略大小写
set incsearch " 输入时即搜索
EOF
▶ 综合示例:用 vim 编辑 Nginx 配置文件
# 打开 Nginx 默认站点配置
sudo vim /etc/nginx/sites-available/default
# 操作步骤:
# 1. /server_name 搜索 server_name
# 2. n 跳到下一处
# 3. i 进入插入模式,修改域名
# 4. Esc 退出插入模式
# 5. /root 搜索 root 路径
# 6. 修改网站根目录
# 7. :wq 保存并退出
# 8. sudo nginx -t 测试配置
# 9. sudo systemctl reload nginx 重载配置
❓ 常见问题
Q: vim 怎么退出(最经典的问题)? A: 按顺序:
Esc(确保在普通模式)→:(进入命令行模式)→q(退出)或q!(强制退出不保存)或wq(保存并退出)。
Q: nano 和 vim 学哪个? A: 推荐 nano 入门(零门槛,提示在底部),然后循序渐进学 vim。vim 一旦上手,效率远超 nano——但对于"偶尔改个配置文件"的场景,nano 完全够用。
Q: vim 怎么撤销? A: 在普通模式按
u撤销,按Ctrl + R重做。连续按u可以多次撤销。
Q: 怎么在 vim 里显示行号? A: 在命令行模式输入
:set number。如果想默认就显示,将set number写入~/.vimrc。
Q: 远程编辑文件有没有更好的方案? A: VS Code Remote - SSH 插件可以在本地 VS Code 中编辑远程文件。JetBrains GateWay 也支持类似功能。但 SSH 时代理工工具不可能 100% 覆盖——学 vim 基础仍然是必备技能。
📖 小节
- nano:最简单,底部有快捷键提示,适合初学者和偶尔编辑
- vim:三种模式——普通(移动/操作)/插入(编辑)/命令行(保存/退出/搜索)
- vim 基础三步骤:
i插入 →Esc退出 →:wq保存退出 - 搜索:
/pattern+n下一个 /N上一个 - 替换:
:%s/old/new/g全文替换 - 创建
~/.vimrc让 vim 更友好(行号/语法高亮/搜索高亮)
📝 作业
- 基础题(难度⭐):用 nano 创建并编辑
hello.txt,写入三行文字后保存退出,然后用 vim 打开同一个文件练习光标移动(h/j/k/l/w/b/gg/G) - 进阶题(难度⭐⭐):在 vim 中复制当前行(yy)并粘贴(p)重复 5 次,然后搜索文件中的某个词并用
n/N跳转,最后用:%s/old/new/g做一次替换 - 挑战题(难度⭐⭐⭐):创建一个
~/.vimrc配置文件(语法高亮 + 行号 + Tab 宽度 2 + 搜索高亮),然后用 vim 编辑/etc/ssh/sshd_config(需 sudo),练习搜索和替换操作