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"保存退出。

相关推荐
tryCbest4 小时前
CentOS部署Docker容器
linux·docker·centos
qyhua5 小时前
【Linux运维实战】彻底修复 CVE-2011-5094 漏洞
linux·运维·安全
坠金5 小时前
linux/centos迁移conda文件夹
linux·centos·conda
纳于大麓7 小时前
Kotlin基础语法
linux·windows·kotlin
九皇叔叔7 小时前
Linux Shell 正则表达式中的 POSIX 字符集:用法与实战
linux·运维·正则表达式
東雪蓮☆7 小时前
K8s 平滑升级
linux·运维·云原生·kubernetes
非得登录才能看吗?8 小时前
VScode 入门(设置篇)
ide·vscode·编辑器
---学无止境---8 小时前
Linux中进程创建和缓存对象初始化fork_init、proc_caches_init和buffer_init
linux
qq_183802878 小时前
Linux内核idr数据结构使用
linux·运维·服务器