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会向前寻找到您要的关键字为止
相关推荐
打鱼又晒网7 分钟前
linux网络套接字 | 深度解析守护进程 | 实现tcp服务守护进程化
linux·网络协议·计算机网络·tcp
乐闻x14 分钟前
VSCode 插件开发实战(六):配置自定义状态栏
ide·vscode·编辑器
张明奇-琦玉14 分钟前
vscode添加全局宏定义
ide·vscode·编辑器
星星不说话~19 分钟前
VScode在远程服务器上安装Anaconda并确认安装成功的步骤
ide·vscode·编辑器
良许Linux21 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
车轮滚滚__22 分钟前
uniapp对接unipush 1.0 ios/android
笔记
蜜獾云32 分钟前
docker 安装雷池WAF防火墙 守护Web服务器
linux·运维·服务器·网络·网络安全·docker·容器
小屁不止是运维33 分钟前
麒麟操作系统服务架构保姆级教程(五)NGINX中间件详解
linux·运维·服务器·nginx·中间件·架构
bitcsljl1 小时前
Linux 命令行快捷键
linux·运维·服务器
ac.char1 小时前
在 Ubuntu 下使用 Tauri 打包 EXE 应用
linux·运维·ubuntu