文本编辑 #

nano - 简单易用的编辑器 #

基本用法 #

bash
# 打开文件
$ nano file.txt

# 打开文件并定位到指定行
$ nano +10 file.txt

# 打开文件并定位到指定行和列
$ nano +10,5 file.txt

# 以只读模式打开
$ nano -v file.txt

# 启用鼠标支持
$ nano -m file.txt

界面说明 #

text
┌─────────────────────────────────────────────────────────────┐
│  GNU nano 5.4               file.txt                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  这是文件内容区域                                            │
│  你可以在这里编辑文本                                        │
│                                                             │
│                                                             │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│^G Help    ^O WriteOut ^W WhereIs  ^K Cut     ^T Execute    │
│^X Exit    ^R ReadFile^\ Justify  ^U Paste   ^J WhereIs    │
└─────────────────────────────────────────────────────────────┘
  ^ 表示 Ctrl 键
  M- 表示 Alt 键

常用快捷键 #

text
┌─────────────────────────────────────────────────────────────┐
│                    nano 快捷键                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   文件操作                                                   │
│   Ctrl + G       显示帮助                                   │
│   Ctrl + O       保存文件                                   │
│   Ctrl + X       退出编辑器                                 │
│   Ctrl + R       读取文件                                   │
│                                                             │
│   编辑操作                                                   │
│   Ctrl + K       剪切当前行                                 │
│   Ctrl + U       粘贴                                       │
│   Ctrl + J       对齐段落                                   │
│   Ctrl + T       拼写检查                                   │
│   Ctrl + _       跳转到指定行                               │
│                                                             │
│   搜索替换                                                   │
│   Ctrl + W       搜索                                       │
│   Ctrl + \       搜索并替换                                 │
│                                                             │
│   其他                                                       │
│   Ctrl + C       显示光标位置                               │
│   Alt + U        撤销                                       │
│   Alt + E        重做                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

搜索和替换 #

bash
# 搜索
Ctrl + W
输入搜索内容
按 Enter 确认
按 Alt + W 查找下一个

# 搜索并替换
Ctrl + \
输入搜索内容
输入替换内容
按 A 替换所有,按 Y 替换当前

配置文件 #

bash
# ~/.nanorc 配置文件
$ cat ~/.nanorc
set autoindent        # 自动缩进
set constantshow      # 显示光标位置
set linenumbers       # 显示行号
set mouse             # 启用鼠标
set softwrap          # 软换行
set tabsize 4         # Tab 宽度
set tabstospaces      # Tab 转空格

# 语法高亮
include /usr/share/nano/*.nanorc

vim - 强大的文本编辑器 #

模式介绍 #

text
┌─────────────────────────────────────────────────────────────┐
│                    vim 模式                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   普通模式 (Normal Mode)                                     │
│   ├── 默认模式                                               │
│   ├── 用于导航和操作                                         │
│   └── 按 Esc 进入                                           │
│                                                             │
│   插入模式 (Insert Mode)                                     │
│   ├── 用于输入文本                                           │
│   ├── 按 i/a/o 等进入                                        │
│   └── 按 Esc 退出                                           │
│                                                             │
│   可视模式 (Visual Mode)                                     │
│   ├── 用于选择文本                                           │
│   ├── 按 v/V/Ctrl+v 进入                                     │
│   └── 按 Esc 退出                                           │
│                                                             │
│   命令模式 (Command Mode)                                    │
│   ├── 用于执行命令                                           │
│   └── 按 : 进入                                             │
│                                                             │
└─────────────────────────────────────────────────────────────┘

启动和退出 #

bash
# 打开文件
$ vim file.txt

# 打开多个文件
$ vim file1.txt file2.txt

# 打开文件并定位到指定行
$ vim +10 file.txt

# 打开文件并定位到第一个匹配
$ vim +/pattern file.txt

# 以只读模式打开
$ vim -R file.txt
$ view file.txt

退出方式 #

text
# 在普通模式下
:q        退出(未修改时)
:q!       强制退出(放弃修改)
:w        保存
:wq       保存并退出
:x        保存并退出(仅修改时保存)
ZZ        保存并退出
ZQ        强制退出

插入模式 #

text
┌─────────────────────────────────────────────────────────────┐
│                    进入插入模式                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   i       在光标前插入                                       │
│   I       在行首插入                                         │
│   a       在光标后插入                                       │
│   A       在行尾插入                                         │
│   o       在下方新建一行插入                                 │
│   O       在上方新建一行插入                                 │
│   s       删除光标字符后插入                                 │
│   S       删除整行后插入                                     │
│   c       修改(配合动作)                                   │
│   C       修改到行尾                                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

光标移动 #

text
┌─────────────────────────────────────────────────────────────┐
│                    基本移动                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   h       左移一个字符                                       │
│   j       下移一行                                           │
│   k       上移一行                                           │
│   l       右移一个字符                                       │
│                                                             │
│   w       移动到下一个单词开头                               │
│   W       移动到下一个空格分隔的单词                         │
│   b       移动到上一个单词开头                               │
│   B       移动到上一个空格分隔的单词                         │
│   e       移动到当前单词末尾                                 │
│   E       移动到空格分隔的单词末尾                           │
│                                                             │
│   0       移动到行首                                         │
│   ^       移动到行首第一个非空字符                           │
│   $       移动到行尾                                         │
│                                                             │
│   gg      移动到文件开头                                     │
│   G       移动到文件末尾                                     │
│   10G     移动到第 10 行                                     │
│   :10     移动到第 10 行                                     │
│                                                             │
│   %       跳转到匹配的括号                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

屏幕移动 #

text
┌─────────────────────────────────────────────────────────────┐
│                    屏幕移动                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Ctrl + f       向下翻一页                                  │
│   Ctrl + b       向上翻一页                                  │
│   Ctrl + d       向下翻半页                                  │
│   Ctrl + u       向上翻半页                                  │
│                                                             │
│   H               移动到屏幕顶部                             │
│   M               移动到屏幕中间                             │
│   L               移动到屏幕底部                             │
│                                                             │
│   zz              当前行居中                                 │
│   zt              当前行置顶                                 │
│   zb              当前行置底                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

删除操作 #

text
┌─────────────────────────────────────────────────────────────┐
│                    删除操作                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   x       删除光标字符                                       │
│   X       删除光标前一个字符                                 │
│   dd      删除整行                                           │
│   D       删除到行尾                                         │
│   d$      删除到行尾                                         │
│   d0      删除到行首                                         │
│   dw      删除一个单词                                       │
│   dW      删除到空格                                         │
│   db      删除到单词开头                                     │
│   dG      删除到文件末尾                                     │
│   dgg     删除到文件开头                                     │
│   d}      删除到段落末尾                                     │
│   3dd     删除 3 行                                          │
│                                                             │
└─────────────────────────────────────────────────────────────┘

复制和粘贴 #

text
┌─────────────────────────────────────────────────────────────┐
│                    复制粘贴                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   yy      复制整行                                           │
│   Y       复制整行                                           │
│   yw      复制一个单词                                       │
│   y$      复制到行尾                                         │
│   y0      复制到行首                                         │
│   yG      复制到文件末尾                                     │
│   3yy     复制 3 行                                          │
│                                                             │
│   p       在光标后粘贴                                       │
│   P       在光标前粘贴                                       │
│                                                             │
│   dd + p  剪切粘贴                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

撤销和重做 #

text
┌─────────────────────────────────────────────────────────────┐
│                    撤销重做                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   u       撤销                                               │
│   U       撤销当前行所有修改                                 │
│   Ctrl + r       重做                                        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

搜索 #

text
┌─────────────────────────────────────────────────────────────┐
│                    搜索                                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   /pattern       向下搜索                                    │
│   ?pattern       向上搜索                                    │
│   n              下一个匹配                                  │
│   N              上一个匹配                                  │
│   *              搜索光标下的单词(向下)                    │
│   #              搜索光标下的单词(向上)                    │
│                                                             │
│   :noh           取消高亮                                    │
│   :set hlsearch  启用搜索高亮                                │
│   :set nohlsearch 禁用搜索高亮                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

替换 #

text
┌─────────────────────────────────────────────────────────────┐
│                    替换                                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   :s/old/new/        替换当前行第一个                        │
│   :s/old/new/g       替换当前行所有                          │
│   :%s/old/new/g      替换全文所有                            │
│   :%s/old/new/gc     替换全文(逐个确认)                    │
│   :10,20s/old/new/g  替换第 10-20 行                        │
│   :.,$s/old/new/g    替换当前行到末尾                        │
│                                                             │
│   标志:                                                     │
│   g       全局替换(一行中所有匹配)                         │
│   c       确认每个替换                                       │
│   i       忽略大小写                                         │
│   I       区分大小写                                         │
│   n       只显示匹配数量                                     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

可视模式 #

text
┌─────────────────────────────────────────────────────────────┐
│                    可视模式                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   v              字符选择                                    │
│   V              行选择                                      │
│   Ctrl + v       块选择                                      │
│                                                             │
│   选择后操作:                                               │
│   d              删除选中                                    │
│   y              复制选中                                    │
│   c              修改选中                                    │
│   >              增加缩进                                    │
│   <              减少缩进                                    │
│   u              转小写                                      │
│   U              转大写                                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

多文件编辑 #

text
┌─────────────────────────────────────────────────────────────┐
│                    多文件编辑                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   :e file.txt    打开文件                                    │
│   :bn            下一个缓冲区                                │
│   :bp            上一个缓冲区                                │
│   :bd            关闭缓冲区                                  │
│   :ls            列出缓冲区                                  │
│   :b1            切换到缓冲区 1                              │
│                                                             │
│   分屏:                                                     │
│   :sp file.txt   水平分屏                                    │
│   :vsp file.txt  垂直分屏                                    │
│   Ctrl + w h/j/k/l  切换分屏                                 │
│   Ctrl + w w       循环切换                                  │
│   Ctrl + w q       关闭当前分屏                              │
│   Ctrl + w o       只保留当前分屏                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

配置文件 #

bash
# ~/.vimrc 配置文件
$ cat ~/.vimrc
" 基本设置
set nocompatible        " 不兼容 vi
set number              " 显示行号
set relativenumber      " 相对行号
set cursorline          " 高亮当前行
set showcmd             " 显示命令
set wildmenu            " 命令补全菜单
set showmatch           " 显示匹配括号

" 缩进设置
set tabstop=4           " Tab 宽度
set shiftwidth=4        " 缩进宽度
set expandtab           " Tab 转空格
set autoindent          " 自动缩进
set smartindent         " 智能缩进

" 搜索设置
set incsearch           " 增量搜索
set hlsearch            " 高亮搜索
set ignorecase          " 忽略大小写
set smartcase           " 智能大小写

" 外观设置
syntax on               " 语法高亮
set background=dark     " 深色背景
set t_Co=256            " 256 色

" 其他设置
set mouse=a             " 启用鼠标
set clipboard=unnamed   " 系统剪贴板
set encoding=utf-8      " UTF-8 编码
set fileencoding=utf-8

实用技巧 #

bash
# 加密文件
: X
输入密码

# 执行外部命令
:! ls -la

# 插入外部命令输出
:r !date

# 排序
:sort

# 去重
:sort u

# 执行宏
qa      开始录制宏 a
...     执行操作
q       停止录制
@a      执行宏 a
10@a    执行 10 次

# 重复上次操作
.

# 自动补全
Ctrl + n    向下补全
Ctrl + p    向上补全

小结 #

通过本节学习,你应该掌握:

  1. nano:简单易用的编辑器
  2. vim 模式:普通、插入、可视、命令模式
  3. vim 移动:光标移动、屏幕移动
  4. vim 编辑:删除、复制、粘贴、撤销
  5. vim 搜索:搜索和替换
  6. vim 高级:多文件、分屏、配置

下一步,我们将学习文本处理命令。

最后更新:2026-04-11