当前位置: 首页 > news >正文

Vim 模式切换 | 命令集

Vim 模式切换 | 命令集

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

vim 主要模式及切换

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

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

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

1 光标相关操作命令集

1.1 光标移动
快捷键功能
小写字母:h、j、k、lvim允许直接使用键盘上的光标移动键来上下左右移动光标,但正规的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会向前寻找到您要的关键字为止

相关文章:

  • 洛谷C++简单题小练习day21—梦境数数小程序
  • 第四章 Day4
  • ChatGPT Plus遇到订阅被拒原因与解决方案
  • 软件压力测试:测试方法与步骤详解
  • 【自然语言处理】:实验5,司法阅读理解
  • Linux调用可执行程序:system()函数和execl函数
  • Python世界之运算符
  • GO-ICP的使用(一)
  • 300分钟吃透分布式缓存-15讲:如何深入理解、应用及扩展 Twemproxy?
  • 操作系统系列学习——操作系统启动
  • uni-app 开发调试自动打开手机屏幕大小界面(Aidex移动端开发项目)
  • 微信小程序-人脸检测
  • 万界星空科技MES系统,实现数字化智能工厂
  • 【干货】【常用电子元器件介绍】【二极管】(一)--二极管的种类、识别、检测和主要参数
  • 用c# 自己封装的Modbus工具类库源码
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • hadoop集群管理系统搭建规划说明
  • Js基础知识(四) - js运行原理与机制
  • Mybatis初体验
  • Netty源码解析1-Buffer
  • PHP的Ev教程三(Periodic watcher)
  • Promise初体验
  • win10下安装mysql5.7
  • windows下使用nginx调试简介
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前端js -- this指向总结。
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 网页视频流m3u8/ts视频下载
  • 新书推荐|Windows黑客编程技术详解
  • 一个JAVA程序员成长之路分享
  • 怎么将电脑中的声音录制成WAV格式
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #HarmonyOS:基础语法
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $.ajax()
  • (4)logging(日志模块)
  • (4.10~4.16)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (差分)胡桃爱原石
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (全注解开发)学习Spring-MVC的第三天
  • (一)appium-desktop定位元素原理
  • (已解决)什么是vue导航守卫
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)