[Linux基础开发工具---vim]关于vim的介绍、vim如何配置及vim的基本操作方法

一、vim及其三种模式的简单介绍

        Vim是一个类似于Vi的文本编辑器,不同的是vimvi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,如多级撤销、多窗口操作、崩溃后也可以恢复、增加了稳定性、关键字自动补全、上下文自动补全等。

这篇文章我们重点介绍vim的三种模式(vim不止有三种模式欧,这三种模式只是最常用的 ):

  • 命令模式(command mode)
  • 底行模式(last line mode)
  • 插入模式(insert mode)

想要查看当前vim的所有模式可以在底行模式下输入

help vim-modes

这个文档涵盖vim的所有模式,和相应模式的介绍,图片仅展示了几种模式,文档可上下自由翻看

1.1 命令模式(command mode)

        当我们每次打开默认的模式就是命令模式,该模式下不能正常输入,通常用来制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

模式的辨别可以通过左下角来区分

1.2 插入模式(insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式
在命令模式下按 [ i ] 即可进入插入模式, 按 「ESC」 键可回到命令行模式。

 再插入模式下左下角会有INSERT的字样,在这个模式下我们就可以进行代码编写了

1.3底行模式(last line mode)

      底行模式一般用来控制文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 

在命令模式下输入[ shift + ; ] 也就是[ : ]冒号即可进入底行模式

在底行模式下按 [ESC] 会返回命令模式

底行模式左下角是COMMAND的字样

二: vim如何配置

        若vim没有进行配置,使用其编写代码就像是在记事本中写代码一样,没有补齐代码、语法高亮等功能,开发效率非常低下,接下来介绍如何将vim打造成得心趁手得利器

2.1 vimrc文件

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,可以通过在这个文件中配置选项使vim功能得到改善
配置目录/etc/下的vimrc文件可以影响到所有用户,若用户想配置自己的vim,可以在自己的家目录下创建一个名为 .vimrc的私有文件
实操展示:

1.首先vim .vimrc 打开创建的.vimrc文件,按 [ i ] 进入插入模式,输入:

 set nu           显示行号                                              
2.    [ESC]进入命令模式,输入 [ : ]冒号进入底行模式,在输入 :wq保存退出文件
3.重新进入vim

2.2 vim一键配置

自己通过增加想要的选项可以配置出自己喜欢的vim环境,但是这个过程比较繁琐,因此博主找到了一个功能齐全的vimrc文件,大家直接在命令行输入下方指令,按提示输入root密码即可:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
如果配置完发现自己不喜欢,可以输入下面指令卸载:
bash ~/.VimForCpp/uninstall.sh

三、vim基本操作方法

3.1 模式切换

1. 命令模式切换插入模式

  • 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  • 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  • 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2. 命令模式切换底行模式
按  [ shift + ; ] 冒号

3.插入模式、底行模式切换命令模式

[ ESC ] 

3.2 命令模式命令

1.移动光标

可以通过 ↑ ↓ ← →  控制光标移动,也可以通过字母:

  • [ h ] :光标向左移动
  • [ j ] :光标向下移动
  • [ k ] :光标向上移动
  • [ l ] :光标向右移动
  •   [ G ]  : 移动到文章的最后
  • [gg ] : 进入到文本开始
  • 按  [ #l ]  :光标移动到该行的第#个位置
2.删除文字 
  • 「x」:每按一次,删除光标所在位置的一个字符
  • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 「dd」:删除光标所在行
  • 「#dd」:从光标所在行开始删除#行
3.复制 
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  •   [ p ]  : 粘贴
 4.替换
  • 「r」:替换光标所在处的字符
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
5.撤销上一次操作 
  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以    执行多次回复。
  • 「ctrl + r」: 撤销的恢复
6.跳至指定行 
  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

3.3 底行模式命令

1.跳到文件中的某一行

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

!command : 输入一个!后面紧跟想在shell执行的命令,可以不退出vim执行

5.多文件编辑 

vs filename : 在已经使用vim时,可以通过输入vs+要编辑的文件名可以同时编辑多个文件,按ww可在多文件中自由切换

 3.4 批量化注释和去注释

批量化注释:

1.citrl+v进入块视图模式,按[ h ] [ j ] [ k ] [ l ],选择要注释的区域

2.shitf+i进入编辑模式,输入//

3.按esc

批量化去注释:

1.citrl+v进入块视图模式,按[ h ] [ j ] [ k ] [ l ],选择要去注释的区域(仅包含//)

2.按d删除

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

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

相关文章

系统架构14 - 软件工程(2)

需求工程 软件需求两大过程三个层次业务需求(business requirement)用户需求(user requirement)功能需求 (functional requirement)非功能需求 概述活动阶段需求获取基本步骤获取方法 需求分析三大模型数据流图数据字典DD 需求定义需求验证需求管理需求基线变更控制过程变更控制…

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

SQL查询数据库环境(dm8达梦数据库)

SQL查询数据库环境dm8达梦数据库 环境介绍 环境介绍 某些环境没有图形化界面,可以使用sql语句查询达梦数据库环境情况 SELECT 实例名称 数据库选项,INSTANCE_NAME 数据库选项相关参数值 FROM V$INSTANCE UNION ALL SELECT 授权用户,(SELECT AUTHORIZED_CUSTOMER FROM V$LICE…

对话框与多窗体设计 —— 自定义对话框及其调用

3.2 自定义对话框及其调用3.3 Splash与登录窗口 3.2 自定义对话框及其调用 在一个应用程序设计中,为了实现一些特定的功能,必 须设计自定义对话框。自定义对话框的设计一般从 QDialog继承,并且可以采用UI设计器可视化地设计对 话框。对话框的…

vivado DDS学习

实现DDS通常有两种方式,一种是读取ROM存放的正弦/余弦信号的查表法,另一种是用DDS IP核。这篇学习笔记中,我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT(DDS)的standard模式…

【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

文章目录 前言服务治理介绍什么是服务治理1、服务发现2、服务配置3、服务健康检测 常见的注册中心ZookeeperEurekaConsulNacos Nacos 简介Nacos 实战入门搭建nacos环境1、安装nacos2、配置nacos3、访问nacos 将商品微服务注册到 nacos1、在 pom. xml 中添加 nacos 的依赖2、在主…

spring cloud之分布式事务

写在前面 1:分布式事务介绍 参考MySQL之分布式事务 。 2:seata实战 架构图: 可以看到seata在这里作为协调者的角色,协调所有事务的提交以及回滚,其中seata使用MySQL存储每个分支事务的执行状态信息,以…

gitlab设置/修改克隆clone地址端口

最近由于公司要停测试库云服务器? 什么?要停测试库服务器??? 是的! 你没听错。 真是醉了,多大的集团,为了省钱,也真是拼了, 作为开发人员,没有测试服务器,犹如断臂之人。 所以,在之前搭建环境的时候都没有写文档,今天算是弥补上,以后都可以作为参考了, …

MySQL和Redis的事务有什么异同?

MySQL和Redis是两种不同类型的数据库管理系统,它们在事务处理方面有一些重要的异同点。 MySQL事务: ACID属性: MySQL是一个关系型数据库管理系统(RDBMS),支持ACID属性,即原子性(Ato…

23种设计模式,你学废了嘛?【建议收藏起来】

23种经典设计模式共分为3种类型,分别是创建型、结构型和行为型。 今天,我们把这3种类型分成3个对应的小模块,逐一带你回顾一下每一种设计模式的原理、实现、设计意图和应用场景。 还是那句话,如果你看了之后,感觉都有…

Kafka3学习笔记

文章目录 一、Kafka概述和入门1、Kafka概述1.1 定义1.2 消息队列1.3 Kafka 基础架构 2、Kafka 快速入门2.1 安装部署2.2 集群启停脚本 3、Kafka 命令行操作3.1 Topic命令行操作3.2 生产者命令行操作3.3 消费者命令行操作 二、Kafka核心概念详解1、Kafka 生产者1.1 生产者消息发…

MySQL 多表查询

文章目录 多表关系一对多多对多一对一 查询合并查询(笛卡尔积,会展示所有组合结果):内连接查询外连接查询自连接查询联合查询 union, union all子查询单行子查询列子查询行子查询表子查询 :::success 多表查询,也称为…

类和对象 第三部分第二小节:空指针访问成员函数

C中空指针也可以调用成员函数的,但是也要注意有没有用到this指针,如果有用到this指针,需要加以保证代码的健壮性 代码案例 出现报错 报错原因:因为新建的指针是空,所以this指代的对象为空,因此没有成员变量…

Flume1.9基础学习

文章目录 一、Flume 入门概述1、概述2、Flume 基础架构2.1 Agent2.2 Source2.3 Sink2.4 Channel2.5 Event 3、Flume 安装部署3.1 安装地址3.2 安装部署 二、Flume 入门案例1、监控端口数据官方案例1.1 概述1.2 实现步骤 2、实时监控单个追加文件2.1 概述2.2 实现步骤 3、实时监…

无人机路径优化(八):五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划(提供MATLAB代码)

一、五种算法(DBO、LO、SWO、COA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为的启发…

华为路由器IPv6基础配置

1. R2的两个接口均采用静态IPv6地址配置方法 2. R1的GigabitEthernet0/0/3接口采用无状态 地址配置 3. R3的GigabitEthernet0/0/3接口采用DHCPv6 的方式配置IPv6地址 R1配置 ipv6 #全局使能IPv6 interface GigabitEthernet0/0/0ipv6 enable ipv6 address auto link-local #为…

vue项目打包部署到服务器并使用cdn加速

配置 vue.config.js文件 const isProd process.env.NODE_ENV production module.exports {// 其他配置chainWebpack: config > {// 生产环境下使用CDNif (isProd) {config.plugin(html).tap(args > {args[0].cdn assetsCDNreturn args})}},// 生产环境下替换路径为c…

【Druid 登陆异常】

Druid 登陆异常 问题描述:页面登陆将请求参数放到请求体中导致无法通过request.getParameter 方式 服务加载流程 通过 DruidStatViewServletConfiguration 中方法 statViewServletRegistrationBean 初始化StatViewServlet 通过 com.alibaba.druid.support.jakarta…

【Android】在WSA安卓子系统中进行新实验性功能试用与抓包(2311.4.5.0)

前言 在根据几篇22和23的WSA抓包文章进行尝试时遇到了问题,同时发现新版Wsa的一些实验性功能能优化抓包配置时的一些步骤,因而写下此篇以作记录。 Wsa版本:2311.40000.5.0 本文出现的项目: MagiskOnWSALocal MagiskTrustUserCer…

Ultraleap 3Di示例Interactable Objects组件分析

该示例代码位置如下: 分析如下: Hover Enabled:悬停功能,手放在这个模型上,会触发我们手放在这个模型上的悬停功能。此时当手靠近模型的时候,手的模型的颜色会发生改变,反之,则不会…