Vim 模式切换 | 命令集

Vim 模式切换 | 命令集

  • [vim 主要模式及切换](#vim 主要模式及切换)
    • 一、正常/普通/命令模式
      • [1 光标相关操作命令集](#1 光标相关操作命令集)
        • [1.1 光标移动](#1.1 光标移动)
        • [1.2 文字删除](#1.2 文字删除)
        • [1.3 粘贴和复制](#1.3 粘贴和复制)
        • [1.4 替换](#1.4 替换)
        • [1.5 字符更改](#1.5 字符更改)
    • 二、插入模式
      • [2.1 插入模式和命令行模式相互切换](#2.1 插入模式和命令行模式相互切换)
    • 三、末行模式
      • [2.1 末行模式和命令行模式相互切换](#2.1 末行模式和命令行模式相互切换)
      • [2.2 末行模式相关命令集](#2.2 末行模式相关命令集)

vim 主要模式及切换

vim是一款历史悠久的多模式文本编辑器,在不同模式下有不同的功能。但实际开发过程中,主要有以下5中模式。

一、正常/普通/命令模式

Vim默认模式为命令模式,该模式主要用于控制屏幕光标的移动,字符、行的删除

1 光标相关操作命令集

1.1 光标移动
快捷键 功能
小写字母:h、j、k、l vim允许直接使用键盘上的光标移动键来上下左右移动光标,但正规的vim是用h(左移)、j(下移)、k(上移)、l(右移)来控制光标行为
gg 光标跳转到文本开始
(n)+ shift + g 光标跳转到第n行 或 文本末尾
shift + ^ 光标移动到该方的"行首"
shify + $ 光标移动到该方的"行尾"
数字(n) + l 光标从当前位置开始,向后移动n位
w 光标跳到下一个单词的开头(如果非单词,则是下一个字符)
e 光标跳到下一个单词的结尾(如果非单词,则是下一个字符)
b 光标跳到上一个单词的开头(如果非单词,则是上一个字符)
ctrl + b 屏幕往"后"移动一页
ctrl + f 屏幕往"前"移动一页
ctrl + u 屏幕往"后"移动半页
ctrl + d 屏幕往"前"移动半页
1.2 文字删除
快捷键 功能
x 删除当前光标所在位置字符
数字(n) + x 删除光标所在位置后n个字符(包含光标所在位置本身)
shift + x 删除光标所在位置的前一个字符
数字(n) + shift + x 删除光标所在位置的前n一个字符
dd 删除光标所在行
数字(n) + dd 从光标所在行开始,删除n行
1.3 粘贴和复制
快捷键 功能
yy 复制当前行到缓冲区
数字(n) + yy 从光标所在行开始,向后复制n行到到缓冲区
数字(n) +p 将缓冲区内的n字符贴到光标所在位置。tip:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能
yw 光标所在位置到字尾的字符复制到缓冲区中。
#yw 复制#个字符到缓冲区
1.4 替换
快捷键 功能
r 替换光标所在处的字符
R 替换光标所到之处的字符,直到按下ESC键为止
u 撤销回到上一个操作。按多次"u"可以执行多次撤销
ctrl + r 撤销的恢复
1.5 字符更改
快捷键 功能
cw 更改光标所在处的字到字尾处
c#w 例如,「c3w」表示更改3个字

二、插入模式

要进行文字输入,vim必须从命令行模式切换到插入模式。

2.1 插入模式和命令行模式相互切换

  1. 从命令行模式切换到插入模式有以下三种方式:
快捷键 功能
i 按i进入插入模式后,是从光标当前位置开始输入文字
a 按a进入插入模式后,是从光标当前位置的下一个位置开始输入文字
o 按o进入插入模式后,是插入新的一行,从行首开始输入文字
  1. 从插入模式切换命令行模式只需无脑Esc即可

三、末行模式

在末行模式中,我们可以进行文件的保存和退出,文件替换、查找字符串和列出行号等操作。

2.1 末行模式和命令行模式相互切换

  1. 从命令行模式切换到末行模式,只需shift + : 即可。
  2. 从末行模式退回命令行模式只需Esc

2.2 末行模式相关命令集

快捷键 功能
set + nu 列出行号
set + nonu 取消行号
数字(n) 在冒号后输入一个数字后回车确认,光标会跳转到该行
w! 单独w表示保存文件;w!表示强制保存文件
q! 单独q表示退出文件;q!表示强制退出文件
/ + 关键字 查找关键字,如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止
? + 关键字 查找关键字,如果第一次找的关键字不是您想要的,可以一直按n会向前寻找到您要的关键字为止
相关推荐
SMF1919几秒前
【Docker】Linux系统上卸载旧Docker、卸载Podman并重新安装Docker及配置国内镜像源
linux·docker·podman
A923A5 分钟前
【Vue3大事件 | 项目笔记】第一天
前端·vue.js·笔记·前端框架
ErizJ5 分钟前
面试 | Linux
linux·面试
wjhx6 分钟前
vscode中加入Claude Code,对接deepseek
ide·vscode·编辑器
im_AMBER13 分钟前
订阅模式实现字符数统计
前端·typescript·前端框架·编辑器
菜_小_白15 分钟前
高并发定时任务调度系统
linux·c++
HAPPY酷18 分钟前
Linux 网络命令速查:告别 `ifconfig`,拥抱 `ip`
linux·网络·tcp/ip
钰衡大师24 分钟前
Vue 3 源码阅读笔记:ref.ts
javascript·vue.js·笔记·vue3源码阅读
我不听你讲话27 分钟前
Nginx核心功能
linux·服务器·python
草莓熊Lotso27 分钟前
MySQL 数据类型核心指南:选型、实战与避坑
linux·运维·服务器·数据库·c++·人工智能·mysql