最强文本编辑器 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.mzph.cn/diannao/45148.shtml

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

相关文章

谷歌插件之一键关闭同域名页面

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 谷歌插件之一键关闭同域名页面 前言项目结构mainfest.jsonbackgroud.js 项目实现效果展示展望 前…

13019.CUDA问题积累

文章目录 1 内存不断增长的问题1.1 主机从GPU拷贝内存1.1.1 htop 内存增长到一定阶段后,保持稳定 1.2 GPU拷贝到Host修改之后内存稳定无变化1.3 结论 2 主机与GPU数据拷贝方案2.1 cudaMemcpy 拷贝内存2.2 cudaMemcpyAsync 异步数据拷贝2.3 采用多线程拷贝技术2.3.1 …

群主必学!轻松Get如何解散微信群的技巧

作为一个微信群的群主,解散群聊可能是你需要掌握的重要技能之一。不管是因为群聊的目的已经达成,还是因为群成员过少或不活跃,了解如何解散微信群都能帮助你更好地管理你的群聊。 如何解散微信群?本文将为您提供一些简单易行的技…

代码随想录算法训练营第五十天| 739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II

739. 每日温度 题目链接: 739. 每日温度 文档讲解:代码随想录 状态:不会 思路: 这道题需要找到下一个更大元素。 使用栈来存储未找到更高温度的下标,那么栈中的下标对应的温度从栈底到栈顶是递减的。这意味着&#xff…

Redis数据同步

文章简单介绍基于redis-shake的redis数据同步,该工具基于每个节点同步数据,即每个主节点需同步一次,才能完成整个redis集群的数据同步。 1、redis节点操作 ### 查看redis版本 ./bin/redis-server --version### 登录redis ./bin/redis-cli -…

改变Ubuntu的Tab没有缩进4格(Makefile)

1.vim里的Tab 用vi指令打开这个文件,没有的话就新创建一个 vi ~/.vimrc在打开的文件中输入以下两行 1 set tabstop42 set shiftwidth4 ~ Esc : x,保存并退出即可 资料来源: 2024年5月21日-vi/vim …

Linux Ubuntu MySQL环境安装

1. 更新软件源 首先,确保你的Ubuntu系统已经更新了软件源列表,以便能够下载到最新的软件包。打开终端并输入以下命令: sudo apt update 2. 安装MySQL服务器 打开终端并输入以下命令来安装MySQL服务器 sudo apt install mysql-server 在…

一个便捷的web截图库~【送源码】

随着时间的发展,前端开发的范围越来越广,能够实现的功能也越来越多,要实现的功能也五花八门,今天就给大家介绍一个web截图库,让前端也能实现截图功能—— js-web-screen-shot js-web-screen-shot js-web-screen-shot 是一个基于 …

嵌入式板级支持包(BSP)80道面试题及参考答案(3万字长文)

目录 解释什么是通用输入输出(GPIO)接口及其在BSP中的作用。 描述SPI接口的主要特点和用途。 说明IC总线协议的工作原理。 如何在BSP中配置一个UART接口? USB设备控制器在BSP中的初始化步骤是什么? 以太网接口如何在BSP中被支持? 什么是SDIO,它在哪些场景下会被使…

语言模型演进:从NLP到LLM的跨越之旅

在人工智能的浩瀚宇宙中,自然语言处理(NLP)一直是一个充满挑战和机遇的领域。随着技术的发展,我们见证了从传统规则到统计机器学习,再到深度学习和预训练模型的演进。如今,我们站在了大型语言模型&#xff…

【接口设计】如何设计统一 RESTful 风格的数据接口

如何设计统一 RESTful 风格的数据接口 1.版本控制1.1 通过 URL1.2 通过自定义请求头1.3 通过 Accept 标头 2.过滤信息3.确定 HTTP 的方法4.确定 HTTP 的返回状态5.定义统一返回的格式 近年来,随着移动互联网的发展,各种类型的客户端层出不穷。如果不统一…

Mybatis-Plus最优化持久层开发

Mybatis-plus:最优化持久层开发 一:Mybatis-plus快速入门: 1.1:简介: Mybatis-plus(简称MP)是一个Mybatis的增强工具,在mybatis的基础上只做增强不做改变; 提高效率;自…

国漫推荐11

1.《元龙》 2.《恶魔法则》2023年9月29日 3.《三十六骑》 4.《山河剑心》 5.剑网3侠肝义胆沈剑心 《剑网3侠肝义胆沈剑心》 《剑网3侠肝义胆沈剑心 第二季》 《剑网3侠肝义胆沈剑心之长漂》(番外) 《剑网3侠肝义胆沈剑心 第三季》 6.《仙逆》东方玄幻…

Uniswap V2和Uniswap V3的区别

Uniswap V2和Uniswap V3是两个不同版本的去中心化交易协议,由Uniswap团队开发和维护。它们之间的主要区别包括以下几点: 资金池模型不同: Uniswap V2: 使用恒定乘积市场模型,也就是 x * y k。这意味着每个资金池中的资产的乘积保持不变&…

Transformer的模型的扩展与应用领域的拓展 - Transformer教程

在如今的人工智能领域,Transformer模型已经成为了众多研究和应用的焦点。从自然语言处理到计算机视觉,Transformer模型的扩展与应用领域的拓展带来了无数的可能性。今天,我们就来聊聊Transformer模型的扩展以及它在不同领域的广泛应用。 首先…

生产管理系统功能全拆解:哪些功能是企业真正需要的?

制造业的伙伴经常听到“生产管理”,但很多人可能只是模糊地知道它与工厂、生产线有关。那么,到底什么是生产管理呢?它的重要性又体现在哪里呢?接下来,我就以轻松的方式,带大家走进生产管理的世界&#xff0…

函数练习·二 基础题

# 【以下功能都使用函数封装】 # 提示: 涉及到要返回的题目,请使用return # 基础题 # 1.封装函数,计算从1到某个数以内所有奇数的和并返回 def fn1(n): return sum([i for i in range(1, n, 2)]) print(fn1(7)) # 2.封装函数,判断某个数是否是偶…

微信闪退怎么回事?实用技巧助你轻松应对

在使用微信的过程中,偶尔会遇到闪退的问题,这不仅影响我们的日常沟通,还可能导致重要信息的丢失。那么,微信闪退怎么回事呢?闪退的原因可能有很多,包括软件问题、手机存储不足、系统不兼容等。本文将详细分…

笔记本电脑数据丢失如何恢复?

在计算机网络日益普及的今天,计算机已波及到人们的生活、工作、学习及消费等广泛领域,其服务和管理也涉及政府、工商、金融及用户等诸多方面。笔记本电脑等电子产品被各行各业的人所喜爱和接受,早已成为人们出差的必备品,可以用来…

keepalived高可用集群

一、keepalived: 1.keepalive是lvs集群中的高可用架构,只是针对调度器的高可用,基于vrrp来实现调度器的主和备,也就是高可用的HA架构;设置一台主调度器和一台备调度器,在主调度器正常工作的时候&#xff0…