Vim常用命令详解:从入门到高效编辑

Vim模式基础

Vim主要有三种工作模式,理解这三种模式是使用Vim的基础:

1. 命令模式(Normal Mode)

  • 启动Vim后的默认模式
  • 用于移动光标、删除文本、复制粘贴等操作
  • 按Esc键可从其他模式返回命令模式

2. 插入模式(Insert Mode)

  • 用于输入文本内容
  • 从命令模式按i进入插入模式
  • 按Esc返回命令模式

3. 底线命令模式(Command-line Mode)

  • 用于执行保存、退出等命令
  • 从命令模式按:进入
  • 执行完毕后自动返回命令模式

光标移动命令

基本移动

vim 复制代码
h       # 向左移动一个字符
j       # 向下移动一行
k       # 向上移动一行
l       # 向右移动一个字符

行内快速移动

vim 复制代码
0       # 移动到行首
$       # 移动到行尾
^       # 移动到行首第一个非空白字符
w       # 移动到下一个单词开头
b       # 移动到上一个单词开头
e       # 移动到当前单词结尾

文件内快速移动

vim 复制代码
gg      # 移动到文件开头
G       # 移动到文件结尾
:n      # 移动到第n行(如:10)
%       # 移动到匹配的括号(()、[]、{})

屏幕滚动

vim 复制代码
Ctrl+f  # 向下滚动一屏
Ctrl+b  # 向上滚动一屏
Ctrl+d  # 向下滚动半屏
Ctrl+u  # 向上滚动半屏
H       # 移动到屏幕顶部
M       # 移动到屏幕中间
L       # 移动到屏幕底部

文本编辑命令

插入文本

vim 复制代码
i       # 在光标前插入文本
a       # 在光标后插入文本
o       # 在当前行下方插入新行
O       # 在当前行上方插入新行
I       # 在行首插入文本
A       # 在行尾插入文本

删除文本

vim 复制代码
x       # 删除光标处字符
X       # 删除光标前一个字符
dd      # 删除当前行
dw      # 删除当前单词
d0      # 删除到行首
d$      # 删除到行尾
D       # 删除到行尾(同d$)
:n1,n2d # 删除n1到n2行

复制粘贴

vim 复制代码
yy      # 复制当前行
yw      # 复制当前单词
y0      # 复制到行首
y$      # 复制到行尾
p       # 在光标后粘贴
P       # 在光标前粘贴

替换文本

vim 复制代码
r       # 替换光标处字符
R       # 进入替换模式,连续替换
cc      # 替换当前行
cw      # 替换当前单词
C       # 替换到行尾
s       # 替换光标处字符并进入插入模式
S       # 替换当前行并进入插入模式

搜索替换命令

搜索文本

vim 复制代码
/pattern    # 向下搜索pattern
?pattern    # 向上搜索pattern
n           # 重复上一次搜索
N           # 反向重复上一次搜索
*           # 搜索光标所在单词
#           # 反向搜索光标所在单词

替换文本

vim 复制代码
:s/old/new      # 替换当前行第一个old为new
:s/old/new/g    # 替换当前行所有old为new
:%s/old/new/g   # 替换文件中所有old为new
:n1,n2s/old/new/g # 替换n1到n2行的old为new
:%s/old/new/gc  # 替换时要求确认

文件操作命令

基本操作

vim 复制代码
:w          # 保存文件
:w filename # 保存为filename文件
:q          # 退出Vim
:q!         # 强制退出(不保存)
:wq         # 保存并退出
:x          # 保存并退出(同:wq)
ZZ          # 保存并退出(同:wq)

文件管理

vim 复制代码
:e filename     # 打开filename文件
:e!             # 重新加载当前文件
:bn             # 切换到下一个文件
:bp             # 切换到上一个文件
:ls             # 列出所有打开的文件

多窗口操作

窗口分割

vim 复制代码
:split          # 水平分割窗口
:vsplit         # 垂直分割窗口
:only           # 关闭其他窗口,保留当前窗口
:close          # 关闭当前窗口

窗口切换

vim 复制代码
Ctrl+w w        # 在窗口间循环切换
Ctrl+w h        # 切换到左边窗口
Ctrl+w j        # 切换到下边窗口
Ctrl+w k        # 切换到上边窗口
Ctrl+w l        # 切换到右边窗口

实用技巧

撤销与重做

vim 复制代码
u       # 撤销上一次操作
Ctrl+r  # 重做被撤销的操作
.       # 重复上一次操作

宏操作

vim 复制代码
qa      # 开始录制宏a
q       # 停止录制宏
@a      # 执行宏a
@@      # 重复执行上一次宏

缩进操作

vim 复制代码
>>      # 当前行向右缩进
<<      # 当前行向左缩进
:n1,n2>> # n1到n2行向右缩进
:n1,n2<< # n1到n2行向左缩进
=       # 自动缩进当前行
=G      # 自动缩进到文件结尾
相关推荐
小安运维日记9 分钟前
RHCA - DO374 | Day03:通过自动化控制器运行剧本
linux·运维·数据库·自动化·ansible·1024程序员节
冷天气会感冒29 分钟前
关闭VSCode的推荐插件(Recommended extensions)提示
ide·vscode·编辑器
乐十九2 小时前
IIC总线原理详解
linux
mi20062 小时前
银河麒麟v10 sp1更改data目录挂载
linux·运维
tan180°3 小时前
Linux网络HTTP(下)(9)
linux·网络·http
半路_出家ren3 小时前
设计一个学生管理系统的数据库
linux·数据库·sql·mysql·网络安全·数据库管理员
着迷不白3 小时前
华为堡垒机
linux·运维·服务器·centos
飘忽不定的bug3 小时前
Atlas 200I AI加速模块-修改和打包文件系统
linux·ascend310b
妮妮喔妮3 小时前
linux:查看某个文件下开启的进程占用的是哪个端口?
linux·运维·服务器
Y unes4 小时前
《i.MX6ULL LED 驱动实战:内核模块开发与 GPIO 控制》
linux·c语言·驱动开发·vscode·ubuntu·嵌入式