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

最强文本编辑器 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, Scommand 模式 —> insert 模式
escinsert 模式 --> command 模式
v, Vcommand 模式 --> visual 模式
escvisual 模式 --> command 模式
:, /command 模式 —> 末行模式

常用命令

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

打开文件

命令描述
vim filename打开或新建文件,并将光标置于第一行的首部
vim -r filename恢复上次 vim 打开时崩溃的文件
vim -R filename把文件以只读方式打开
vim + filename打开文件,并将光标置于最后一行的首部
vim +n filename打开文件,并将光标置于第 n 行的首部
vim +/str filename打幵文件,并将光标置于第一个与 str 匹配的位置
vim -c command filename在对文件进行编辑前,先执行指定的命令
vim file1 file2 file3 …打开多个文件
vim -On file1 file2 …打开多个文件并左右分屏
vim -on file1 file2 …打开多个文件并上下分屏

查看文件

命令描述
:ls列出当前打开的所有文件
:bn打开多个文件时,切换显示下一个文件
:bp打开多个文件时,切换显示上一个文件
:sp filename上下分割,并打开一个新的文件
:vsp filename左右分割,并打开一个新的文件
:next切换至下一个文件
:prev切换至前一个文件
:last切换至最后一个文件
:first切换至第一个文件
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, q文件分屏显示时,关闭当前分屏直到退出 VIM

操作文件

命令描述
:q不保存仅退出
:q!不保存仅退出(强制退出)
:qa全部退出
:w保存
:w!强制保存
:wq保存退出
: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 指令大全

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

卤味江湖中,周黑鸭究竟该抓住什么赛点?

近年来,卤味江湖的决斗从未停止。 随着休闲卤味、佐餐卤味等细分赛道逐渐形成,“卤味三巨头”(周黑鸭、绝味食品、煌上煌)的牌桌上有了更多新对手,赛道变挤了,“周黑鸭们”也到了转型关键期。 这个夏天&a…...

2024年西安铁一中集训DAY1---- 杂题选讲

文章目录 牛客练习赛125 E 联谊活动(枚举,分讨)牛客练习赛125 F 玻璃弹珠(类莫队,离线询问,数据结构)2024ccpc长春邀请赛 D Parallel Lines(随机化)2024ccpc长春邀请赛 E…...

Python爬虫:BeautifulSoup的基本使用方法!

1.简介 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析“标签树”等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup…...

【自监督学习】DINO in ICCV 2021

一、引言 论文: DINO: Emerging Properties in Self-Supervised Vision Transformers 作者: Facebook AI Research 代码: DINO 特点: 对于一张图片,该方法首先进行全局和局部的裁剪与增强并分别送入教师和学生网络&am…...

使用simulink进行esp32开发,进行串口收发数据需要注意的地方,为什么收发不成功

1,主要是因为simulink里的配置文件配置的波特率和串口接受软件配置的波特不一致导致的 2,主要有以下三个界面 a.配置文件 b.模型 模型直接选择使用的是那组串口就行了,一般情况下我们收发使用同一组就可以,这样收发模块填写的端…...

多周期路径的约束与设置原则

本节将回顾工具检查建立保持时间的原则,接下来介绍设置多周期后的检查原则。多周期命令是设计约束中常用的一个命令,用来修改默认的建立or保持时间的关系。基本语法如下 默认的建立时间与保持时间的检查方式 DC工具计算默认的建立保持时间关系是基于时钟…...

【算法】反转链表

难度:简单 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例: 示例1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例2: 输入:head [] 输出…...

DevEco Studio No device 无法识别 usb 设备 - 鸿蒙

DevEco Studio IDE 版本与手机系统版本升级后出现了 USB 连接设备后 IDE 无法识别 no device 的情况出现; 解决办法 首先,确定当前 DevEco Studio 的 IDE 版本与移动设备的大版本保持一致; 其次,在版本相互匹配的情况下,查看移动设备是否开启了开发者模式与 USB 调试,具体步骤…...

WebRTC API接口教程:实现高效会议的步骤?

WebRTC api接口教程如何使用?WebRTC api接口的功能? WebRTC无需中间服务器即可传输音视频流,为视频会议、在线教育等应用提供了强大的支持。AokSend将详细介绍如何利用WebRTC API接口实现高效会议的步骤。 WebRTC API接口教程:获…...

MinIO - 服务端签名直传(前端 + 后端 + 效果演示)

目录 开始 服务端签名直传概述 代码实现 后端实现 前端实现 效果演示 开始 服务端签名直传概述 传统的,我们有两种方式将图片上传到 OSS: a)前端请求 -> 后端服务器 -> OSS 好处:在服务端上传,更加安全…...

使用getopt处理参数

文章目录 使用getopt处理参数1. shift 命令1.1 删除一个参数1.2 删除多个参数1.3 多次执行 shift 参数1.4 参数解析示例1.5 优化处理1.6 问题处理 2. getopt 命令2.1 常用参数及示例2.2 脚本参数优化示例2.3 参数校验 3. 示例展示4. eval 命令4.1 示例示例 1示例 2示例 3示例 4…...

图像搜索技术在司法证据分析中的应用:思通数科大模型的创新实践

引言 在司法侦查过程中,图像和视频证据的分析对于案件的侦破至关重要。随着人工智能技术的快速发展,图像搜索技术已成为司法领域的关键工具。本文将探讨如何结合思通数科的大模型,利用图像搜索技术对案件中的图片或视频证据进行深度分析&…...

python使用多进程,传入多个参数?

先展示一下我的多进程代码: def process_image(image_path_list):# 获取模板以及类别名template_feature {}template_image cv2.imread(image_path_list)template_feature[curr_template_name] template_imageinput_image cv2.imread(img)template_feature[inp…...

李彦宏: 开源模型是智商税|马斯克: OpenAI 闭源不如叫 CloseAI

在 2024 年世界人工智能大会(WAIC 2024)上,百度创始人、董事长兼首席执行官李彦宏发表对开源模型的评价。 李彦宏认为:开源模型实际上是一种智商税,而闭源模型才是人工智能(AI)行业的未来。 马…...

怎么参与场外期权?场外期权交易要注意什么?

今天带你了解怎么参与场外期权?场外期权交易要注意什么?场外期权(OTC Options)是指在交易所之外进行的期权交易。与场内期权(交易所挂牌交易)不同,场外期权交易由交易双方私下协商确定合约条款&…...

Postman脚本炼金术:高级数据处理的秘籍

🤖 Postman脚本炼金术:高级数据处理的秘籍 Postman不仅是API测试的强大工具,它的脚本功能同样能够在数据处理方面大放异彩。无论是在请求之前设置环境,还是测试后验证结果,Postman的脚本都能提供强大的数据处理能力。…...

MySQL字符串相关数据处理函数

目录 1. 转大小写 2. 截取字符串 sunstr 3. 获取字符长度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 转大小写 转大写:upper() 转小写:lower() 虽然MySQL不严格区分大小写,但是我们还是需要掌握这种大小写的操作以方便学习其他…...

最近查看了一些批处理文件的写法,整理了一些基础的命令符,大佬勿喷

1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。 2. 命令 表示不显示后面的命令,但是会显示结果 3.Goto和: 命令 :定义标签,goto跳转到标签 4.Rem ::注释命令 ::不显示不执行,rem显示不执行 5.Pause 命令 暂停命…...

解决 Yarn 运行时的 Node.js 版本问题:一个详尽的指南

引言 Yarn 是一个流行的 JavaScript 包管理器,它与 Node.js 紧密集成,用于管理项目依赖。然而,在开发过程中,开发者可能会遇到 Node.js 版本不兼容的问题,这会导致 Yarn 运行时出错。本文将提供一个详细的指南&#x…...

Java OCR实战:精准提取与解析身份证信息

1. 为什么选择Java OCR处理身份证信息? 在企业级应用开发中,身份证信息录入是个高频需求场景。传统人工录入不仅效率低下,还容易出错。我去年参与过一个政务系统改造项目,工作人员每天要处理300张身份证照片,手动录入的…...

更换背景图用什么工具?8个月来我测试过50+款产品,这是真实体验分享

买了新手机,想给证件照换个背景;电商运营需要批量处理商品图;自媒体博主要给头像去个背景……这些场景下,"更换背景图用什么工具"可能是你Google搜索框里最常打的一句话。说实话,这个问题看似简单&#xff0…...

别再死磕官网了!用Docker Compose 5分钟搞定Weaviate向量数据库本地部署

5分钟极速部署Weaviate:Docker Compose避坑指南 当开发者第一次接触Weaviate时,往往会被官网复杂的配置选项和冗长的文档吓退。作为一款开源的向量数据库,Weaviate确实提供了强大的语义搜索和AI原生功能,但官方安装流程却像迷宫一…...

AI智能体的开发与测试

AI智能体(AI Agent)的开发与测试是一项将大语言模型(LLM)能力转化为企业级稳定应用的系统工程。它不仅需要先进的算法,更依赖于严密的工程架构与创新的测试方法。以下是AI智能体开发与测试的全景指南:第一部…...

Taotoken账单追溯功能如何帮助厘清项目间的AI资源消耗

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken账单追溯功能如何帮助厘清项目间的AI资源消耗 当团队同时推进多个AI实验项目时,一个常见的困扰是:…...

NotebookLM辅助文献综述全链路拆解(2024最新版:支持arXiv/DOI/中文知网多源解析)

更多请点击: https://intelliparadigm.com 第一章:NotebookLM文献综述辅助的范式变革 NotebookLM 是 Google 推出的基于用户自有文档的 AI 助手,其核心能力在于对上传 PDF、TXT 等学术文献进行语义索引与上下文感知问答,彻底重构…...

在OpenClaw中配置Taotoken作为你的AI Agent核心提供商

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在OpenClaw中配置Taotoken作为你的AI Agent核心提供商 如果你正在使用OpenClaw构建AI工作流,并希望获得更灵活的模型选…...

终极英雄联盟工具箱:如何用League Akari提升你的游戏效率与段位

终极英雄联盟工具箱:如何用League Akari提升你的游戏效率与段位 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款…...

STL编程中EN/ENO机制详解:从原理到仿真实践

1. 项目概述:理解STL中的EN/ENO机制在工业自动化编程领域,尤其是可编程逻辑控制器(PLC)的编程中,结构化文本(STL)是一种高级的、类似于Pascal或C的文本化编程语言。对于从梯形图(LAD…...

移动篇:WMS里的“乾坤大挪移”——移库、补货、冻结全解析

WMS里的“乾坤大挪移”——移库、补货、冻结全解析 摘要:货物入库后,不是“一放了之”。库位要优化、库存要周转、临期品要管理……这就涉及WMS中的“库存移动”操作。移库、补货、冻结分别解决什么问题?什么场景下会用到?本文带你…...