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      # 自动缩进到文件结尾
相关推荐
weixin_430750931 天前
OpenMediaVault debian Linux安装配置企业私有网盘(三) 静态ip地址配置
linux·服务器·debian·nas·网络存储系统
403240731 天前
[Jetson/Ubuntu 22.04] 解决挂载 exFAT 硬盘报错 “unknown filesystem type“ 及只读权限问题的终极指南
linux·运维·ubuntu
Source.Liu1 天前
【沟通协作软件】使用 Rufus 制作 Ubuntu 启动盘的详细过程
linux·ubuntu
Love丶伊卡洛斯1 天前
Ubuntu 部署 STUN服务端
linux·运维·ubuntu
梁洪飞1 天前
通过链接文件和Start.S学习armv7
linux·arm开发·嵌入式硬件·学习·arm
DN金猿1 天前
使用ubuntu安装nginx时报错
linux·nginx·ubuntu
小赵还有头发1 天前
安装Ceres与glog
linux·学习·无人机·ceres·glog
负二代0.01 天前
Linux下的网络管理
linux·网络
s_daqing1 天前
ubuntu(arm)安装redis
linux·redis·ubuntu
林鸿群1 天前
ubuntu 26.04 安装mysql-server
linux·mysql·ubuntu