vim高效编辑:从入门到精通

文章目录

前言

之前我们在windows使用Visual Studio,该软件集成了编写代码、编译、调试和运行的功能,这种将多个功能集于一体的软件称作IDE,但是在 Linux系统中,编写代码、编译代码、调试和构建工具这几个是独立分开的,今天我们介绍一个用来写代码的编辑器vim。

vim多模式

vim常见的模式有三种,分别为命令模式、插入模式和底行模式。这三种模式都是通过特定的命令来提高编辑的效率。三种模式的关系如下:

命令模式

进入vim编辑器,默认的模式就为命令模式,命令模式也是vim多模式中最核心的模式。若vim编辑器处在插入模式或者底行模式,可输入按键"Esc"进入命令模式。

光标定位

shift + g\] :进入文本的末尾 \[gg\] : 回到文本开始 \[数字 + shift + g\]:定位到指定行数 \[shift + 4\]:定位到当前行行尾 \[shift + 6\]:定位到当前行开始 h j k l:分别对应光标的左下上右移动 w:以"单词"为单位向右移动,若想要更快速移动,可以使用 \[移动步数 + w

b: 以"单词"为单位向左移动,若想要更快速移动,可以使用 [移动步数 + b]

编辑

yy:复制,若要复制多行,可使用 [复制行数 + yy]

p:粘贴到下一行,若要粘贴多行,可使用 [粘贴次数 + p]

u:撤销操作

ctrl + r :将撤销动作u进行撤销,只要没退出vim,随时可撤销

dd:剪切当前行,若要剪切多行,可使用 [剪切行数 + dd],若要再粘贴,使用粘贴指令即可

shift + ~:大小写快速转换

r + 字符:将光标所在位置替换为对应的字符,若想替换多个,则使用 [替换数量 + r + 字符]即可

shift + r:进入替换模式,进行批量化的替换,返回命令模式,使用"Esc"即可

x:删除光标所在字符,从左向右删,连续删除使用 [删除字符个数 + x] 即可

shift + x:删除光标所在的字符,从右向左删,连续删除使用 [删除字符个数 + shift + x] 即可

ctrl + v:进入视图模式

批量化注释与批量化去注释

先输入ctrl + v进入视图模式,再通过h j k l几个方向键选择对应的区域,再输入shift + i进入插入模式,输入//后按下Esc按键,批量化注释结束。

若想要取消注释,先输入ctrl + v进入视图模式,再通过h j k l几个方向键选择对应的区域,方向键选择完成后按下d案件即可。

插入模式

命令模式输入"i"即可进入插入模式。也可使用"a"和"o"由命令模式进入插入模式,此时"a"会使光标向右移动,"o"则会新起一行。还有其他转换方式,但这几个方法在日常开发中已经够用了。

底行模式

若想要退出vim编辑器,要再底行模式下进行操作。命令模式进入底行模式,可输入按键"shift + :",即输入":"即可进入底行模式。

退出保存

w:保存,强制保存可以使用w!

q:退出,强制退出可以使用q!

wq:保存退出 ,强制保存退出可使用wq!

若在使用vim编辑器编写某个文件时,没有保存但是突然退出终端,再次打开文件时会出现以下信息:

其实这是因为vim在关闭时保存了临时文件,选择R即可恢复,但是即便这样保存退出,再次用vim打开该文件仍会提示上图信息,这是因为vim闪退时,会在当前目录下形成一个临时文件,该临时文件是个隐藏文件,如下所示:

删除该文件后,再次用vim打开相同的文件,则不会出现提示信息。

显示行号

若要显示行号,在底行模式下输入"set nu"即可,如下所示:

若想去掉行号,输入"set nonu"即可。

匹配关键字搜索

若要搜索字符串,使用[/ + "要搜索的字符串"]即可,例如,搜索"printf"字符串,底行模式输入"/printf"即可。输入"n"即可自动匹配下一个。

执行命令

底行模式下使用 [! + 命令]即可不退出vim,并执行相关的命令,当命令完成后,使用回车键即可返回vim。

批量化替换

若要对文本中某些字符串进行替换,使用 [%s/要替换的字符串/新的字符串/g]即可。

分屏

若想要打开多个屏,可以使用指令 [vs 文件名],如下所示:

若要使光标在不同屏之间切换,使用"ctrl w w"即可选中分屏,分屏可以帮助我们编写多文件代码。

其它操作

光标定位

在使用vim打开文件时,若使用 [vim + 文件名 + +行号],在打开的时候即可快速定位到对应的行数。如vim test.c +9,即可使光标定位在第9行。

退出

在命令模式下,也可以退出vim,使用"ZZ"即可快速退出。等同于"wq"保存退出。

相关推荐
MarcoPage15 小时前
Python 字典推导式入门:一行构建键值对映射
java·linux·python
埃伊蟹黄面16 小时前
计算机的“身体”与“灵魂”:冯·诺依曼架构与操作系统
linux
winner888118 小时前
Linux 软件安装 “命令密码本”:yum/apt/brew 一网打尽
linux·运维·服务器
思麟呀20 小时前
Linux的基础IO流
linux·运维·服务器·开发语言·c++
winner888120 小时前
嵌入式Linux驱动开发全流程:工具协作+核心概念拆解(从入门到理解)
linux·运维·驱动开发
ShiinaKaze20 小时前
fatal error: bits/c++config.h: No such file or directory
linux·gcc·g++
Archy_Wang_121 小时前
脚本自动生成专业Linux巡检报告
linux·运维·服务器
java_logo21 小时前
SGLANG Docker容器化部署指南
linux·运维·docker·容器·eureka·1024程序员节
敲代码的瓦龙1 天前
操作系统?进程!!!
linux·c++·操作系统
打不了嗝 ᥬ᭄1 天前
数据链路层
linux·网络·网络协议·http