跳转到内容

VI/VIM编辑器详解

课程介绍

VIM是Linux下最常用的文本编辑器,纯命令行操作,效率很高。我们来学习VIM的三种工作模式切换、常用快捷键,以及保存退出等基本操作。你还会学到一些实用的技巧,比如分屏编辑、批量替换。熟练掌握VIM,以后编辑配置文件和写脚本就方便了。

1. VI/VIM简介

概念说明

  • VI:Linux系统中最经典的文本编辑器,命令行环境下的必备工具
  • VIM:VI的增强版本,兼容VI的所有指令,增加了语法高亮、自动缩进等高级功能

主要特点

  • 纯命令行操作,无需图形界面
  • 高效的编辑模式切换
  • 强大的快捷键系统
  • 支持语法高亮和代码补全(VIM)
  • 跨平台支持

2. VI/VIM的三种工作模式

VI/VIM编辑器有三种核心工作模式,它们之间可以通过特定的命令进行切换。

1. 命令模式(Command Mode)

  • 进入方式:打开VI/VIM时默认进入
  • 主要功能:控制光标移动、删除文本、复制粘贴、切换模式
  • 操作特点:按下键盘按键会被解析为命令,而非输入内容

2. 输入模式(Insert Mode)

  • 进入方式:在命令模式下按iao等键
  • 主要功能:输入和编辑文本内容
  • 操作特点:按下键盘按键会直接插入到文档中

3. 底线命令模式(Last Line Mode)

  • 进入方式:在命令模式下按:
  • 主要功能:保存文件、退出编辑器、查找替换等全局操作
  • 操作特点:命令输入在屏幕底部的冒号后

模式切换示意图

┌─────────────┐     i, a, o等    ┌─────────────┐
│ 命令模式    │ ───────────────> │ 输入模式    │
└─────────────┘                  └─────────────┘
       ▲                                │
       │            ESC键               │ ESC键
       │                  ┌─────────────┘
       │                  │
       └──────────────────┼───────────────────────┐
                          │                       │
                          ▼                       ▼
                    ┌─────────────┐     :        ┌─────────────┐
                    │ 底线命令模式 │ <──────────── │ 命令模式    │
                    └─────────────┘              └─────────────┘

3. 基础操作演示

打开文件

bash
# 打开已存在的文件
$ vim test.txt

# 创建并打开新文件
$ vim newfile.txt

编辑文件内容

# 1. 进入命令模式(默认)
$ vim test.txt

# 2. 按i键进入输入模式
# 输入内容:yege and gaokun

# 3. 按ESC键返回命令模式

# 4. 按:键进入底线命令模式
# 输入wq保存并退出

保存与退出

# 保存文件但不退出
:w

# 退出编辑器
:q

# 保存并退出
:wq

# 强制退出(不保存)
:q!

4. 命令模式常用快捷键

1. 光标移动

快捷键功能描述
↑↓←→方向键移动光标
h向左移动
j向下移动
k向上移动
l向右移动
0移动到行首
$移动到行尾
gg移动到文件首行
G移动到文件尾行
nG移动到第n行
Page Up/Ctrl+b向上翻页
Page Down/Ctrl+f向下翻页

2. 进入输入模式

快捷键功能描述
i在光标当前位置插入
a在光标当前位置之后插入
I在当前行首插入
A在当前行尾插入
o在当前行下方新建一行插入
O在当前行上方新建一行插入

3. 文本删除

快捷键功能描述
x删除光标所在位置的字符
nx删除光标后n个字符
dd删除光标所在行
ndd删除从当前行开始的n行
d0删除从光标到行首的内容
d$删除从光标到行尾的内容
dG删除从当前行到文件末尾的内容
dgg删除从当前行到文件开头的内容

4. 复制与粘贴

快捷键功能描述
yy复制光标所在行
nyy复制从当前行开始的n行
p粘贴到光标下方
P粘贴到光标上方

5. 撤销与重做

快捷键功能描述
u撤销上一步操作
Ctrl+r重做上一步操作

6. 搜索功能

快捷键功能描述
/keyword向下搜索keyword
?keyword向上搜索keyword
n继续搜索下一个匹配项
N继续搜索上一个匹配项

5. 底线命令模式常用命令

1. 文件操作

命令功能描述
:w保存文件
:q退出编辑器
:wq保存并退出
:q!强制退出不保存
:x保存并退出(同:wq)
:e file打开指定文件
:saveas file另存为指定文件

2. 查找与替换

命令功能描述
:s/old/new替换当前行第一个old为new
:s/old/new/g替换当前行所有old为new
:%s/old/new替换文件中第一个old为new
:%s/old/new/g替换文件中所有old为new
:n1,n2s/old/new/g替换n1到n2行所有old为new

3. 设置选项

命令功能描述
:set nu显示行号
:set nonu隐藏行号
:set autoindent自动缩进
:set paste设置粘贴模式,避免格式错乱
:set hlsearch高亮显示搜索结果

6. 实用操作技巧

1. 多文件编辑

bash
# 同时打开多个文件
$ vim file1.txt file2.txt
# 在文件间切换
:n  # 切换到下一个文件
:N  # 切换到上一个文件

2. 分屏编辑

# 水平分屏
:split file2.txt
# 或使用快捷键
Ctrl+w s

# 垂直分屏
:vsplit file2.txt
# 或使用快捷键
Ctrl+w v

# 分屏间切换
Ctrl+w h/j/k/l  # 方向键移动
Ctrl+w w        # 循环切换

3. 批量处理

# 批量注释(在第1-10行前添加#)
:1,10s/^/#/

# 批量取消注释(删除第1-10行前的#)
:1,10s/^#//

7. 操作流程示例

创建并编辑文件

bash
# 1. 创建并打开新文件
$ vim hello.txt
# 2. 按i进入输入模式
# 输入内容:hello Linux
# 按ESC返回命令模式

# 3. 按:进入底线命令模式
# 输入wq保存并退出

修改现有文件

bash
# 1. 打开现有文件
$ vim test.txt
# 2. 移动光标到要修改的位置
# 按i进入输入模式修改内容
# 按ESC返回命令模式

# 3. 按:进入底线命令模式
# 输入w保存修改
# 输入q退出

8. 命令速查

功能类别常用命令/快捷键
模式切换i(进入输入模式)
ESC(返回命令模式)
:(进入底线模式)
文件操作:w(保存)
:q(退出)
:wq(保存退出)
:q!(强制退出)
光标移动h/j/k/l(方向)
0/$(行首/尾)
gg/G(文件首尾)
文本编辑i/a/o(插入)
dd(删除行)
yy(复制行)
p(粘贴)
查找替换/keyword(搜索)
:s/old/new/g(替换)
设置选项:set nu(显示行号)
:set paste(粘贴模式)

课程总结

这节课我们学了VIM编辑器。

三种模式:

  • 命令模式 - 移动光标、复制粘贴
  • 输入模式 - 编辑文本(按i/a/o进入)
  • 底线命令模式 - 保存退出(按:进入)

常用操作: 模式切换: i/a/o进入输入,ESC返回命令,:进入底线模式 文件操作: :w保存,:q退出,:wq保存退出 编辑操作: dd删除行,yy复制,p粘贴 查找替换: /关键词查找,:s/旧/新/g全部替换

记住先ESC退出输入模式,再执行命令操作。


课后练习

练习1(基础)

请执行以下操作:

  • 使用VIM创建一个名为practice.txt的文件,输入以下内容:
    bash
    Hello Linux
    Welcome to VIM world
    This is a practice file
  • 练习光标移动命令:
    • 使用h/j/k/l移动光标
    • 跳转到行首和行尾
    • 跳转到文件开头和结尾
  • 掌握基本的模式切换:
    • 从命令模式进入输入模式
    • 从输入模式返回命令模式
    • 进入和退出底线命令模式

💡 提示:使用i进入输入模式,按ESC返回命令模式。

练习2(进阶)

请尝试:

  • 练习编辑操作:
    • 在第一行前插入一行:"VIM Practice"
    • 在最后一行后添加一行:"End of file"
    • 删除第三行
    • 复制第二行并粘贴到文件末尾
  • 练习查找和替换:
    • 搜索单词"VIM"
    • 将所有"VIM"替换为"VI Editor"
  • 练习文件操作:
    • 保存文件但不退出
    • 退出编辑器
    • 保存并退出

💡 提示:使用O在当前行上方插入新行,使用yy复制行,使用p粘贴。

练习3(拓展)

请尝试:

  • 尝试使用分屏编辑功能,同时打开两个文件
  • 学习并使用批量注释和取消注释命令
  • 配置VIM的基本选项,如显示行号、自动缩进等
  • 尝试使用VIM编辑一个简单的Shell脚本,体验语法高亮功能

💡 提示:使用:split水平分屏,使用:vsplit垂直分屏,使用:set nu显示行号。


评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径