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

相关推荐
das2m2 分钟前
Arch Linux (WSL2) Docker 环境踩坑记
linux·docker·eureka
snow@li6 分钟前
nginx:详解与速查表 / Nginx = 反向代理 + 负载均衡 + 静态服务器 + HTTP 缓存 / 请求分发、静态加速、上线不中断
linux·服务器·nginx
♡来年秋风起♡13 分钟前
Claude Code VSCode 插件历史记录不显示问题修复记录
ide·vscode·编辑器
小则又沐风a15 分钟前
进程最终篇---进程控制(模拟实现xshell)
java·linux·服务器·前端
老王熬夜敲代码18 分钟前
CPU缓存的访问机制
操作系统·cpu
_codemonster22 分钟前
K8s / K3s 通用 Kubectl 命令大全(表格版)
linux·docker·kubernetes
阿旭超级学得完24 分钟前
Linux基础指令 四(apt,vim,git,cgdb)
linux·服务器·开发语言·数据结构·c++·git·vim
半夜修仙26 分钟前
4.RabbitMQ运维
linux·运维·服务器·分布式·rabbitmq·java-rabbitmq
ALINX技术博客27 分钟前
【黑金云课堂】FPGA技术教程Linux开发:摄像头GPU渲染显示/Qt OpenGLES使用
linux·qt·fpga开发·gpu
无足鸟ICT33 分钟前
【RHCA+】移动光标快捷键
linux·编辑器·vim