vim工具的使用

news2025/1/18 8:22:35

目录

vim的基本模式

vim三种基本模式(命令模式、底行模式、输入模式)

命令模式

vim正常(命令行)模式命令集

插入模式

底行模式

保存&退出

分屏

替换

执行shell指令

vim底行模式命令集

vim配置

配置文件的位置

配置文件的原理

如何配置

解决sudo无法使用的情况

结束语


vim的基本模式

vim 的三种模式 ( 其实有好多模式,前期掌握这 3 种即可 ), 分别是命令模式( command mode) 、插入模式(Insert mode )和底行模式( last line mode ),各模式的功能区分如下:
正常 / 普通 / 命令模式 (Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
插入模式 (Insert mode)
只有在 Insert mode 下,才可以做文字输入,按「 ESC 」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
末行模式 (last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下 shift+: 即可进入该模式。要查看你的所有模式: 打开vim,底行模式直接输入:help vim-modes

vim是一个功能强大的,多模式的 编辑器 

不同的vim可能有不同的数量的模式,大概有十二种左右

vim三种基本模式(命令模式、底行模式、输入模式)

vim 的基本操作小总结
进入 vim, 在系统提示符号输入 vim 及文件名称后,就进入 vim 全屏幕编辑画面 :
$ vim test.c
不过有一点要特别注意,就是你进入 vim 之后,是处于 [ 正常模式 ] ,你要切换到 [ 插入模式 ]才能够输入文字。 正常 / 普通 /命令模式(Normal mode) 叫法不同罢了
[ 正常模式 ] 切换至 [ 插入模式 ]
输入a
输入i
输入o
[ 插入模式 ] 切换至 [ 正常模式 ]
目前处于 [ 插入模式 ] ,就只能一直输入文字,如果发现输错了字 , 想用光标键往回移动,将该字删除,可以先按一下「ESC 」键转到 [ 正常模式 ] 再删除文字。当然,也可以直接删除。
[ 正常模式 ] 切换至 [ 末行模式 ]
shift + ; , 其实就是输入「 :
退出 vim 及保存文件 , [ 正常模式 ] 下,按一下「 : 」冒号键进入「 Last line mode , 例如 :
: w (保存当前文件)
: wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)

命令模式

 

vim正常(命令行)模式命令集

插入模式
按「i」切换进入插入模式「 insert mode 」,按 “i” 进入插入模式后是从光标当前位置开始输入文字;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
从插入模式切换为命令模式
按「 ESC 」键。
移动光标(命令行模式下)
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母
「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格(现在的方向键也可以)
按「G」:移动到文章的最后 -- 注意是大G哦~ 也就是 shift + g(是一个组合键)
按「 $ 」:移动到光标所在行的“行尾”
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l -- 这里的#不是符号,指的是数字
按[gg]:进入到文本开始
按[shift+g]:进入文本末端
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
删除文字
「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行
复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。
注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
撤销上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
「ctrl + r」: 撤销的恢复
更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首
注意事项:这里面有许多键都是组合键!
至于为啥要这些键,去看一下旧式键盘就知道了,以前的键盘是没有我们现在键盘那么多按键的!

 ​​​​​​​

插入模式

没有什么可以说的

底行模式

保存&退出

退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
: w (保存当前文件)

: wq (输入「wq」,存盘并退出vim)
: q! (输入q!,不存盘强制退出vim)
w(write 写入) q(quit 退出) !(强制) 可以互相组合使用!

分屏

 

有意思的是,即使分屏了,也可以执行上面的复制等操作,比如把右边的内容复制到左边文件中去,当新的文件被保存退出的时候在该目录就会存在了,具体参考上述。

替换

 

执行shell指令

 

vim底行模式命令集

        在使用末行模式之前,请记住先按「ESC」键确定已经处于正常模式,再按「:」冒号即可进入末行模式

列出行号
「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
查找字符
「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「n」会往前寻找到您要的关键字为止。 
保存文件
「w」: 在冒号输入字母「w」就可以将文件保存起来
离开vim
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

vim配置

配置文件的位置

        在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。
        而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc” 。例如, /root 目录下,通常已经存在一个.vimrc 文件 , 如果不存在,则创建之。
        切换用户成为自己执行 su ,进入自己的主工作目录 , 执行 cd ~
打开自己目录下的 .vimrc 文件,执行 vim .vimrc

配置文件的原理

 

如果没有配置那么里面啥也没有了,就是一个简单的记事本了

 

 

如何配置

在网上可以找到配置文件,自己慢慢配置即可,这可是一个体力活

 

解决sudo无法使用的情况

 

结束语

驾六龙,乘风而行。行四海,路下之八邦。

                                                        ——曹操《气出唱》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计JAVA基于协同过滤算法的网上招聘系统

[附源码]计算机毕业设计JAVA基于协同过滤算法的网上招聘系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&#xff1a…

【教学类-16-01】20221121《数字卡片9*2》(中班)

作品展示: ​ 打印墨水不够了​ 铅笔描边 ​ 剪开 ​ 每个人是A4 一半的大小 ​ 背景需求: 在数字像素图的基础上,我决定制作1-9的数字卡片,空心数字(华文彩云)涂色,卡片左上角写学号。——…

go使用grpc实现go与go,go与C#相互调用

protoc下载 protoc是protobuf的编译工具,能根据.proto文件生成为各种语言的源文件。 原始的protoc集成了如下语言的转换: cc#javaobjectcphppythonruby 但是没有集成go的转换工具。go的转换工具是在protoc的基础上使用插件的方式运行。 protoc 的下载地…

linux NC命令的本质

NC是一个可以模拟tcp,udp,server,client 的协议, 1-它可以实现两个主机的聊天 server: nc -lp 1234 client : nc 192.168.1.10 1234 以上两个命令就可以实现实时数据传输了,是不是很有意思,但是这个是怎么实现的呢&am…

软考信息安全工程师必会--3000+字文章浅析DES加密算法

目录 前言 什么是DES加密算法 整体流程 IP置换 子密钥K 压缩置换1 循环左移 拓展置换2 拓展置换E S盒代替 S1盒 S2盒 S3盒 S4盒 S5盒 S6盒 S7盒 S8盒 P盒置换 末置换 前言 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS…

flink1.10中三种数据处理方式的连接器说明

第一种 Streaming&#xff08;DataStream API&#xff09; 流式处理的所有的连接器如上图&#xff0c;常用的是kafka、Elasticsearch、Hadoop FileSystem Kafka连接器 依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connec…

2022-11-21 mysql列存储引擎-架构实现缺陷梳理-P1

1. 前言 发现和指出问题为了&#xff1a;更好的解决问题和避免问题的再次发生 项目在演进&#xff0c;代码不停地在堆砌。如果代码的质量一直不被重视&#xff0c;代码总是会往越来越混乱的方向演进。当混乱到一定程度之后&#xff0c;量变引起质变&#xff0c;项目的维护成本…

二叉树和堆

二叉树和堆什么是树树的一些专业术语树的表示二叉树的概念什么是二叉树特殊的二叉树二叉树的性质堆的概念堆的表示方式堆的实现堆的初始化及销毁堆的插入堆的删除堆的判空与获取堆顶元素堆的主要应用堆排序利用堆数据结构建堆利用向上调整算法来建堆利用向下调整算法建堆TopK问…

计算机毕业设计——校园二手市场

一.项目介绍 系统包含 普通用户 和 管理员 两种角色 普通用户 浏览其他用户发布的二手物品&#xff0c;修改个人信息、查看订单&#xff08;买的、卖的&#xff09;、 发布闲置、查看我的闲置、查看我的关注、跳转后台、更改用户名等功能 管理员用户登录 操作用户管理、商品管理…

中学物理教学参考杂志社中学物理教学参考编辑部2022年第21期目录

前沿导航_课改在线《中学物理教学参考》投稿&#xff1a;cn7kantougao163.com 问题导向式学习 提升学生思维品质——以“自由落体运动”教学为例 汪欣; 1-2 物理实验探究式复习模式研究——以“机械能守恒定律”为例 王栋; 3-4 初中物理作业设计类型及其实施策略 马…

阿里8年测试经验,手工测试转变为自动化测试,送给正在迷茫的你

前言 随着软件测试技术的发展&#xff0c;人们已经从最初的纯粹的手工测试转变为手工与自动化测试技术相结合的测试方法。近年来&#xff0c;自动化测试越来越受到人们的重视&#xff0c;对于自动化测试的研究也越来越多。 项目版本功能日趋增加&#xff0c;系统模块越来越多…

2009-2013、2018-2020计算机网络考研408真题

文章目录2009年选择综合应用2010年选择综合应用2011年选择综合应用2012年选择综合应用2009年 选择 在OSI参考模型中&#xff0c;自下而上第一个提供端到端服务的层次是……。 A.数据链路层 B.传输层 C.会话层 D.应用层 考查OSI模型中传输层的功能。 传输层提供应用进程间的逻辑…

3-3、python中内置数据类型(集合和字典)

文章目录集合集合的创建集合的特性集合的常用操作增加删除查看练习-对集合的排序frozenset 不可变的集合字典字典的创建字典的特性字典的常用方法查看增加和修改删除遍历字典 &#xff08;for&#xff09;defaultdict默认字典&#xff08;给字典设置默认值&#xff09;内置数据…

echarts+vue实现柱状图分页显示

非常感谢这篇博客&#xff1a;ECharts柱状图分页显示&#xff08;数据循环&#xff09;_s小布丁的博客-CSDN博客 大家好&#xff0c;我是南宫&#xff0c;很久没有更新博客了。 本文参考了这篇博客里面的思路和分割数据的代码&#xff0c;不过我用的是vue页面&#xff0c;后面…

【Kubernetes系列】工作负载资源之Deployment

文章目录概述Deployment用例创建 DeploymentDeployment 状态更新 Deployment回滚 DeploymentDeployment 规约Pod 模板副本选择算符策略进度期限秒数最短就绪时间修订历史限制paused&#xff08;暂停的&#xff09;概述 Deployment 很适合用来管理你的集群上的无状态应用&#…

数据结构--不定长顺序表

1.不定长顺序表 与定长顺序表相比不定长顺序表的区别在于我们可以通过扩容来进行增添元素的存储单元。 2.结构 是对定长顺序表的一种改进&#xff0c;在初始时开辟内存被利用完后&#xff0c;还要继续插入数据时&#xff0c;这时候据需要扩容。故顺序表的结构设计就要发生变…

BHQ-1羧酸是一种黑暗淬灭剂BHQ-1 acid,1190431-95-8

英文名称&#xff1a;BHQ-1 acid 中文名称&#xff1a;BHQ-1酸 丁酸&#xff0c;4-[[4-[2-[2-甲氧基-5-甲基-4-[2-&#xff08;4-甲基-2-硝基苯基&#xff09;二氮基]苯基]二氮基]苯基]甲氨基]- 分子量&#xff1a;504.55 化学式&#xff1a;C26H28N6O5 CAS&#xff1a;119…

8. 微服务之消息队列RabbitMQ以及五种消息队列模式

8.1 同步调用 即客户端向服务端请求做数据处理&#xff0c;客户端需要一直等待服务端处理直到返回结果给客户端 同步调用存在的问题&#xff1a; 耦合度高&#xff1a;每次加入新的需求&#xff0c;都要修改原来的代码性能下降&#xff1a;调用者需要等待服务提供者响应&…

C++模拟OpenGL库——图形学状态机接口封装(二):基于状态机接口的画线画三角形

目录 画线操作 画三角形操作 按区间取点来进行绘制 加入纹理 画线操作 上次我们定义了一系列状态机接口&#xff0c;并遗留了&#xff1a; void Canvas::gtDrawArray(DRAW_MODE _mode, int _first, int _count) 没有去实现&#xff0c;这次对他进行一个实现&#xff0c;…

计算机网络-传输层(TCP协议特点和TCP报文段格式,TCP连接管理)

文章目录1. TCP协议特点&#xff0c;报文段格式2. TCP连接管理1. TCP协议特点&#xff0c;报文段格式 TCP是面向连接&#xff08;虚连接&#xff09;的传输层协议每一条TCP连接只能有两个端点&#xff0c;每一条TCP连接只能是点对点的。TCP提供可靠交付的服务&#xff0c;无差…