1275 字
6 分钟
编辑器VI及VIM

本操作指导针对vi/vim编辑器的日常操作进行梳理#

该编辑器共有两种模式:查看模式编辑模式#

基础方法

  • 文件日常操作
Terminal window
:w # 保存文件
:q # 退出查看模式
:q! # 强制退出查看模式
:wq! # 强制保存并退出查看模式
  • 日常多文档操作
Terminal window
vim . # 进入当前文件夹选择好目标文件Enter进入编辑模式
:tabe . # 开启多文档模式进入当前目录选择目标文件
gt # 切换文档分页至上一篇文档(左)
gT # 切换文档分页至下一篇文档(右)
  • 垂直移动
Terminal window
0 # 跳转到行首
gg # 跳转至当前文档最顶部
G # 跳转至当前文档最底部
h # 向左移动光标
j # 向下移动光标
k # 向上移动光标
l # 向右移动光标
) # 移动到下一段句尾
} # 移动到下一段段尾
( # 移动到上一句句首
{ # 移动到上一段段首
Ctrl + u # 向上滚动半屏(类似pageup)
Ctrl + d # 向下滚动半屏(类似pagedown)
Ctrl + i # 跳转到下一次修改(含文件跳转)
Ctrl + o # 跳转到上一次修改(含文件跳转)
Ctrl + e # 向下滚动背景板(不含光标)
Ctrl + y # 向上滚动背景板(不含光标)
  • 平行移动
Terminal window
^ # 跳转到整行行头
$ # 跳转到整行行尾
e # 将光标移动到下一段句尾
w # 将光标移动到下一段句首
b # 将光标移动到上一段句首
fa # 将光标移动到下一个为a的字符处
ta # 将光标移动到下一个为a的字符前一格
Fa # 将光标移动到上一个为a的字符处
Ta # 将光标移动到上一个为a的字符后一格

编辑方法

  • 精准插入
Terminal window
# 首先按ESC键确保当前状态为查看模式
a # 在当前光标的后方进入编辑模式
i # 在当前光标的位置进入编辑模式
o # 在当前光标的下方进入编辑模式
s # 取代当前光标字符并进入编辑模式
  • 创作式插入
Terminal window
O # 在当前光标的上一行进入编辑模式
A # 在当前光标的行尾进入编辑模式
I # 在当前光标的行首进入编辑模式
S # 取代当前光标所在的整行字符并进入编辑模式
  • 剪切复制与粘贴
Terminal window
# 确认已经使用Esc切换到查看模式
dd # 定义为删除或剪切
yy # 定义为复制
P # 定义为粘贴当前行,光标下移
p # 定义为粘贴当前行,光标上移
  • 首航缩进
Terminal window
>> # 相当于TAB键缩进
<< # 相当于反响缩进

替换方法(仅针对临时改写)

  • 精准插入高级用法
Terminal window
c^ # 替换光标处到开头的字符(不含光标处)
c$ # 替换光标处到结尾的字符
cw # 替换光标处一个单词
cf" # 光标位于引号内,并替换到下一个引号内的字符
  • 进入替换模式
Terminal window
R # 在当前字符下进入替换模式
# 按ESC键可以退出替换模式
  • 前进与返回
Terminal window
# 按ESC键确保自身当前所处的模式
. # 定义为前进,会复制粘贴一遍最新编辑模式下编辑的内容
u # 定义为返回
Ctrl + r # 定义为恢复返回的内容
U # 定义为恢复单行进入编辑模式前的状态
  • 数字的递增与递减
Terminal window
Ctrl + a # 在光标处于数字上进行递增
Ctrl + x # 在光标处于数字上进行递减

进阶方法

  • 查找字段
Terminal window
:/type # 搜索名称为type的字段
n # 跳转到下一个type字段的行
N # 跳转到上一个type字段的行
:nohl # 清空查找字段
  • 选取字段
Terminal window
viw # 内部递增选取
vaw # 字符递增选取
va{ # 选取段落
ggVG # 快速全选
V3j # 向下快速选取3行
# "message" 选取示例
vi" # 选取message
va" # 选取"message"
# (message) 选取示例
vi( # 选取message
va( # 选取(message)
# <title>message</title>
vit # 选取message
vat # 选取<title>message</title>
# 以上命令可以配合c替换y复制d剪切p粘贴使用
ESCx2 # 取消选取
  • 巨集录制与执行
Terminal window
qq0ESCA.comESC0jq # 批量在每行结尾加上.com字符
qq0ESCIwww.ESC0jq # 录制在每行的开头加上www.字符
@q # 执行一次录制巨集
8@@ # 执行8次已执行的录制巨集
  • 批量替换
Terminal window
:/con # 搜索con字段
N # 回到当前搜索位置
cgn # 替换当前位置字段内容
configESC # 将搜索内容替换为config
. # 执行批量替换
u # 回退批量替换

以上便是本章节全部内容#

感谢阅读#

编辑器VI及VIM
https://cyber-mobile.net/posts/编辑器vi及vim/
作者
dot1q
发布于
2025-02-04
许可协议
CC BY-NC-SA 4.0