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

相关推荐
XIAOHEZIcode1 小时前
Ubuntu 终端美化全栈指南:Bash 到 Kitty 踩坑实录
linux·ubuntu·命令行
唐青枫3 小时前
别再只会用 cron:Linux systemd Timer 定时任务实战详解
linux
AlfredZhao2 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
小宇子2B2 天前
三、内核入口 el0_svc / entry_SYSCALL_64 的汇编做了什么——从异常向量到 C 函数
操作系统
小宇子2B3 天前
四、从 write(1, "hello", 5) 到 ksys_write() —— sys_call_table 怎么路由的
操作系统
小宇子2B3 天前
一、printf("hello") 怎么变成 write(1, "hello", 5) —— libc 的 stdout 缓冲机制
操作系统
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux