进阶实战:文本编辑实战
在 Linux 中,“一切皆文件”意味着你大部分的运维和配置工作都是在编辑文本。掌握一款终端编辑器是生存的基础。
1. 极简主义:Nano 编辑器
如果你是第一次在终端编辑文件,Nano 是最友好的选择。它在界面底部直接列出了常用快捷键。
1.1 基本操作
| 快捷键 | 功能 | 说明 |
|---|
Ctrl + O | 保存 (Write Out) | 保存当前文件 |
Ctrl + X | 退出 (Exit) | 退出编辑器,会提示是否保存 |
Ctrl + W | 搜索 (Where Is) | 搜索文本 |
Ctrl + \ | 搜索并替换 | 逐个替换确认 |
1.2 进阶操作
| 快捷键 | 功能 |
|---|
Ctrl + A | 跳到行首 |
Ctrl + E | 跳到行尾 |
Ctrl + Y | 向上翻页 |
Ctrl + V | 向下翻页 |
Ctrl + _ | 跳转到指定行号(输入行号后按回车) |
Alt + \ 或 Alt + / | 跳转到文件开头 |
Alt + > | 跳转到文件结尾 |
| 快捷键 | 功能 |
|---|
Ctrl + K | 剪切当前行(可连续剪切多行) |
Ctrl + U | 粘贴之前剪切的内容 |
Alt + U | 撤销上一次操作 |
Alt + E | 重做 |
Ctrl + 6 | 标记文本开始,移动光标后可复制/剪切选区 |
Alt + 6 | 复制当前行或标记的文本 |
Alt + T | 剪切并粘贴到当前行(移动行) |
Ctrl + D | 删除当前字符 |
Ctrl + H | 删除前一个字符(退格) |
| 快捷键 | 功能 |
|---|
Alt + # | 显示/隐藏行号 |
Alt + M | 启用/禁用鼠标支持 |
Alt + S | 启用/禁用平滑滚动 |
Ctrl + G | 打开帮助文档 |
Ctrl + J | 对齐段落(自动格式化) |
Ctrl + R | 读取并插入另一个文件的内容 |
创建 ~/.nanorc 文件可以自定义 Nano 行为:
set constant # 显示光标位置
set linenumbers # 显示行号
set mouse # 启用鼠标支持
set tabsize 4 # 设置 Tab 大小
set autoindent # 自动缩进
include "/usr/share/nano/*.nanorc" # 启用语法高亮
1.3 适用场景
- 简单的配置文件修改
- 不打算深入学习复杂的编辑器操作
- SSH 远程服务器上的快速编辑
- 新手友好的入门选择
2. 永恒的编辑器:Vim
不要害怕那个“进不去也出不来”的编辑器。Vim 是目前最强大的终端编辑器,没有之一。一旦形成肌肉记忆,你的编辑效率将提升数倍。
2.1 Vim 的四种模式
| 模式 | 进入方式 | 用途 |
|---|
| 普通模式 (Normal) | 默认模式 / 按 Esc | 浏览、删除、复制、粘贴等操作 |
| 插入模式 (Insert) | i, a, o, I, A, O | 像普通编辑器一样输入文本 |
| 可视模式 (Visual) | v, V, Ctrl + v | 选择文本块进行操作 |
| 命令模式 (Command) | : , /, ? | 执行保存、退出、搜索等命令 |
| 替换模式 (Replace) | R | 覆盖现有文本 |
i: 在光标前插入
a: 在光标后插入(append)
I: 在行首插入
A: 在行尾插入
o: 在下方新建一行并插入
O: 在上方新建一行并插入
2.2 高效移动命令(普通模式)
| 命令 | 功能 |
|---|
h, j, k, l | 左、下、上、右(或方向键) |
w | 跳到下一个单词开头 |
b | 跳到上一个单词开头 |
e | 跳到当前单词结尾 |
0 (零) | 跳到行首 |
$ | 跳到行尾 |
^ | 跳到行首第一个非空字符 |
| 命令 | 功能 |
|---|
gg | 跳到文件开头 |
G | 跳到文件结尾 |
:n 或 ngg | 跳到第 n 行 |
% | 在成对符号(括号、大括号)之间跳转 |
| 命令 | 功能 |
|---|
Ctrl + f | 向下翻一屏(forward) |
Ctrl + b | 向上翻一屏(backward) |
Ctrl + d | 向下翻半屏(down) |
Ctrl + u | 向上翻半屏(up) |
H | 跳到屏幕顶部(Home) |
M | 跳到屏幕中间(Middle) |
L | 跳到屏幕底部(Last) |
2.3 编辑操作
| 命令 | 功能 |
|---|
x | 删除当前字符 |
X | 删除前一个字符 |
dd | 删除当前行(剪切) |
dw | 删除到下一个单词开头 |
d$ 或 D | 删除到行尾 |
d0 | 删除到行首 |
dgg | 删除到文件开头 |
dG | 删除到文件结尾 |
3dd | 删除 3 行(数字 + 命令) |
| 命令 | 功能 |
|---|
yy 或 Y | 复制当前行 |
yw | 复制一个单词 |
y$ | 复制到行尾 |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
| 命令 | 功能 |
|---|
r + 字符 | 替换当前字符 |
cw | 修改到单词结尾(删除并进入插入模式) |
c$ 或 C | 修改到行尾 |
cc 或 S | 删除整行并进入插入模式 |
~ | 切换当前字符大小写 |
2.4 可视模式(文本选择)
| 命令 | 模式 | 说明 |
|---|
v | 字符可视 | 逐个字符选择 |
V | 行可视 | 逐行选择 |
Ctrl + v | 块可视 | 列块选择(超强功能!) |
块可视模式应用:
# 选中多行后在行首同时添加注释
Ctrl + v → 选择多行 → Shift + i → 输入 # → Esc
# 同时编辑多列文本
Ctrl + v → 选择块 → c → 修改 → Esc
2.5 搜索与替换
| 命令 | 功能 |
|---|
/pattern | 向下搜索 pattern |
?pattern | 向上搜索 pattern |
n | 跳到下一个匹配项 |
N | 跳到上一个匹配项 |
* | 搜索光标所在单词(向下) |
# | 搜索光标所在单词(向上) |
| 命令 | 功能 |
|---|
:s/old/new | 替换当前行第一个匹配 |
:s/old/new/g | 替换当前行所有匹配 |
:%s/old/new/g | 替换全文所有匹配 |
:%s/old/new/gc | 替换全文并逐个确认 |
:10,20s/old/new/g | 在第 10-20 行替换 |
2.6 分屏与多文件
| 命令 | 功能 |
|---|
:split 或 :sp | 水平分屏 |
:vsplit 或 :vsp | 垂直分屏 |
:split file.txt | 打开新文件并分屏 |
| 命令 | 功能 |
|---|
Ctrl + w + w | 在窗口间切换 |
Ctrl + w + h/j/k/l | 切换到左/下/上/右窗口 |
Ctrl + w + q | 关闭当前窗口 |
Ctrl + w + = | 平均分配窗口大小 |
| 命令 | 功能 |
|---|
:e file.txt | 编辑新文件 |
:bn | 下一个 buffer |
:bp | 上一个 buffer |
:ls | 列出所有 buffer |
:b 3 | 切换到 buffer 3 |
2.7 宏录制(批量操作)
qa # 开始录制宏到寄存器 a
# 执行一系列操作...
q # 停止录制
@a # 执行宏 a
10@a # 执行宏 a 10 次
@@ # 重复上次执行的宏
宏应用示例: 在多行前添加注释
qa # 开始录制
I # 行首进入插入模式
// # 输入注释符号
Esc # 回到普通模式
j # 下一行
q # 结束录制
# 然后在需要的地方 @a 或 100@a 重复执行
2.8 寄存器(剪贴板)
"ayy # 复制到寄存器 a
"bdd # 删除到寄存器 b
"cp # 从寄存器 c 粘贴
:reg # 查看所有寄存器内容
"" # 默认无名寄存器
"+ # 系统剪贴板(需要 +clipboard 支持)
"* # 选择缓冲区(X11 的中键粘贴)
2.9 撤销与重做
u: 撤销上一次操作
Ctrl + r: 重做
U: 撤销对当前行的所有修改
:earlier 5m: 恢复到 5 分钟前的状态
:later 10s: 恢复到 10 秒后的状态
:w: 保存
:q: 退出(未修改时)
:wq: 保存并退出
:q!: 强制退出不保存
:x: 保存并退出(类似 :wq)
ZZ: 快速保存并退出(普通模式)
ZQ: 强制退出不保存(普通模式)
:!cmd: 执行外部命令(如 :!ls)
3. 该选哪一个?
初学者、临时修改一个简单的脚本、不打算深入学习 Linux 快捷键。
开发者、系统管理员、追求极致速度、需要在服务器环境下进行复杂代码编辑。
4. 结业练习
5. Vim 配置入门
创建 ~/.vimrc 文件可以大幅改善 Vim 的使用体验:
" === 基础设置 ===
set number " 显示行号
set relativenumber " 显示相对行号(方便移动)
set encoding=utf-8 " 编码设置
filetype on " 启用文件类型检测
filetype plugin on " 启用文件类型插件
filetype indent on " 启用文件类型缩进
syntax on " 语法高亮
" === 编辑体验 ===
set expandtab " 使用空格替代 Tab
set tabstop=4 " Tab 宽度
set shiftwidth=4 " 缩进宽度
set smartindent " 智能缩进
set autoindent " 自动缩进
set wrap " 自动换行显示
set showcmd " 显示当前输入的命令
set wildmenu " 命令行补全增强
set laststatus=2 " 始终显示状态行
" === 搜索设置 ===
set hlsearch " 高亮搜索结果
set incsearch " 增量搜索(边输入边搜索)
set ignorecase " 搜索时忽略大小写
set smartcase " 有大写字母时区分大小写
" === 界面美化 ===
set cursorline " 高亮当前行
set colorcolumn=80 " 第 80 列显示参考线
set background=dark " 深色背景
set mouse=a " 启用鼠标支持
" === 辅助功能 ===
set backspace=indent,eol,start " 退格键行为
set history=1000 " 命令历史记录数量
set undolevels=1000 " 撤销历史数量
set backup " 启用备份
set backupdir=~/.vim/backup " 备份目录
set directory=~/.vim/swap " 交换文件目录