最强文本编辑器 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?
  • 答:多敲多练,把键盘敲烂!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/374777.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统服务综合作业01

题目: 现有主机 node01 和 node02,完成如下需求: 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 no…

三分钟看懂马尔可夫链(Markov Chain)是什么

马尔可夫链(Markov Chain)是一种数学模型,用于描述系统在不同状态之间的转移过程。简单来说,马尔可夫链描述了一个系统在各个状态之间转移的概率,这种转移是随机的,但遵循特定的概率规则。它有两个重要特性…

Linux shell编程学习笔记63:free命令 获取内存使用信息

0 前言 在系统安全检查中,内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。 1 free命令的功能、用法和选项说明 1.1 free命令的功能 free 命令可以显示系统内存的使用情况,包括物理内存、交换…

在Linux下使用Docker部署chirpstack

目录 一、前言 二、chirpstack 1、chirpstack是什么 2、chirpstack组件 3、为什么选择Docker部署 三、Linux下部署过程 四、web界面部署过程 一、前言 本篇文章我是在Linux下使用 Docker 进行部署chirpstack,chirpstack采用的是v4 版本,v4 版本 与…

Windows电脑安装Python结合内网穿透轻松搭建可公网访问私有网盘

文章目录 前言1.本地文件服务器搭建1.1.Python的安装和设置1.2.cpolar的安装和注册 2.本地文件服务器的发布2.1.Cpolar云端设置2.2.Cpolar本地设置 3.公网访问测试4.结语 前言 本文主要介绍如何在Windows系统电脑上使用python这样的简单程序语言,在自己的电脑上搭建…

阿里云RDS云数据库库表恢复操作

最近数据库中数据被人误删了,记录一下恢复操作方便以后发生时进行恢复. 1.打开控制台,进入云数据库实例. 2.进入实例后 ,点击右侧的备份恢复,然后看一下备份时间点,中间这边都是阿里云自动备份的备份集,基本都是7天一备…

代发考生战报:南京考场华为售前HCSP H19-411考试通过

代发考生战报:南京考场华为售前HCSP H19-411考试通过,客服给的题库非常稳定,考试遇到2个新题,剩下全是题库里的原题,想考的放心考吧,考场服务挺好,管理员带着做签名和一些考试说明介绍清楚&…

【活动行】参与上海两场线下活动,教育生态行业赛总决赛活动和WAIC人工智能大会活动 - 上海活动总结

目录 背景决赛最后一公里领域范围 决赛作品AI智教相机辅导老师Copilot辅导老师Copilot雅思写作竞技场 优秀作品总结 背景 决赛 百度发起的千帆杯教育生态行业赛于2024年7月4日进行线下决赛,博主虽然没能进入决赛,但也非常荣幸能够以嘉宾身份到现场给进…

从0-1搭建一个web项目(页面布局详解)详解

本章分析页面布局详解详解 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等功能。感兴趣的小伙伴可以访问源码点个赞 地…

哈弗架构和冯诺伊曼架构

文章目录 1. 计算机体系结构 2. 哈弗架构(Harvard Architecture) 3. 改进的哈弗架构 4. 冯诺伊曼架构(Von Neumann Architecture) 5. 结构对比 1. 计算机体系结构 计算机体系结构是指计算机系统的组织和实现方式&#xff0c…

[终端安全]-7 后量子密码算法

本文参考资料来源:NSA Releases Future Quantum-Resistant (QR) Algorithm Requirements for National Security Systems > National Security Agency/Central Security Service > Article Commercial National Security Algorithm Suite 2.0” (CNSA 2.0) C…

LeetCode之最长回文子串

1.题目链接 5. 最长回文子串 - 力扣(LeetCode)https://leetcode.cn/problems/longest-palindromic-substring/description/ 2.题目解析 对于这道题目我们可以使用动态规划的思路来求解,具体思路是,对于一个长度大于2的子串&…

新火种AI|微软和苹果放弃OpenAI董事会观察员席位

作者:一号 编辑:美美 微软苹果双双不做OpenAI“观察员”,OpenAI能更自由吗? 7月10消息,微软当地时间周一宣布将放弃在OpenAI董事会的观察员席位,他们称,OpenAI在过去八个月中取得了“重大进展…

2024机器遗忘(Machine Unlearning)技术分类-思维导图

1 介绍 机器遗忘(Machine Unlearning)是指从机器学习模型中安全地移除或"遗忘"特定的数据点或信息。这个概念源于数据隐私保护的需求,尤其是在欧盟通用数据保护条例(GDPR)等法规中提出的"被遗忘的权利…

STM32利用FreeRTOS实现4个led灯同时以不同的频率闪烁

在没有接触到FreeRTOS时,也没有想过同时叫两个或两个以上的led灯闪烁的想法,接触后,发现如果想叫两个灯同时以不同的频率闪烁,不能说是不可能,就算是做到了也要非常的麻烦。但是学习了FreeRTOS后,发现要想同…

PHP 安装Memcached 扩展 PHP使用Memcache

memcache扩展下载 访问官网&#xff1a;https://pecl.php.net/package/memcache&#xff0c;下载合适的memcache版本的安装包&#xff0c;注意要与php版本相匹配。 1、查看运行环境php版本,可以运行以下代码 <?php phpinfo(); ?>2、查看版本信息以及是否支持多线程…

linux radix-tree 基数树实现详解

radix tree&#xff0c;又称做基数树&#xff0c;是一种适合于构建key(index)与value(item)相关联的数据结构。内核中使用非常广泛。本文主要聚焦linux内核基数树的代码实现,大量注释过的代码。 radix-tree组织结构如下: 1、数据结构 /** The bottom two bits of the slot de…

开放式耳机哪个品牌质量比较好?2024高性价比机型推荐!

作为耳机测评师这几年开放式耳机也越来越火&#xff0c;各种品牌各种机型让人看得眼花缭乱&#xff0c;那我们如何分辨一款开放式耳机是好是坏呢&#xff1f;今天这篇文章就是来告诉大家如何去分辨去挑选一款还不错的开放式耳机&#xff0c;在教大家如何挑选之后&#xff0c;我…

Python模块ConfigParser读取应用程序的配置文件简单示例

一、模块说明&#xff1a; 系统管理员通常通过文本编辑器编辑这些配置文件&#xff0c;以设置应用程序的默认值&#xff0c;然后应用程序将读取并解析这些配置文件&#xff0c;并根据其中的内容执行对应操作。ConfigParser模块具有read()方法&#xff0c;用于读取配置文件。 …

jstat命令介绍

jstat&#xff1a;查看JVM统计信息 一 基本情况二 基本语法2.1 option参数1. 类装载相关的&#xff1a;2. 垃圾回收相关的-gc&#xff1a;显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。-gccapacity&#xff1a;显示…