【Linux】编辑器——vim(最小集+指令集+自动化配置)

news2024/10/6 4:03:55

目录

1.vim最小集

1.1 vim的三种模式

1.2 vim的基本操作

2.vim指令集

2.1 命令模式指令集

移动光标

删除文字

复制

替换

撤销上一次操作

更改

跳至指定的行

2.2 底行模式指令集

列出行号

跳到文件中的某一行

查找字符

保存文件

多文件操作

3.如何配置vim

配置文件的位置

常用配置选项

自动化配置


Linux中有这样两款编辑器 vi、vim。它们都是多模式编辑器,主要区别在于vim是vi的升级版。它不仅兼容vi的所有指令,而且还有一些新的特性在里面。

1.vim最小集

1.1 vim的三种模式

vim作为多模式编辑器,有多种不同的模式,在这里我们主要介绍 3 种模式,分别是命令模式、插入模式、底行模式。各模式所具有的功能如下:

命令模式

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入底行模式下,或者进入到插入模式下。

插入模式

只有在插入模式下,才可以做内容输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

底行模式

文件保存或退出,也可以进行文件替换,查找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。若要查看你的所有模式:打开vim,在底行模式直接输入help vim-modes。

1.2 vim的基本操作

① 如何启动 vim?

vim + 文件名

 注意:启动 vim 后,默认在命令模式,需要切换插入模式才能输入内容。

 ② 「命令模式」切换至 「插入模式」

在命令模式下输入:

i:当前光标位置不变,进入插入模式;

a:光标从当前位置自动向后移动一位,进入插入模式;

o:从当前光标所在行向下另起一行,进入插入模式。

当左下角出现 INSERT 的字样时,证明处于插入模式。

③「插入模式」 切换至  「命令模式」

「ESC」即可。

④ 「命令模式」切换至 「底行模式」

shift + ; (其实就是 :)

⑤如何退出 vim?

在底行模式下

输入 w :保存当前文件;

输入 wq:保存并退出;

输入:q! :不保存,强制退出。

2.vim指令集

2.1 命令模式指令集

移动光标

▧ 小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格;

▧ 「 $ 」:移动到光标所在行的“行尾”;

▧ 「^」:移动到光标所在行的“行首”;

▧ 「w」:光标跳到下个单词的开头;

▧ 「e」:光标跳到下个单词的字尾;

▧ 「b」:光标回到上个单词的开头;

▧ 「nl」:光标移到该行的第n个位置,如:5l,56l;

▧ [gg]:进入到文本开始;

▧ 「G」:移动到文章的最后;

▧ [shift+g]:进入文本末端;

▧ 「ctrl」+「b」:屏幕往“后”移动一页;

▧ 「ctrl」+「f」:屏幕往“前”移动一页;

▧ 「ctrl」+「u」:屏幕往“后”移动半页;

▧ 「ctrl」+「d」:屏幕往“前”移动半页;

删除文字

▧ 「x」:每按一次,删除光标所在位置的一个字符; 

▧ 「nx」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符;

▧ 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符

▧ 「nX」:例如,「20X」表示删除光标所在位置的“前面”20个字符

▧ 「dd」:删除光标所在行;

▧ 「ndd」:从光标所在行开始删除n行;

复制

▧ 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

▧ 「nyw」:复制n个字到缓冲区

▧ 「yy」:复制光标所在行到缓冲区。

▧ 「nyy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

▧ 「p」:将缓冲区内的字符贴到光标所在位置。

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

替换

▧ 「r」:替换光标所在处的字符。

▧ 「R」:持续替换光标所到之处的字符,直到按下「ESC」键为止。

撤销上一次操作

▧ 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。

▧ 「ctrl + r」: 对撤销进行恢复

更改

▧ 「cw」:更改光标所在处的字到字尾处

▧ 「cnw」:例如,「c3w」表示更改3个字

跳至指定的行

▧ 「ctrl」+「g」:列出光标所在行的行号。

▧ 「nG」:例如,「15G」,表示移动光标至文章的第15行行首

2.2 底行模式指令集

在命令模式下输入「:」进入底行模式。

列出行号

▧ 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

跳到文件中的某一行

▧ 「n」:n表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。

查找字符

▧ 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

▧ 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。

保存文件

▧ 「w」: 在冒号输入字母「w」就可以将文件保存起来离开vim

▧ 「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。

▧ 「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

多文件操作

▧ 「vs filename」分屏打开并编辑另一个文件filename;

▧ 「ctrl ww」切换光标到另一个文件。

3.如何配置vim

原生的vim操作手感以及视图在使用时略显不适,我们可以通过vim配置文件对vim进行美化。美化的作用如同将记事本配置为Visual Studio 2022,可以为我们书写代码提供很好的体验。

配置文件的位置

▞  在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。

▞  而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。

▞  切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~

▞  打开自己目录下的.vimrc文件,执行vim .vimrc

常用配置选项

▞  设置语法高亮: syntax on;

▞  显示行号: set nu;

▞  设置缩进的空格数为4: set shiftwidth=4;

...

此处不过多介绍,可自行搜索。我的建议是。手动配置既耗费时间精力又容易遇到各种各样的问题,所以我比较推荐自动化配置。

自动化配置

▞  自动化配置只需要输入一条指令即可,有需要的小伙伴直接私信即可,随时都在。

▞  如图为自动化配置vim后的页面: 

 

 

 

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

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

相关文章

网络编程之TCP 的介绍

TCP 的介绍学习目标能够说出TCP 的特点1. 网络应用程序之间的通信流程之前我们学习了 IP 地址和端口号,通过 IP 地址能够找到对应的设备,然后再通过端口号找到对应的端口,再通过端口把数据传输给应用程序,这里要注意,数…

科技 “新贵”ChatGPT 缘何 “昙花一现” ,仅低代码风靡至今

恍惚之间,ChatGPT红遍全网,元宇宙沉入深海…… 在科技圈,见证了太多“昙花一现”,“新贵” ChatGPT 的爆火几乎复制了元宇宙的路径,它会步元宇宙的后尘,成为下一个沉入深海的工具吗? 不可否认的…

小程序开发注意点

1.组件样式隔离注意点 2.methods方法 3.自定义组件的properties参数 4.自定义组件的事件监听 5.纯数据字段 6.插槽 单个插槽 启用多插槽 使用多个插槽 7.属性绑定实现父传子功能 例如在这里有一个组件为<one></one>&#xff0c;那么可以在组件当中传入参数 &l…

iOS上架及证书最新创建流程

目前使用uniapp框架开发app&#xff0c;大大节省了我们兼容多端应用的工作量和人手&#xff0c;所以目前非常缺乏ios上架和证书创建流程流程的文档假如你没有任何的打包或上架经验&#xff0c;参考本文有很大的收益。通常申请ios证书和上架ipa应用&#xff0c;是需要MAC电脑的&…

干货复试详细教程——从联系导师→自我介绍的复试教程

文章目录联系导师联系之前的准备联系导师注意自我介绍教育技术领域通用的复试准备其他补充联系导师 确定出分和自己能进复试以后联系。 分两类 科研技能型 低调&#xff0c;如实介绍&#xff0c;不吹不水。就算你很牛啥都会手握核心期刊论文也不太狂 学霸高分型 不要自卑&…

审计syslog设备活动

从交换机到路由器&#xff0c;几乎所有网络设备都会生成syslog。因为您的网络中有大量生成syslog的设备&#xff0c;所以审计过程&#xff08;包括跟踪、监控和分析所有syslog&#xff09;需要花费大量时间和精力。但是&#xff0c;无论这些任务需要多少精力去完成&#xff0c;…

Java:Java与Python — 编码大战

Java和Python是目前市场上最热门的两种编程语言&#xff0c;因为它们具有通用性、高效性和自动化能力。两种语言都有各自的优点和缺点&#xff0c;但主要区别在于Java 是静态类型的&#xff0c;Python是动态类型的。它们有相似之处&#xff0c;因为它们都采用了“一切都是对象”…

3、Maven安装

前言&#xff1a;工具下载地址阿里云盘&#xff1a;Maven&#xff1a;https://www.aliyundrive.com/s/SgHKjQ5doSp提取码: ml40一、什么是maven?Apache Maven是个项目管理和自动构建工具&#xff0c;基于项目对象模型&#xff08;POM&#xff09;的概念。作用&#xff1a;完成…

小白都能看懂的C语言入门教程

文章目录C语言入门教程1. 第一个C语言程序HelloWorld2. C语言的数据类型3. 常量变量的使用4. 自定义标识符#define5. 枚举的使用6. 字符串和转义字符7. 判断和循环8. 函数9. 数组的使用10. 操作符的使用11. 结构体12. 指针的简单使用C语言入门教程 1. 第一个C语言程序HelloWor…

Could not find resource jdbc.properties问题的解决

以如下开头的内容&#xff1a; Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in SQL Mapper Configuration 出现以上问题是没有在src/main/resources下创建jdbc.prop…

IDEA怎么自动生成serialVersionUID

序列化和反序列化Java是面向对象的语言&#xff0c;与其他语言进行交互&#xff08;比如与前端js进行http通信&#xff09;&#xff0c;需要把对象转化成一种通用的格式比如json&#xff08;前端显然不认识Java对象&#xff09;&#xff0c;从对象到json字符串的转换&#xff0…

CF707C Pythagorean Triples 题解

CF707C Pythagorean Triples 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2样例 #3样例输入 #3样例输出 #3样例 #4样例输入 #4样例输出 #4样例 #5样例输入 #5样例输出 #5提示思路代码实现题目 链接 http…

深度卷积对抗神经网络 进阶 第一部分 GANs 在数据增强和隐私领域的应用 GANs for Data Augmentation and Privacy

深度卷积对抗神经网络 进阶 第一部分 GANs 在数据增强和隐私领域的应用 GANs for Data Augmentation and Privacy GANs可以创造性地生成数据&#xff0c;这样就可以用在数据增强领域&#xff0c;在某些缺乏数据的行业认为地添加数据。此外&#xff0c;生成的数据如果用于神经网…

365天深度学习训练营-第J3周:DenseNet算法实战与解析

目录 一、前言 二、论文解读 1、DenseNet的优势 2、设计理念 3、网络结构 4、与其他算法进行对比 三、代码复现 1、使用Pytorch实现DenseNet 2、使用Tensorflow实现DenseNet网络 四、分析总结 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习…

如何使用 ESP-PROG 板的 Program 接口为 ESP32-S3-WROOM-1 系列的模组烧录固件?

ESP-PROG 是一款乐鑫推出的开发调试工具&#xff0c;具有自动下载固件、串口通信、JTAG 在线调试等功能。具体使用说明参见&#xff1a;ESP-Prog 下载与调试板介绍 。 ESP-Prog 采用 FTDI 公司的 FT2232HL 为 USB Bridge Controller 芯片&#xff0c;可通过配置将 USB 2.0 接口…

嵌入式开发:如何将嵌入式代码库从C转换为C++?

几十年来&#xff0c;嵌入式软件工程师们一直在争论是否应该使用C替代C语言进行开发工作。56%的嵌入式软件是用C语言编写的。然而&#xff0c;C已经逐渐普及&#xff0c;大约23%的新嵌入式软件项目都是用C编写的。那么&#xff0c;嵌入式开发人员要如何将嵌入式代码库从C转换为…

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计

随着高科技技术在现代化战争中日益重要作用&#xff0c;飞行装备的研制亦从单元体制发展 到多元体制。航空装置系统在设计过程中&#xff0c;需要大量测试工作&#xff0c;尤其是需要把系统研制 和飞行试验中各部分工作状态参数实时记录&#xff0c;用以分析、改进设计。记录仪…

006 金融工具库funcat安装教程及异常处理

funcat库集合了同花顺、通达信等的常用公式&#xff0c;安装后可以直接使用公式制定策略。 funcat常用公式可参考github说明&#xff1a;GitHub - cedricporter/funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。 常见异常&#xff1a; 使用…

干货解答:如何设置Facebook Messenger 自动回复?

Facebook Messenger 自动回复消息是提升客户体验的有效方法。在本文中&#xff0c;我们将探讨设置Facebook 自动响应和不同的创建方法 Facebook 自动回复。另外&#xff0c;我们准备了一些最受欢迎的 Facebook Messenger 自动回复消息。Facebook Messenger 自动回复&#xff1a…

Kafka消费分组和分区分配策略

Kafka消费分组&#xff0c;消息消费原理 同一个消费组里的消费者不能消费同一个分区&#xff0c;不同消费组的消费组可以消费同一个分区 &#xff08;即同一个消费组里面的消费者只能在一个分区中&#xff09; Kafka分区分配策略 问题 用过 Kafka 的同学用过都知道&#xf…