【Linux】编辑器 - vim 的使用与配置

news2024/11/23 21:23:09

目录

1、vim的基本概念

2、vim的基本操作

2.1、vim 编辑器的进入与退出

2.2、插入模式

2.3、命令模式

2.4、底行模式

3、vim的配置

3.1、自定义配置

3.2、自动化配置


vim 的前身是 vi,vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

1、vim的基本概念

vim 不是一款集成开发程序,单纯只是一个多模式的 编辑器 。在 Linux 上一般使用 vim 来写代码,使用 gcc 来编译,使用 gdb 调试,工具与工具之间互相独立。

vim 的模式有很多种,其中最常用的三种模式,分别为命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode):

  1. 命令模式(Normal mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段以及进入 插入模式 或者 末行模式 下。
  2. 插入模式(Insert mode):只有在 插入模式 下,才可以做文字输入,按「ESC」键可回到命令模式。该模式是我们后面用的最频繁的编辑模式。
  3. 底行模式(last line mode):文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,按下 shift+: 即可进入该模式。要查看你的所有模式:打开 vim,底行模式直接输入 :help vim-modes

三种模式转换关系如下图所示: 

2、vim的基本操作

2.1、vim 编辑器的进入与退出

我们使用 vim 时,可以先使用 touch 指令创建一个文本文件,再使用 vim [文件名] 对其编辑,也可以直接使用 vim[文件名] ,系统会自动创建一个文本文件并命名为指定名字。

[root@iZuf69tfiox41j76yf0416Z lesson6]# ll
total 0
[root@iZuf69tfiox41j76yf0416Z lesson6]# touch test.c
[root@iZuf69tfiox41j76yf0416Z lesson6]# vim test.c

按下 enter 后,会进入 vim 编辑界面,默认模式为 命令模式 。我们按下 shift+: 进入底行模式,输入 q 可直接退出 vim 编辑器,此时我们编辑过的内容不会被保存,输入 wq 退出 vim 编辑器时,内容才会被保存。

2.2、插入模式

我们进入到 vim 编辑器,默认为 命令模式,可以发现我们在键盘上敲击字符,编辑器不会产生任何变化,这是因为只有在 插入模式 下,才可以做文字输入。在 命令模式 下键入字符 i ,可以切换到 插入模式。此时我们就可以进行文本编辑。

 注意:编辑完成之后,我们要先按下 ESC 键回到 命令模式,才能退出 vim 编辑器。在 命令模式 下按下shift+: 进入 底行模式 ,输入 wq 保存并退出 vim 编辑器。

这时我们打印文件 test.c 可以看到文本已经被编辑了。

补充内容:

  1. 如果你不知道自己在什么模式下,直接按下 ESC 键,就能保证此时自己一定处于 命令模式下。
  2. 退出的时候,我们一般都是先保存再退出,即在 底行模式 下输入 wq 
  3. 按下 a 或者 o 也可以进入插入模式。

2.3、命令模式

我们进入到 vim 编辑器,默认为 命令模式。为了方便观察,我们先按下 shift+进入 底行模式 ,输入 set nu 显示行号(set nonu 去掉行号)。再按下 ESC 键回到命令模式。

接下来介绍几个在 命令模式 下的指令:

  • yy/nyy:复制当前行或者包括当前在内的往下 n 行内容
  • dd/ndd:剪切(也可以当作删除使用)当前行或者包括当前在内的往下 n 行内容
  • p/np:粘贴一行或者 n 行相同的内容到当前光标所在行之下
  • u:撤销刚刚的操作
  • Ctrl+r:对撤销操作进行撤销
  • shift+g / G:将光标定位到文档结尾
  • n shift+g / n G:将光标定位到第 n 行
  • gg:将光标定位到文档开头
  • $:将光标定位到该行的结尾
  • ^:将光标定位到该行的开头
  • w/nw:将光标按照单词为单位相右移动一个单位或者 n 个单位
  • b/nb:将光标按照单词为单位相左移动一个单位或者 n 个单位
  • shift + ~:快速对光标所在位置的字符进行大小写切换
  • r /nr :将光标所在位置的一个字符或者向后的 n 个字符替换成指定字符
  • x/nx:将光标所在位置的一个字符或者向后的 n 个字符删除
  • X/nX:将光标所在位置的前一个字符或者向前的 n 个字符删除
  • h/j/k/l:分别将光标向 左/下/上/右 移动一个字符

同学们一定要自己动手操作一遍。

2.4、底行模式

我们进入到 vim 编辑器,默认为 命令模式。按下 shift+: 可以进入到底行模式,我们来介绍 底行模式下 的几个指令。

  • set nu:显示行号
  • set nonu:去掉行号
  • /字符串:搜索指定字符串,并把它们高亮标出
  • wq:保存退出 vim 编辑器
  • wq!:保存强制退出 vim 编辑器
  • q:直接退出 vim 编辑器
  • q!:直接强制退出 vim 编辑器
  • ![指令] :切换到 vim 编辑器外并执行指定指令,并不退出 vim 编辑器
  • %s/字符串A/字符串B/g:将 指定字符串A 全部替换成 指定字符串B
  • vs [文件名]:在 vim 编辑器中创建一个新的文件为之命名,并分屏显示
  • Ctrl+ww:在分屏的 vim 编辑器中来回切换,光标在哪一个分屏,操作的就是哪一个分屏中的文件

 注意:在 vim 中,除了用鼠标复制粘贴外,不要用鼠标操作。

3、vim的配置

3.1、自定义配置

vim 在启动的时候,会自动在当前用户的家目录下寻找配置文件,如果没有,就是默认配置。

我们自己在家目录下创建一个文件,命名为 .vimrc ,这个文件就是 vim 启动时会寻找的配置文件。一个用户,一个 vim 配置,我们作为当前用户所做的配置,不会影响到其他用户。

我们使用 vim 对文件 .vimrc 进行编辑:

[ljb@iZuf69tfiox41j76yf0416Z ~]$ vim .vimrc

在文本中输入 set nu :

 保存退出之后,我们使用 vim 编辑器打开之前编辑过的文件 test.c :

可以看到文本内容已经默认带上行号了

我们再使用 vim 打开文件 .vimrc ,把我们刚刚添加的一行代码 set su 删除掉,保存退出。

再使用 vim 编辑器打开文件 test.c:

 此时文本内容已经不再自带行号了。

由此我们可知,对于 vim 编辑器的配置,是即时生效的!

这里仅仅是方便大家理解 vim 配置所进行的一个小小的操作,如果大家以后需要进行一些复杂的配置,可以直接去网上搜索,复制粘贴到我们自己的配置文件里就可以了。

3.2、自动化配置

如果不想自己费时费力去配置 vim 的话,也很简单,这里有一份自动配置方案,只不过只适用于  centos 7 版本,大家点击该链接就可以进行跳转。

往下翻,找到安装方法:

 把这段链接直接复制到我们的 Linux 终端,按下 enter 。

 输入 root 的密码,接下来就不用我们操作了,系统会自动进行 vim 配置,配置完成之后,按照提示的操作进行清理缓存,就可以直接使用了。

 以下是配置好之后的 vim 编辑器:


 以上就是 Linux 编辑器 vim 的基本知识,希望同学们多多支持,如果有不对的地方希望大佬指正,谢谢!

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

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

相关文章

Java对时间的处理

Date用的最多这里主要介绍该类。java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。 package com.company; import java.util.Date;public class Main {public static void main(String[] args) {// write your code hereSyste…

阿里云Docker仓库操作

为什么用阿里云docker有自己的仓库服务器,但是对没掏钱的(白嫖)用户并不是那么友好,有两个很大的限制:免费用户,在6个月之内如果没有任何操作,将会被自动删除,真的很糟糕啊。匿名用户…

港科夜闻|广州市花都区与香港科大(广州)合作建设科研智库,发展AI智慧农业...

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、广州市花都区与香港科大(广州)合作建设科研智库,发展AI智慧农业。1月8日,广州市花都区人民政府和香港科大(广州)在广州举行签约仪式,根据协议,香港科大(广州)和花都区人民政府…

JS案例:接口加解密与防重放

目录 前言 功能设计 客户端的功能点(client) 服务端的功能点(server) 功能实现 工具函数 client.js(客户端) server.js(服务端) 实现效果 写在最后 前言 在网络通信中&am…

远程会计人员如何通过数字工作流程完成工作

远程会计人员如何通过数字工作流程完成工作 当大多数员工居家办公时,会计部门通常会敏锐地感受到挑战。如果您的组织开始数字化转型或只迈出了第一步,您会发文档管理系统现在已成为必备品,而不是可有可无的。现在是时候实施数字工作流程&…

论文投稿指南——中文核心期刊推荐(地理学)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

Mysql操作指令

Mysql操作指令 创建数据库 下面写具体案列一步步学 这里基本上线在sqlyog里面写sql,因为关于java程序和mysql数据库的连接还没有学 图形化操作数据库之前的可视化有 这里只讲指令凑在哦 注意 默认创建库 用uft8字符集,校对规则的uf8_general_ci不区分大…

< Linux >:环境变量

目录 环境变量 常见的环境变量 基本概念 查看环境变量内容的方法 测试环境变量PATH 与环境变量相关的命令 Linux操作系统下C/C程序代码中获取环境变量的方式 环境变量的组织方式 环境变量通常具有全局属性 环境变量 问题: 注意:可执行程序 等价于 命令/指…

Flutter 开发一个自己的 package(纯Dart)并提交到pub.dev上

小提示第一步:创建一个 package第二步:实现我们的package第三步:发布到 pub.dev 上。END发布的准备工作小提示 Flutter 轮子库。本文是为大家讲述怎么自己写个轮子发布到到上面。 https://pub.flutter-io.cn/packages 第一步:创建…

P2P僵尸网络-家族类别

Pink Pink 家族曾在中国境内感染了超过百万级的设备,其非实效性指令通过 P2P 传递,实效性强的指令通过集中控制的方式发布。是一个设计巧妙的 P2P 僵尸网络家族 Pink 僵尸网络概述 Pink 主要针对基于 mips 的光纤路由器,并且具有非常强大的和…

如何使用人力资源软件识别保留优秀员工

在企业信息化的时代,越来越多的年轻员工开始追求他们的激情,辞掉那些乏味的工作,而选择加入重视员工生活质量的企业。他们不再追随那些以牺牲员工福利为代价追求利润的公司。 员工认可度有助于加强组织中的团队合作关系,反过来&a…

VS 17.5 预览版2:/Gw链接开关的标准一致性改进

/Gw 链接开关可以告诉链接器优化代码中的全局数据,从而减小最终生成的二进制文件的大小。在 Visual Studio 17.5 预览版2中,我们新增了一个新的标志:/Zc:checkGwOdr[-] ,目的是在使用 /Gw 开关的时候改进对 C 标准的一致性支持。 …

表情包也能用 AI 生成?如何借助 AIGC 自定义专属表情包 #Memix

随着我们越来越离不开社交媒体,表情包也已经成为我们日常生活中的必备单品。有着个人鲜明风格的「表情包」,不仅是独特的「社交名片」,也能给人留下耳目一新的印象!谁的收藏夹里没有一堆私藏表情包呢!Memix借助 AI 技术…

画中画怎么制作?教你如何录制画中画视频,图文教学

很多小伙伴在录制视频的时候,都需要录制摄像头,以画中画的方式放置在视频当中。在网上眼花缭乱的录屏软件里,有不少的录屏软件是无法做到画中画视频的。画中画怎么制作?今天小编分享2个录制画中画视频的方法,一起来看看…

实心球状CdSe/ZnS/硫量子点QD-AFP-Ab/CPV VLP标记抗体/蛋白的制备方法与电镜表征

实心球状CdSe/ZnS/硫量子点QD-AFP-Ab/CPV VLP标记抗体/蛋白的制备方法与电镜表征 今天小编分享量子点标记蛋白,一起看看吧: 量子点标记蛋白的制备过程: 将纯化后的 CPV-VP2蛋白溶液(测定OD2802.0,蛋白浓度为2mg/ml)和…

CTK Plugin Framework插件框架学习--CTK服务工厂

一、前言 注册服务的时候能够用服务工厂来注册; 访问服务getServeice中的plugin参数是执行ctkPluginContext::getService(const ctkServiceReference&)的插件,从而工厂根据执行的不同插件名称返回不同的服务实现 服务工厂的作用 在服务中可以知道…

华为NAT实验配置

路由器基础配置 AR2 int g0/0/3 ip add 192.168.10.254 24 int g0/0/2 ip add 192.168.20.254 24 int g4/0/0 ip add 192.168.30.254 24 int g0/0/1 ip add 10.0.23.2 24 int g0/0/0 ip add 10.0.12.2 24 ip route-static 192.168.11.0 24 10.0.12.1 ip route-static 192.168.2…

2022年中国数据库排行榜年终盘点-墨天轮

深山虎啸雄风在,绿野兔奔好景来。 崭新的2023年已经到来,在2022年里,国产数据库行业发生了翻天覆地的变化,投融资此起彼伏,国产化替代进程加速,国产数据库行业发展的如火如荼。墨天轮12期中国数据库排行榜解…

Python验证中心极限定理

中心极限定理 中心极限定理提出了:无论总体服从什么分布,只要n充分大,那么样本均值分布就接近正态分布。 样本的数量越大,取样次数越多,样本平均值的分布也就越接近于一条正态分布曲线。普遍的经验是,样本…

redis 5种数据结构适用场景

网上介绍太笼统了,呕心沥血整理出来的可理解的适用场景,查看下图redis-cli指令大全:点击查看redis指令Redis支持5种数据类型:string(字符串)hash(哈希)list(列表&#xf…