在Linux系统中,vim(Vi IMproved)是一款功能强大的文本编辑器,广泛应用于代码编写、配置文件编辑等场景,掌握vim的内容修改方法,是提升Linux操作效率的关键,本文将从vim的模式切换、基础编辑命令、高级操作技巧等方面,详细介绍如何在vim中修改内容。
vim的核心模式:修改内容的前提
vim的编辑操作基于不同模式展开,理解模式是高效修改内容的基础,vim主要分为三种模式:普通模式(默认模式,用于导航和执行命令)、插入模式(用于输入文本)和命令行模式(用于执行保存、搜索等高级命令)。
- 进入vim:打开终端,输入
vim 文件名
(若文件不存在则创建),进入普通模式。 - 切换模式:
- 普通模式 → 插入模式:按
i
(光标前插入)、a
(光标后插入)、o
(下一行插入新行)、I
(行首插入)、A
(行尾插入)、O
(上一行插入新行)。 - 插入模式 → 普通模式:按
Esc
键(核心退出键,需牢记)。 - 普通模式 → 命令行模式:按(冒号),底部出现命令行提示。
- 普通模式 → 插入模式:按
普通模式:基础编辑命令
普通模式是vim的“指挥中心”,通过组合键实现快速修改,以下是常用命令及功能说明(表格整理更清晰):
命令 | 功能说明 | 示例(在普通模式下操作) |
---|---|---|
h /j /k /l |
光标左移/下移/上移/右移 | 连续按j 向下移动多行 |
w /e /b |
光标跳转到下一个单词首/单词尾/上一个单词首 | 按2w 跳转到第二个单词首 |
0 / |
光标跳转到行首/行尾 | 按快速移动到行末 |
x |
删除光标所在字符 | 按x 删除当前字符 |
dd |
删除整行 | 按dd 删除当前行,按3dd 删除3行 |
dw |
删除从光标开始的单词 | 按dw 删除当前单词 |
d$ |
删除从光标到行尾的内容 | 按d$ 快速清理行末内容 |
yy |
复制整行 | 按yy 复制当前行,按2yy 复制2行 |
yw |
复制从光标开始的单词 | 按yw 复制当前单词 |
p /P |
粘贴到光标后/光标前 | 按p 粘贴到光标下方 |
r |
替换光标所在字符 | 按r +新字符,直接替换当前字符 |
R |
进入替换模式(连续替换字符) | 按R 后输入字符,会覆盖原内容 |
u |
撤销上一步操作 | 按u 撤销,按Ctrl+r 重做 |
>> /<< |
将当前行右缩进/左缩进(需设置缩进空格) | 按>> 增加缩进,适合代码对齐 |
插入模式:输入与修改文本
进入插入模式后,可直接输入文本,实现对内容的“增”和“改”,根据需求选择不同的进入方式:
i
:在光标前插入,适合修改光标前的字符(如“helllo”→按i
删除一个l
输入“l”)。a
:在光标后插入,适合补充光标后的内容(如“hell”→按a
输入“o”)。I
:跳转到行首插入,适合在行首添加内容(如“ test”→按I
删除空格输入“#”)。A
:跳转到行尾插入,适合在行尾补充内容(如“print(”→按A
输入“)”)。o
/O
:在下一行/上一行插入新行,适合添加新内容(如代码块末尾按o
新增一行)。
注意:插入模式下修改完成后,务必按Esc
返回普通模式,否则无法执行其他命令(如保存、搜索)。
命令行模式:保存、搜索与批量修改
在普通模式下按进入命令行模式,可实现保存、退出、搜索替换等操作,是高效修改的关键。
保存与退出
w
:保存当前文件(若未修改,提示“No write since last change”)。q
:退出vim(若未保存修改,会提示错误)。wq
或x
:保存并退出(x
仅在修改时才写入,效率更高)。q!
:强制退出不保存(适用于修改后不想保留的情况)。
搜索与替换
- 搜索:输入(如
/error
),按Enter
后跳转到第一个匹配项,按n
跳转到下一个,N
跳转到上一个。 - 替换:
- 单行替换:
s/旧内容/新内容/g
(如s/hello/world/g
,将当前行所有“hello”替换为“world”)。 - 全局替换:
%s/旧内容/新内容/g
(如%s/192.168.1.1/10.0.0.1/g
,替换文件中所有IP地址)。 - 带确认替换:
%s/旧内容/新内容/gc
(每次替换前提示,按y
确认,n
跳过,a
全部确认)。
- 单行替换:
文件操作
e 文件名
:打开新文件(当前修改未保存时会提示,可通过ls
查看已打开文件列表)。w 新文件名
:将当前内容另存为新文件(如w backup.txt
)。
高级编辑技巧:提升修改效率
多窗口编辑
- 水平分屏:
split 文件名
(或sp
),上下两个窗口编辑不同文件。 - 垂直分屏:
vsplit 文件名
(或vs
),左右两个窗口。 - 切换窗口:
Ctrl+w
+j
/k
/l
/h
(向下/上/右/左切换窗口)。 - 关闭窗口:
q
(关闭当前窗口,若最后一个窗口则退出vim)。
可视模式与批量操作
- 按
v
进入字符可视模式(选中连续字符),按Shift+v
(V
)进入行可视模式(选中整行),按Ctrl+v
进入块可视模式(选中矩形区域)。 - 批量注释:在块可视模式下选中多行,按
I
输入注释符(如),按Esc
后自动注释所有选中行。 - 批量删除:选中内容后按
d
删除,或按c
删除后进入插入模式修改。
缩进与格式化
- 自动缩进:普通模式下按
>>
(右缩进)或<<
(左缩进),需提前设置set tabstop=4
(制表符宽度为4空格)。 - 格式化段落:选中段落(
V
进入行可视模式),按自动对齐代码(需支持语言插件)。
常见问题解决
-
问题1:按
Esc
无法退出插入模式?
解决:尝试按Ctrl+[
(等同于Esc
),或连续按Esc
2-3次(避免部分终端映射冲突)。 -
问题2:修改后保存提示“E45: ‘readonly’ option is set”(只读文件)?
解决:文件可能无写入权限,强制保存需加,即w!
;或使用sudo vim 文件名
以管理员权限打开。
相关问答FAQs
问题1:vim中如何快速删除从光标开始到行尾的内容?
解答:在普通模式下,将光标移动到目标位置,按d$
(d
为删除命令,表示行尾),光标在“hello world”的“hello”和“world”之间,按d$
会删除“world”。
问题2:vim中如何撤销最近的多次操作?
解答:在普通模式下,按u
撤销一次操作,连续按u
可撤销多步(默认可撤销1000步,可通过set undolevels=数字
调整),若需恢复撤销的操作,按Ctrl+r
重做,同样支持连续操作。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22620.html