最强文本编辑器 Vim 常用命令集锦

Vim 是从 Vi 编辑器发展出来的一款极其强大的文本编辑器,它保留了 Vi 编辑器的所有功能,并添加了许多新特性。Vim 具有代码补全、语法高亮、错误跳转、批量化处理等编辑功能,还支持异常丰富的插件扩展,且整个编辑全程可通过键盘完成,无需使用鼠标,以致其成为众多程序员一款高效的编程开发利器。

关于 Vim 获取与安装可以参考最强文本编辑器 Vim 获取与安装。Vim 的核心魅力在于完全通过键盘操作实现高效的文本处理,难就难在复杂的操作命令和脱离鼠标的痛苦,其实只要掌握了技巧并不多难。建议初学者从基础命令、模式切换等核心操作入手,再逐渐拓展并逐步进阶高级功能。

本文主要介绍关于 Vim 的一些常用命令。

Vim 模式

  • 命令模式(Command Mode)
  • 输入模式(Insert Mode)
  • 视图模式(Visual Mode)
  • 末行模式(Last-Line Mode)

模式转换

命令 描述
i, I, a, A, o, O, s, S Command Mode ---> Insert Mode
Esc Insert Mode ---> Command Mode
v, V Command Mode ---> Visual Mode
Esc Visual Mode ---> Command Mode
:, /, ? Command Mode ---> Last-Line Mode

常用命令

注:带 :/? 的是在末行模式下使用的命令。

如有错误,烦请指正!

打开文件

命令 描述
vim filename 打开或新建文件,并将光标置于第一行的首部
vim -r filename 恢复上次 vim 打开时崩溃的文件
vim -R filename 以只读的方式打开文件,仍然可以使用 :wq! 写入
vim -M filename 打开文件并关闭文件修改权限,无法写入或修改
vim -x filename 以加密的方式打开文件
vim -b filename 以二进制模式打开文件
vim + filename 打开文件,并将光标置于最后一行的首部
vim +n filename 打开文件,并将光标置于第 n 行的首部
vim +/str filename 打幵文件,并将光标置于第一个 str 所在位置
vim -c cmd filename 打开文件进行编辑前,先执行指定的 cmd 命令
vim file1 file2 file3 ... 打开多个文件
vim -On file1 file2 ... 打开多个文件并左右分屏
vim -on file1 file2 ... 打开多个文件并上下分屏
vim -d file1 file2 打开 file1 和 file2 文件并比对两个文件的差异

查看文件

命令 描述
:ls 列出当前打开的所有文件
:bn 打开多个文件时,切换显示下一个文件
:bp 打开多个文件时,切换显示上一个文件
:sp filename 上下分割,并打开一个新的文件
:vsp filename 左右分割,并打开一个新的文件
:prev 切换至前一个文件
:next 切换至下一个文件
:first 切换至第一个文件
:last 切换至最后一个文件
Ctrl + w, s 按下 Ctrl + w,再按下 s,上下分屏打开当前文件
Ctrl + w, v 按下 Ctrl + w,再按下 v,左右分屏打开当前文件
Ctrl + w, h 文件左右分屏时,将光标定位到左边屏幕
Ctrl + w, l 文件左右分屏时,将光标定位到右边屏幕
Ctrl + w, H 文件左右分屏时,将当前分屏移动到左边
Ctrl + w, L 文件左右分屏时,将当前分屏移动到右边
Ctrl + w, j 文件上下分屏时,将光标定位到下边屏幕
Ctrl + w, k 文件上下分屏时,将光标定位到上边屏幕
Ctrl + w, J 文件上下分屏时,将当前分屏移动到下边
Ctrl + w, K 文件上下分屏时,将当前分屏移动到上边
Ctrl + w, c 文件分屏显示时,关闭当前分屏
Ctrl + w, o 文件分屏显示时,关闭除当前分屏之外的其他分屏
Ctrl + w, q 文件分屏显示时,关闭当前分屏,直到退出 VIM

操作文件

命令 描述
:q 不保存文件并退出
:q! 不保存文件并强制退出
:qa 不保存所有文件并全部退出
:qa! 不保存所有文件并强制全部退出
:w 写入并保存文件,修改文件时间戳
:wa 保存所有文件
:wq 保存文件并退出
:w! 强制保存文件
:wq! 强制保存文件并退出
:x 保存文件并退出,不会修改文件时间戳
:w filename 另存到 filename 文件
:saveas filename 另存到 filename 文件
:e filename 打开或新建一个文件
:e! 放弃所有更改,恢复文件到上次保存

功能命令

命令 描述
:set nu 显示行号
:set nonu 取消显示行号
:set ic 忽略字符大小写
:set noic 区分字符大小写
:syntax on 语法高亮
:syntax off 取消语法高亮
:changes 查看文件变化

光标插入

命令 描述
i 光标插在当前字符左侧
I 光标插在当前行的行首
a 光标插在当前字符右侧
A 光标插在当前行的行尾
o 新增下一行,并将光标插在行首
O 新增上一行,并将光标插在行首
s 删除光标所在字符,并将光标插在此处
S 删除光标所在整行,并将光标插在行首

光标移动

命令 描述
h 光标向左移动 1 个字符
j 光标向下移动 1 个行
k 光标向上移动 1 个行
l 光标向右移动 1 个字符
nj 光标向下移动 n 个行
nk 光标向上移动 n 个行
H 光标移动到屏幕最上方一行的第 1 个非空字符
M 光标移动到屏幕中央一行的第 1 个非空字符
L 光标移动到屏幕最下方一行的第 1 个非空字符
G 光标移动到这个文件的最后一行
nG 光标移动到这个文件的第 n 行
gg 光标移动到这个文件的第一行,相当于 1G
n + [Enter] 光标移动向下移动 n 行
n + [Space] 光标移动向右移动 n 个字符
+ 光标移动到非空字符的下一行
- 光标移动到非空字符的上一行
w 光标移动到下个单词首部
b 光标移动到上个单词首部
e 光标移动到下个单词尾部
ge 光标移动到上个单词尾部
0 光标移动到本行行首
$ 光标移动到本行行尾
$ 移动到行首非空字符位置
g_ 移动到行尾非空字符位置
fa 移动到本行光标处开始向后第一个为 a 的字符处
nfa 移动到本行光标处开始向后第 n 个为 a 的字符处
Fa 移动到本行光标处开始向前第一个为 a 的字符处
nFa 移动到本行光标处开始向前第 n 个为 a 的字符处
ta 移动到本行光标处开始向后第一个为 a 的字符的前一个字符处
nta 移动到本行光标处开始向后第 n 个为 a 的字符的前一个字符处
Ta 移动到本行光标处开始向前第一个为 a 的字符的后一个字符处
nTa 移动到本行光标处开始向前第 n 个为 a 的字符的后一个字符处

文件翻页

命令 描述
Ctrl + f 屏幕向下移动一页
Ctrl + b 屏幕向上移动一页
Ctrl + d 屏幕向下移动半页
Ctrl + u 屏幕向上移动半页
zt 移动屏幕将当前行移动到屏幕上方
zz 移动屏幕将当前行移动到屏幕中间
zb 移动屏幕将当前行移动到屏幕下方

大小写转换

命令 描述
~ 将光标下的字母改变大小写
n~ 将光标位置开始的 n 个字母改变其大小写
g~~ 改变当前行字母的大小写
guu 将当前行的字母全改成小写
gUU 将当前行的字母全改成大写
guw 将光标下的单词改成小写
gUw 将光标下的单词改成大写
ngUU 将从光标开始到下面 n 行字母改成大写

格式化代码

命令 描述
== 将光标所在行代码格式化缩进
n== 将光标所在行到向下 n 行格式化缩进
gg=G 将全文代码格式化缩进
:set ai 设定自动缩进
:set noai 取消自动缩进
:set expandtab 将 Tab 转换为 Space
:set tabstop=4 制表符宽度 tabstop=4 或 ts=4
:retab 按照设定值重新缩进

查找替换

命令 描述
:s/str/abc/ 将光标所在行的第一个 str 替换成 abc
:%s/str/abc/ 将全文中的第一个 str 替换成 abc
:s/str/abc/g 将光标所在行的所有 str 替换成 abc
:%s/str/abc/g 将全文中的所有 str 替换成 abc
:m,ns/str/abc/g 将 m 行到 n 行中所有的 str 替换为 abc
/str 向后查找 str,n 查找下一个,N 查找前一个
?str 向前查找 str,n 查找前一个,N 查找下一个
:set hlsearch 打开高亮搜索结果
:set nohlsearch 关闭高亮搜索显示

复制命令

命令 描述
yy 复制光标所在行
nyy 复制光标所在行,到向下 n 行所有内容
y1G 复制光标所在行,到第一行的所有内容
yG 复制光标所在行,到最后一行的所有内容
y0 复制光标前一个字符,到该行行首所有内容
y^ 复制光标前一个字符,到该行第一个非空字符的所有内容
y$ 复制光标所在字符,到该行行尾的所有内容
yw 复制光标所在字符,到该单词结束所有内容

粘贴命令

命令 描述
p(小写) 将复制的内容粘贴到光标所在字符之后
P(大写) 将复制的内容粘贴到光标所在字符之前
np 将复制的内容粘贴 n 次

删除命令

命令 描述
dd 删除光标所在行
ndd 删除光标所在行,到向下 n 行所有内容
d1G 删除光标所在行,到第一行的所有内容
dG 删除光标所在行,到最后一行的所有内容
d0 删除光标前一个字符,到该行行首所有内容
d^ 删除光标前一个字符,到该行第一个非空字符的所有内容
d$ 删除光标所在字符,到该行行尾的所有内容
dw 删除光标所在字符,到该单词结束所有内容
dt 删除当前光标到指定符号的所有内容
x 向后删除一个字符
nx 向后删除 n 个字符
X 向前删除一个字符
ci{ 删除 {} 里面的所有内容
:m,nd 删除第 m 行到 n 行的所有内容

修改命令

命令 描述
cw 修改光标所在处,到该单词结束所有字符
r 替换光标所在处字符
R 从光标所在处开始替换字符,按 Esc 结束

其他操作

命令 描述
. 重复上次操作
u 撤销上次操作
nu 撤销前 n 次操作
Ctrl + r 恢复上次操作
J 将光标所在行与下一行合成同一行
Ctrl + v 可视化块
Shift + v 可视化行

互动板块

  • 问:如何快速入门 Vim 编辑器?
  • 答:找规律,多敲多练,把键盘敲烂!

虽然初期学习较难适应,但是一旦掌握其命令逻辑和操作方法,就能显著提高编辑效率。随着肌肉记忆的形成,便可以体会到"双手不离键盘"的流畅编辑体验,这种高效、连贯且几乎无中断的编辑方式,正是 Vim 经久不衰的魅力所在。

更多内容

相关推荐
maosheng11463 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken4 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.2914 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C4 小时前
CPU Cache
linux·cache
Hoshino.415 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
播播资源7 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry7 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
lay_liu7 小时前
Linux安装redis
linux·运维·redis
寂柒9 小时前
序列化与反序列化
linux·网络
lay_liu9 小时前
ubuntu 安装 Redis
linux·redis·ubuntu