飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 基础入门

    • Linux 命令概述与环境准备
    • 文件与目录操作(上):ls、cd、pwd
    • 文件与目录操作(下):cat、touch、mkdir、rm、cp、mv
    • 获取帮助与基础工具:man、help、clear、exit、sudo
  • 文件权限

    • 文件权限管理:chmod、chown
  • 系统与监控

    • 进程管理与系统监控:ps、top、kill、df、du、free
    • 用户与环境:whoami、id、env、echo、history
  • 网络命令

    • 网络诊断(上):ping、curl、wget
    • 网络诊断(下):netstat、ss、ip
    • 网络抓包与高级工具:traceroute、tcpdump、nc
    • DNS 与防火墙:nslookup、dig、iptables
  • 文本处理

    • 文本搜索:grep
    • 文本处理(上):awk
    • 文本处理(下):sed
    • 文本排序与统计:sort、uniq、wc
    • 文件查看与查找:head、tail、cut、find
    • 归档压缩与管道组合:tar、gzip、xargs
  • 开发工具

    • 开发工具链(上):gcc、make
    • 开发工具链(下):gdb、time
    • 版本控制:git
    • 远程操作:ssh、scp
    • 编辑器:vim、nano
  • Shell 编程

    • Shell 编程基础(上):变量、管道、重定向
    • Shell 编程基础(下):条件、循环、函数
  • 综合实战

    • 综合实战:日志分析

编辑器:vim、nano

为什么必须学终端编辑器

作为计算机专业学生,你必须掌握至少一种终端编辑器,因为:

  1. 远程服务器没有 GUI:SSH 连接到服务器后,只有终端可用
  2. 快速修改配置:vim /etc/nginx/nginx.conf 比打开图形编辑器快 10 倍
  3. 系统救援模式:系统崩溃进入单用户模式时,只有 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 分钟交互式教程

动手实践

  1. nano 练习:

    nano practice.txt
    # 输入几行文字
    # Ctrl+O 保存
    # Ctrl+X 退出
    
  2. vim 基础练习:

    vim practice.txt
    # 按 i 进入插入模式
    # 输入文字
    # 按 Esc 回到普通模式
    # 按 :wq 保存退出
    
  3. vim 移动练习:

    vim /etc/passwd
    # gg 到文件开头
    # G 到文件末尾
    # 10G 到第 10 行
    # w 跳到下一个单词
    # b 跳到上一个单词
    # 0 到行首
    # $ 到行尾
    # :q! 不保存退出
    
  4. vim 编辑练习:

    vim practice.txt
    # dd 删除一行
    # yy 复制一行
    # p 粘贴
    # u 撤销
    # /pattern 搜索
    # :%s/old/new/g 替换
    # :wq 保存退出
    
  5. 运行 vimtutor:

    vimtutor
    # 完成全部课程
    
  6. 配置 vim:

    cat > ~/.vimrc
    set number
    syntax on
    set tabstop=4
    set shiftwidth=4
    set expandtab
    # Ctrl+D
    
  7. 思考:为什么 vim 要区分普通模式和插入模式?如果像 nano 一样直接输入文字,会有什么效率问题?vim 的"模式切换"设计在什么场景下能大幅提升编辑速度?

上一页
远程操作:ssh、scp