Linux工具之vi/vim

文章目录

vi/vim

简单来说,vi和vim基本上都是所有Linux系统自带的编辑器,但是我们不排除在未来的某些极端条件下,需要利用vi/vim进行代码的编写或修改

其实vi和vim是一家子,他们都是多模式编辑器,而vim是vi的升级版,不仅支持vi的所有指令,还支持了语法高亮等特性,可视化操作甚至可以运行在其他操作系统上

因此我们主要介绍vim的使用

vim的基本概念

我们知道vim是多模式编辑器,他的模式有非常多,对于我们初学者目前只需要掌握其中的三种即可

命令模式(command mode)、插入模式(insert mode)、末行模式(last line mode)

在命令模式下,可以控制光标移动,删除,移动,复制粘贴,或者进入其他两种模式

在插入模式下,才可以对文件内容进行操作,按[ESC]即可回到命令模式

在末行模式下,做文件的保存或者退出,也可以进行文件替换,查找,列出行号等操作,在命令模式下输入英文冒号即可进入

vim的基本操作

进入vim,一般直接使用vim创建文件即可,例如

bash 复制代码
vim test.c

进入之后是处于命令模式,需要切换到插入模式才可以进行输入文字

从命令模式切换到插入模式有三种方式

  1. 输入i,普通插入模式,从光标处开始输入文字
  2. 输入a,从光标的下一个字符位置开始输入文字
  3. 输入o,从光标的下一行插入新行,从行首开始输入文字

从插入模式按下[ESC]即可切回命令模式

退出vim及保存文件需要在命令模式下输入冒号进入末行模式,再输入w即可保存,q即可退出,也可以wq一起执行

命令模式命令集

命令 说明
i 进入插入模式,从光标后开始输入
a 进入插入模式,从光标的下一个字符开始输入
o 进入插入模式,从光标的下一行开始输入
G 移动到文章末尾
$ 移动到行尾
^ 移动到行首
w 光标跳到下个单词的开头
e 光标跳到下个单词的结尾
b 返回上个单词的开头
# 光标移动到该行的第#个位置
gg 移动到文本开始
shift+g 移动到文本末端
ctrl+b 向后移动一页
ctrl+f 向前移动一页
ctrl+u 向后移动半页
ctrl+d 向前移动半夜
x 按一次删除光标的一个字符
#x 删除光标位置之后的#个字符,包含光标
X 按一次删除前面一个字符
#X 删除光标之前的#个字符
dd 删除所在行
yw 复制这个单词到缓冲区
#yw 复制#个字符到缓冲区
yy 复制光标所在行到缓冲区
#yy 复制#行
p 粘贴
r 替换所在字符
R 替换所到之处的字符,按下[ESC]停止
u 撤回
ctrl+r 恢复撤回
cw 更改光标所在的字到字尾处
c#w 改#个字
ctrl+g 列出光标所在行号
#G 将光标移至第#行首

末行模式命令集

命令 说明
set nu 标明行号
# 跳转到第#行
/关键字 寻找关键字,按[n]跳转到下一个,从前往后找
?关键字 寻找关键字,按[n]跳转到下一个,从后往前找
w 保存文件
q 退出文件,未保存就退出会报警告
wq 保存并退出

vim的配置

配置文件的位置

在目录/etc/下面,有一个vimrc的文件,是对vim的配置文件,对所有用户有效,在用户主目录下也有(可以创建)个自己的配置文件,

常用配置选项

语法高亮 syntax on

显示行号 set nu

tab缩进空格数 set shiftwidth=4

更多内容可以访问如下开源项目

vim从入门到牛逼

感谢各位的支持,如果你发现文章中有任何不严谨或者需要补充的部分,欢迎在评论区指出

相关推荐
信创DevOps先锋10 分钟前
Gitee:中国开发者生态的数字化转型基石与创新加速器
运维·gitee·devops
Crazy CodeCrafter27 分钟前
房租年年涨,客流年年少,服装店还要开吗?
大数据·运维·微信·自动化·开源软件
淼淼爱喝水31 分钟前
Ansible 配置与环境搭建超全教程(自动化运维基础)
运维·自动化·ansible
xlp666hub38 分钟前
深度剖析Linux Input子系统(2):驱动开发流程与现代 Multi-touch 协议
linux
yj_xqj1 小时前
HAproxy负载均衡集群部署
运维·负载均衡
路由侠内网穿透1 小时前
本地部署开源工作空间工具 AFFiNE 并实现外部访问
运维·服务器·数据库·物联网·开源
zzzsde1 小时前
【Linux】Ext文件系统(1)
linux·运维·服务器
爱学习的小囧1 小时前
ESXi 8.0 无法选择分区方式 小白级详细解决办法
运维·服务器·网络·虚拟化·esxi8.0
F1FJJ1 小时前
什么是 Shield CLI?视频讲解:一条命令,可浏览器远程访问一切内部服务(RDP/VNC/SSH/数据库等)
运维·网络·数据库·网络协议·ssh
WordPress学习笔记1 小时前
wordpress网站上传不了图片可能是文件夹的权限的原因
运维·wordpress·文件夹权限·uploads·wordpress上传错误