进阶实战:文本编辑实战

在 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读取并插入另一个文件的内容
💡 Nano 配置

创建 ~/.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跳到文件结尾
:nngg跳到第 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 行(数字 + 命令)
命令功能
yyY复制当前行
yw复制一个单词
y$复制到行尾
p在光标后粘贴
P在光标前粘贴
命令功能
r + 字符替换当前字符
cw修改到单词结尾(删除并进入插入模式)
c$C修改到行尾
ccS删除整行并进入插入模式
~切换当前字符大小写

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     " 交换文件目录
💡 Vim 进阶资源
  • Vimtutor: 在终端运行 vimtutor 完成官方 30 分钟交互式教程
  • Vimcasts: https://vimcasts.org/ - 高质量 Vim 视频教程
  • Practical Vim (书籍): Drew Neil 的经典 Vim 实战指南
  • Vim Awesome: https://vimawesome.com/ - Vim 插件大全
Navigation