Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作

vim简介、配置方案、常用模式的基本操作

本章思维导图:
在这里插入图片描述注:本章思维导图对应的xmind.png文件都已同步导入至资源

1. vim简介

vim是Linux常用的文本编辑器,每个Linux账户都独有一个vim编辑器

本篇我们介绍vim最常用的三种模式:命令模式(command mode)、底行模式(last line mode)、插入模式(insert mode)

1.1 命令模式

  • 每次打开vim编辑器,默认进入的就是命令行模式
    在这里插入图片描述
    在这里插入图片描述

  • 命令行模式下无法在打开的文件里插入任何数据只能执行对应的指令

1.2 底行模式

  • 底行模式由命令模式进入

    进入方法:命令模式下输入:冒号:,即shift + ;

在这里插入图片描述

  • 底行模式下同样不能向打开的文件进行写操作,只能执行对应的底行命令
  • 如果要从底行模式退出,按Esc键即可。且退出到命令模式

1.3 插入模式

  • 插入模式由命令模式进入

    进入方法:命令模式下输入:i或者s或者a

    • i:表示从光标所在位置进行插入
    • a:表示从光标的下一个位置进行插入
    • s:表示,删除光标所在字符,再从光标位置进行插入

在这里插入图片描述

  • 只有在插入模式下才可以对打开的文件进行写操作,即编写程序
  • 如果要从插入模式退出,按Esc键即可。且退出到命令模式

1.4 命令模式、底行模式和插入模式的进出关系

在这里插入图片描述

  • 可以看出,命令模式是核心模式,它既可以进入插入模式,也可以进入底行模式
  • 插入模式和底行模式都可以退出到命令模式
  • 插入模式和底行模式不可以直接转换,必须先进入命令模式,再执行对应的命令进入

2. vim的配置

在这里插入图片描述

我们先用上面展示的vim编辑器写一段简单的展示代码:

在这里插入图片描述

可以看到,默认的Linuxvim编辑器有两大致命缺陷:

  • 界面太过简单,可以说是简陋
  • 编写程序时没有基本的自动缩进、高亮、自动补齐等许多Windos编译器都有的功能,使得用起来极度不方便

2.1 .vimrc 隐藏文件

针对上述问题,Linux允许我们修改vim的配置信息,是其具有更加丰富的功能。而vim编辑器进行修改的信息,就会放在.vimrc这个隐藏文件中

  • root账户中,.vimrc这个隐藏文件默认就在root账户的家目录下:

    在这里插入图片描述

  • 而在普通账户中,.vimrc文件不会被默认创建,需要自己手动创建:

    在这里插入图片描述

2.2 配置vim编辑器的方法

一种方法是下载插件,但这种方法较为复杂,这里不做介绍,感兴趣的小伙伴可以上网查阅

还有一种方法就是直接向.vimrc文件写入指定内容,从而让vim编辑器具备某种指定的功能

  • 例如,我们现象.vimrc文件中输入

    set number 		显示行号
    

    再次打开vim编辑器,其页面就会变为:

在这里插入图片描述

  • 这样,如果想要让自己的vim编辑器具有某种功能,只需要在.vimrc文件中输入对应的指令就可以了

当然了,如果想要一条条的向.vimrc文件输入各种指令最终实现自己预想的美观的vim编辑器,这个过程肯定是费时且费力的。因此,博主已经为大家准备好了一个较为美观的.vimrc配置文件。先来看看效果:

在这里插入图片描述

如果大家想要使用这个配置方案,直接执行下面的命令即可:

sudo yum install -y curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

注:

  • 如果所在的普通账户无法使用sudo指令,请移步Linux——手把手教你解决sudo指令无法使用的问题查看具体解决方案
  • 本配置方案只适用于CentOs系统
  • 最好不要root账号下下载

3. vim常用模式的基本操作

在这里插入图片描述

3.1 命令模式

3.1.1 快速移动光标

  • $shift + 4:将光标快速移动到所在行的最右侧
  • ^shift + 6:将光标快速移动到所在行的最左侧
  • Gshift + g:将光标快速移动到文本的结束位置(最后一个字符)
  • gg:将光标快速移动到文本的开始位置(第一个字符)

3.1.2 移动光标

可以用小键盘的⬆、⬇、⬅、➡将光标移动到对应的位置。

但是在Linux中,更推荐用h, j, k, l这四个字母来移动光标

  • h:即将光标向左移动一个字符
  • j:即将光标向下移动一个字符
  • k:即将光标向上移用一个字符
  • l:即将光标向右移动一个字符

实际上还有其他移动光标的方式,例如:

  • w:以字母为单位,将光标向右移动
  • b:以字母为单位,将光标向左移动

3.1.3 复制与粘贴

可以用相关命令对文本的一行或者多行执行复制粘贴操作:

  • (n)yy:赋值当前(n)行
  • (n)p:在光标所在行的下面粘贴(n行)

3.1.4 撤回与取消撤回

  • u:取消上一步执行的操作
  • Ctrl + r:取消上一次的撤回操作

3.1.5 删除行

ndd:删除当前所在的(n)行

3.1.6 字符处理

替换字符:

  • (n)~:将光标后面的(n个)字符,大小变小写,小写变大写

  • (n)r 输入:将光标后面的(n个)字符全部替换为输入的字符

  • shift + r:进入替换模式,此时光标所在的字符被替换为输入的字符

删除字符:

  • (n)x:删除光标所在(n个)字符(向后删除)
  • (n) + shift + x:删除光标所在(n个)字符(向前删除)

3.1.7 批量化注释和去注释

批量化注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被注释的区域
  3. 第三步:shift + i
  4. 第四步://
  5. 第五步:Esc

批量化去注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被去注释的区域
  3. 第三步:d

3.1.8 多窗口之间的切换

Ctrl + ww

3.2 底行模式

保存与退出:

  • q(!):(强制)退出
  • w(!):(强制)保存
  • wq(!):(强制)保存并推出

在不退出vim编辑器的情况下使用shell命令:

! 命令

新建或者打开文件,并新开一个窗口:

vs filename

3.3 处理vim打开文件报错的情况

如果我们在用vim编辑器处理文件时错误的退出当前的编辑(例如直接关闭云服务器或者虚拟机),那么再次用vim打开相同的文件时,就会出现如下报错信息:

在这里插入图片描述

我们按如下的步骤解决:

  • 第一步:选择R(ecover)选项,即输入字符e,之后会进入vim编辑器,直接进入底行模式正常退出即可

  • 第二步:继续用vim打开该文件,此时同样会弹出相同的报错信息,这次选择(D)elele it选项,即输入字符d,之后就会进入vim编辑器,此时问题已经得到解决,可以正常进行编写代码了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6可靠的局域网组建

前面聊的拓扑结构都比较简单,所以能用,但是未必可靠。为了可靠,我们需要做冗余,同时需要做一些其他的配置。 生成树协议STP 假设交换机按照上面的方案连,虽然可以提高网络可靠性,但是因为形成了环路&#…

谈谈越来越无效的拥塞控制

简单看一个图: 它不是互联网本身,但这是典型网络的必要组件,它决定了 flow 如何从从一边流向另一边:一条 flow 经过交换节点通过 NIC 被导入一条链路前在 buffer 中排队。 现如今大多数工程师的工作都在折腾那个单独的盒子&…

Django(复习篇)

项目创建 1. 虚拟环境 python -m venv my_env ​ cd my_env activate/deactivate ​ pip install django ​2. 项目和app创建 cd mypros django-admin startproject Pro1 django-admin startapp app1 ​3. settings配置INSTALLED_APPS【app1"】TEMPLATES【 DIRS: [os.pat…

双11终极官方战报 凯迪仕智能锁全网全渠道第一 持续领跑智能锁行业

一年一度双11狂欢盛典暂时落下帷幕,作为下半年最大的电商购物节,本次双11电商平台借机推出优惠券、补贴、折扣等促销活动,激发消费者购物热情。其中,智能门锁等智能家居产品更是取得了亮眼的成交。 据悉,凯迪仕智能锁双…

【Linux】 mdir命令使用

mdir 为mtools工具指令,模拟MS-DOS的dir指令,可显示MS-DOS文件系统中的目录内容。 语法 mdir [参数][目录] mdir命令 -Linux手册页 命令选项及作用 执行令 mdir--help 执行命令结果 参数 -a  显示隐藏文件。-f  不显示磁盘所剩余的可用空间。-w…

【C语言】函数的系统化精讲(三)

文章目录 一、递归举例二、递归举例2.1求n的阶乘2.2 顺序打印⼀个整数的每⼀位 三、递归与迭代3.1递归的思考3.2求第n个斐波那契数 总结 一、递归举例 .通过上回(【C语言】函数的系统化精讲(二))我们了解到递归的限制条件&#x…

Java终端模式小尝试

Java终端模式小尝试 1、IDE中终端1.1 拉去代码 jediterm1.2 IDE调用系统终端 2、待续~~ 1、IDE中终端 终端_Intellij IDEA、Terminal emulator | pycharm Documentation JetBrains jediterm WindTerm:新一代开源免费的终端工具,GitHub星标6.6k&#xff…

冒泡排序

贵阳这个地方的天气变化好大呀,前两天晒大太阳,今天就冷的脚抖,简直不要太冷,但是不管怎么样,还是要学习的哟! 冬天来了,春天确实还有一点远! 好了,话不多说,…

linux_day03

1、复习 遇到虚拟机异常退出,会生成配置文件,不确定文件以后是不是还要用的情况下,先改文件名,再启动虚拟机; 2、磁盘相关命令: df(disk full):查看磁盘整体状况 -h &…

ztree结合hmap使用经验分享

项目背景 在建德封控拦截系统(Vue3antd2.x)为追求更快的地图初始化体验,在尝试了hmap2.5.0版本以及2.6.3版本后,由于这两个版本在现场电脑的初始化速度不够流畅,最终使用的是hmap2.1.3版本。同时由于布控选设备&#…

2023年【起重机械指挥】考试试卷及起重机械指挥操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 2023年起重机械指挥考试试卷为正在备考起重机械指挥操作证的学员准备的理论考试专题,每个月更新的起重机械指挥操作证考试祝您顺利通过起重机械指挥考试。 1、【多选题】《中华人民共和国特种设备安全法》…

在CMake中打印日志信息

message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...) (无) :重要消息 STATUS :非重要消息 WARNING:CMake 警告, 会继续执行 AUTHOR_WARNING:CMake 警告 (dev), 会继续执行 SEN…

【hacker送书第一期】嵌入式虚拟化技术与应用

第一期图书推荐 前言为什么嵌入式系统需要虚拟化技术?专家推荐本书适用群体内容简介目录权威作者团队参与方式 前言 随着物联网设备的爆炸式增长和万物互联应用的快速发展,虚拟化技术在嵌入式系统上受到了业界越来越多的关注、重视和实际应用。嵌入式系…

云端部署ChatGLM-6B

大模型这里更新是挺快的,我参考的视频教程就和我这个稍微有些不一样,这距离教程发布只过去4天而已… 不过基本操作也差不多 AutoDL算力云:https://www.autodl.com/home ChatGLM3:https://github.com/THUDM/ChatGLM3/tree/main Hug…

消息队列之初识Rabbit及安装

文章目录 一、MQ的相关概念1.什么是MQ?2.为什么要用MQ2.1流量消峰2.2应用解耦2.3异步处理 3.MQ 的分类3.1.ActiveMQ3.2.Kafka3.3.RocketMQ3.4.RabbitMQ 4.MQ 的选择4.1.Kafka4.2.RocketMQ4.3.RabbitMQ 二、RabbitMQ的相关概念1.四大核心概念2.RabbitMQ 核心部分3.Ra…

OpenMMlab导出yolov3的onnx模型并推理

手动导出 直接使用脚本 import torch from mmdet.apis import init_detector, inference_detectorconfig_file ./configs/yolo/yolov3_mobilenetv2_8xb24-ms-416-300e_coco.py checkpoint_file yolov3_mobilenetv2_mstrain-416_300e_coco_20210718_010823-f68a07b3.pth mod…

数据结构-堆和二叉树

目录 1.树的概念及结构 1.1 树的相关概念 1.2 树的概念 1.3 树的表示 1.4 树在实际中的应用(表示文件系统的目录树结构) 2.二叉树的概念及结构 2.1 概念 2.2 特殊的二叉树 2.3 二叉树的存储 3.堆的概念及结构 4.堆的实现 初始化堆 堆的插入…

仿写知乎日报第四周

本周主要修改了以往的一些bug,实现了一些遗漏的新功能。 无限右滑 无限右滑我听了学长的思路,首先在scrollView的画布大小设置多一个宽度的画布,然后每当滑到那个画布的时候,就调用一个通知,该通知会触发在首页的vie…

【 第十三章】软件设计师 之 面向对象程序设计

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 备考资料导航 软考好处:软考的…

有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, …