编辑器:vim、nano
为什么必须学终端编辑器
作为计算机专业学生,你必须掌握至少一种终端编辑器,因为:
- 远程服务器没有 GUI:SSH 连接到服务器后,只有终端可用
- 快速修改配置:
vim /etc/nginx/nginx.conf比打开图形编辑器快 10 倍 - 系统救援模式:系统崩溃进入单用户模式时,只有 vi/vim 可用
nano:新手友好的编辑器
nano 是最简单的终端编辑器,适合快速修改配置文件。
基本操作
# 打开/创建文件
nano file.txt
# 打开时定位到指定行
nano +10 file.txt
快捷键(底部菜单显示)
| 快捷键 | 作用 | 说明 |
|---|---|---|
Ctrl+O | 保存(Write Out) | 按 Enter 确认文件名 |
Ctrl+X | 退出(eXit) | 有未保存修改会提示 |
Ctrl+K | 剪切当前行(Kut) | 实际是剪切 |
Ctrl+U | 粘贴(Un-kut) | 粘贴剪切的内容 |
Ctrl+W | 搜索(Where is) | 查找文本 |
Ctrl+V | 下一页(Page Down) | |
Ctrl+Y | 上一页(Page Up) | |
Ctrl+A | 行首 | |
Ctrl+E | 行尾 | |
Ctrl+G | 帮助(Get Help) |
nano 使用示例
# 1. 打开文件
nano config.txt
# 2. 直接输入/修改内容
# 3. Ctrl+O 保存(按 Enter 确认)
# 4. Ctrl+X 退出
vim:高效编辑器(必须掌握)
vim(Vi IMproved)是 vi 的增强版,是 Linux 世界最强大的终端编辑器。学习曲线陡峭,但一旦掌握,编辑效率远超其他工具。
三种模式
| 模式 | 作用 | 切换方式 |
|---|---|---|
| 普通模式(Normal) | 浏览、删除、复制、粘贴、移动光标 | 默认模式,按 Esc 进入 |
| 插入模式(Insert) | 输入文字 | 按 i/a/o 进入 |
| 命令模式(Command) | 保存、退出、搜索、替换 | 按 : 进入 |
最低限度生存指南
# 打开文件
vim file.txt
# 进入插入模式(按 i)
# 输入文字
# 保存并退出
# 1. 按 Esc(回到普通模式)
# 2. 按 :wq(命令模式,write + quit)
# 3. 按 Enter
# 不保存退出
# 1. 按 Esc
# 2. 按 :q!(强制退出,不保存)
# 3. 按 Enter
普通模式常用命令
移动光标
| 按键 | 作用 |
|---|---|
h j k l | 左 下 上 右 |
w | 下一个单词开头 |
b | 上一个单词开头 |
e | 当前/下一个单词结尾 |
0 | 行首 |
$ | 行尾 |
gg | 文件开头 |
G | 文件末尾 |
nG | 跳到第 n 行 |
Ctrl+f | 下一页 |
Ctrl+b | 上一页 |
插入模式进入方式
| 按键 | 作用 |
|---|---|
i | 光标前插入(insert) |
a | 光标后插入(append) |
I | 行首插入 |
A | 行尾插入 |
o | 下方新开一行 |
O | 上方新开一行 |
删除和复制
| 按键 | 作用 |
|---|---|
x | 删除光标处字符 |
dd | 删除整行 |
dw | 删除到单词末尾 |
d$ | 删除到行尾 |
yy | 复制整行(yank) |
yw | 复制到单词末尾 |
p | 粘贴(光标后) |
P | 粘贴(光标前) |
u | 撤销(undo) |
Ctrl+r | 重做(redo) |
搜索和替换
| 命令 | 作用 |
|---|---|
/pattern | 向下搜索 |
?pattern | 向上搜索 |
n | 下一个匹配 |
N | 上一个匹配 |
:%s/old/new/ | 每行第一个替换 |
:%s/old/new/g | 全局替换 |
:%s/old/new/gc | 全局替换,每次确认 |
命令模式常用命令
| 命令 | 作用 |
|---|---|
:w | 保存(write) |
:q | 退出(quit) |
:wq 或 :x | 保存并退出 |
:q! | 强制退出,不保存 |
:w! | 强制保存(只读文件) |
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:set paste | 粘贴模式(不自动缩进) |
:n | 跳到第 n 行 |
:%s/old/new/g | 全局替换 |
:%d | 删除所有内容 |
:sp file | 水平分屏打开文件 |
:vsp file | 垂直分屏打开文件 |
vim 分屏操作
| 命令 | 作用 |
|---|---|
:sp | 水平分屏 |
:vsp | 垂直分屏 |
Ctrl+w w | 切换窗口 |
Ctrl+w h/j/k/l | 切换到左/下/上/右窗口 |
Ctrl+w c | 关闭当前窗口 |
Ctrl+w o | 只保留当前窗口 |
vim 配置优化
# 创建/编辑 vim 配置文件
cat > ~/.vimrc
" 显示行号
set number
" 语法高亮
syntax on
" 自动缩进
set autoindent
" 使用空格代替 Tab
set expandtab
" Tab 宽度为 4
set tabstop=4
set shiftwidth=4
" 搜索时高亮
set hlsearch
" 搜索时实时显示
set incsearch
" 显示匹配括号
set showmatch
" 启用鼠标
set mouse=a
" 编码
set encoding=utf-8
" 状态栏
set laststatus=2
" 显示当前模式
set showmode
" 粘贴模式切换快捷键
set pastetoggle=<F2>
# Ctrl+D
vimtutor:官方教程
vim 自带交互式教程,30 分钟完成基础学习:
vimtutor
本篇小结
nano:新手友好,底部显示快捷键,Ctrl+O保存,Ctrl+X退出vim三种模式:普通模式(浏览/编辑)、插入模式(输入)、命令模式(保存/退出/搜索)- 生存最低限度:
i插入 → 编辑 →Esc→:wq保存退出 /:q!强制退出 - 普通模式核心:
hjkl移动,w/b单词移动,dd删除行,yy复制行,p粘贴,u撤销 - 搜索替换:
/pattern搜索,:%s/old/new/g全局替换 vimtutor:官方 30 分钟交互式教程
动手实践
nano 练习:
nano practice.txt # 输入几行文字 # Ctrl+O 保存 # Ctrl+X 退出vim 基础练习:
vim practice.txt # 按 i 进入插入模式 # 输入文字 # 按 Esc 回到普通模式 # 按 :wq 保存退出vim 移动练习:
vim /etc/passwd # gg 到文件开头 # G 到文件末尾 # 10G 到第 10 行 # w 跳到下一个单词 # b 跳到上一个单词 # 0 到行首 # $ 到行尾 # :q! 不保存退出vim 编辑练习:
vim practice.txt # dd 删除一行 # yy 复制一行 # p 粘贴 # u 撤销 # /pattern 搜索 # :%s/old/new/g 替换 # :wq 保存退出运行 vimtutor:
vimtutor # 完成全部课程配置 vim:
cat > ~/.vimrc set number syntax on set tabstop=4 set shiftwidth=4 set expandtab # Ctrl+D思考:为什么 vim 要区分普通模式和插入模式?如果像 nano 一样直接输入文字,会有什么效率问题?vim 的"模式切换"设计在什么场景下能大幅提升编辑速度?