Linux: 文本编辑器——nano 入门与 vim 基础

在 Linux 服务器上,没有 VS Code 的图形界面。你只能靠终端文本编辑器修改配置文件、写代码。最常用的两个是:nano(零门槛)和 vim(效率之王)。

📋 前置知识:需要先掌握以下内容

1. 你将学到


2. 一个在终端里编辑文件的故事

(1) 痛点:SSH 登录后没法用 VS Code

小明用 ssh 登录服务器后想修改 Nginx 配置文件,但服务器上没有 VS Code,也没有图形界面。他听说过 vim 但不知道怎么操作——打开后连退出都不会。

资深工程师 Bob 教了他最关键的几个按键:i 进入编辑模式开始写内容,Esc 回到普通模式,:wq 保存退出。

(2) 三步法

Bob 说:"记住这三步,你就能用 vim 编辑任何文件了。"

💡 提示:vim 的核心就是"三步法"——i 进入插入模式开始编辑、Esc 回到普通模式、:wq 保存退出。只要记住这三步,你就能用 vim 完成绝大多数编辑任务,其余技巧可以逐步学习。

BASH
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。

打开文件:

BASH
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 最大的特点是模式驱动——同一个按键在不同模式下功能不同。

TEXT 📖 仅展示

┌─────────────────────────────┐
│         普通模式 (Normal)    │ ← 启动时的默认模式,用于移动和操作
│  按 i / a / o → 插入模式    │
│  按 v / V → 可视模式         │
│  按 : → 命令行模式           │
└──────────────┬──────────────┘
               │
    ┌──────────┴──────────┐
    ↓                     ↓
┌──────────────┐   ┌──────────────┐
│  插入模式     │   │  可视模式     │
│  (Insert)    │   │  (Visual)    │
│  按 Esc →      │   │  按 Esc →     │
│  回到普通模式   │   │  回到普通模式  │
└──────────────┘   └──────────────┘

(3) vim 光标移动(普通模式)

TEXT 📖 仅展示
h       ← 左移一个字符
j       ↓ 下移一行
k       ↑ 上移一行
l       → 右移一个字符
w       跳到下一个单词开头
b       跳到上一个单词开头
0       跳到行首
$       跳到行尾
gg      跳到文件开头
G       跳到文件末尾
:行号    跳到指定行(如 :42 跳到第 42 行)
Ctrl+F  向下翻一页
Ctrl+B  向上翻一页
💡 提示:vim 中数字+命令可以重复执行——3dd 删除 3 行、5yy 复制 5 行、10j 向下移动 10 行。这是 vim 效率的关键之一:用计数前缀避免重复按键。

(4) vim 编辑操作(普通模式)

TEXT 📖 仅展示
i       在光标前插入(进入插入模式)
a       在光标后插入
o       在当前行下方插入新行
O       在当前行上方插入新行

x       删除光标下的字符
dd      删除当前行
dw      删除一个单词
d$      删除到行尾
yy      复制当前行(yank)
yw      复制一个单词
p       在光标后粘贴
P       在光标前粘贴
u       撤销
Ctrl+R  重做

(5) vim 搜索与替换

TEXT 📖 仅展示
# 搜索(普通模式)
/pattern      向下搜索 pattern
?pattern      向上搜索 pattern
n             跳到下一个匹配
N             跳到上一个匹配

# 替换(命令行模式)
:%s/old/new/g          全文替换 old 为 new
:%s/old/new/gc         全文替换(逐个确认)
:5,20s/old/new/g       第 5-20 行替换

▶ 示例:用 nano 编辑文件

BASH
# 创建并编辑一个文件
nano hello.txt

# 在 nano 中:
# 1. 输入 "Hello Linux!"
# 2. Ctrl + O → 按回车保存
# 3. Ctrl + X → 退出 nano

# 查看文件内容
cat hello.txt

输出:

TEXT 📖 仅展示
Hello Linux!

▶ 示例:vim 基础操作

TEXT 📖 仅展示
# 打开文件
vim practice.txt

# 练习序列:
# 1. 按 i → 进入插入模式
# 2. 输入 "This is line 1" → 按回车
# 3. 输入 "This is line 2"
# 4. 按 Esc → 回到普通模式
# 5. 输入 :wq → 按回车保存并退出

▶ 示例:vim 复制粘贴

TEXT 📖 仅展示
# 1. 用 vim 打开一个文件
vim practice.txt

# 2. yy 复制当前行
# 3. p 在下方粘贴
# 4. 重复按 p 粘贴多次
# 5. 5yy 复制 5 行
# 5p 粘贴 5 次

# 6. dd 删除当前行
# 7. 3dd 删除 3 行

▶ 示例:vim 搜索替换

TEXT 📖 仅展示
vim config.txt

# 搜索 nginx
/nginx
n    # 下一个匹配
N    # 上一个匹配

# 将 port 全部替换为 PORT
:%s/port/PORT/g

# 替换前先确认
:%s/port/PORT/gc
# 每个匹配会询问:y 确认 / n 跳过 / a 全部

▶ 示例:vim 配置(~/.vimrc)

创建一个简单的 .vimrc 配置文件让 vim 更友好:

TEXT 📖 仅展示
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 配置文件

BASH
# 打开 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 基础仍然是必备技能。


📖 小节


📝 作业

  1. 基础题(难度⭐):用 nano 创建并编辑 hello.txt,写入三行文字后保存退出,然后用 vim 打开同一个文件练习光标移动(h/j/k/l/w/b/gg/G)
  2. 进阶题(难度⭐⭐):在 vim 中复制当前行(yy)并粘贴(p)重复 5 次,然后搜索文件中的某个词并用 n/N 跳转,最后用 :%s/old/new/g 做一次替换
  3. 挑战题(难度⭐⭐⭐):创建一个 ~/.vimrc 配置文件(语法高亮 + 行号 + Tab 宽度 2 + 搜索高亮),然后用 vim 编辑 /etc/ssh/sshd_config(需 sudo),练习搜索和替换操作
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏