Linux之vim的使用详细解析

news2025/1/13 15:37:30

个人主页:点我进入主页

专栏分类:C语言初阶  C语言进阶  数据结构初阶    Linux    C++初阶    算法

欢迎大家点赞,评论,收藏。

一起努力,一起奔赴大厂

目录

一.vim简介

二.vim的基本概念

 三.vim的基本操作

3.1准备

3.2光标在普通模式和插入模式中的移动

3.3普通模式

3.3.1复制粘贴

3.3.2剪切粘贴

3.3.3多行复制

3.3.4光标的移动

3.3.5撤销和撤销上一次撤销

3.3.6批量注释和批量取消注释

3.4底行模式

3.4.1退出保存

3.4.2强制执行

3.4.3多窗口打开文本

四.vim一键配置

一.vim简介

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

二.vim的基本概念

        vim包含很多种模式,但是最重要的是底行模式,普通模式,插入模式,普通模式是我们控制光标对字符的删除以及切换到我们的底行模式和插入模式,底行模式是进行文本的保存以及一些操作,插入模式是我们对文本进行修改底行模式和插入模式我们都可以按esc进行返回普通模式,普通模式中我们想进入插入模式我们需要按i才可以进入,我们普通模式想进入底行模式需要输入:才能进入,我们可以画图为:

其中底行模式和插入模式不可以进行直接互换。

 三.vim的基本操作

3.1准备

        在进行vim的基本操作前我们需要先下载vim,我们输入下面的指令进行vim的下载

sudo yum install -y vim

下载完成后我们创建一个文件然后使用vim打开,具体操作可以参考下面的指令第一行是创建文本,第二行是使用vim进行打开

>>test.c
vim test.c

输入完成后我们可以看到出现了我们的vim编译器

由于我是配置完成的vim,所以下显示的可能和大家的有些不同。此时我们就在我们的普通模式,我们输入i然后进行对文本的初始编写。

1 #include<stdio.h>
  2 
  3 int main()
  4 {
  5     printf("Hello Linux\n");
  6     return 0;
  7 }    

我们此时可以看到:

3.2光标在普通模式和插入模式中的移动

        在普通模式和插入模式中我们想和以前一样使用鼠标是不可能的,这时候需要我们的键盘出手了,在普通模式中我们有两种方法进行光标的移动,一种是我们的上下左右移动键,第二种就是我们的

HJKL

这四个键,其中H是向左移动一个字符,L是向右移动一格字符,J是向下移动一个字符,K是向上移动一个字符。例如我们的光标在第7行的}哪里我们输入K可以看到:

插入模式中我们需要通过上下左右键进行移动,不能通过HJKL进行移动。

3.3普通模式

3.3.1复制粘贴

        在这里复制粘贴包括两种复制粘贴一种是复制一行然后粘贴一种是复制n行然后粘贴,我们先说第一种复制一行然后粘贴,我们在普通模式下输入

yy

这时候我们光标在的那一行就被复制了我们再输入

p

就会在下一行进行复制

接下来是复制n行然后复制,我们先输入n的值然后输入yy例如我们想复制3行,我们把光标移动到想复制的位置,然后输入

3yy

我们再输入

p

 

3.3.2剪切粘贴

        同样我们的剪切粘贴也分为两种一种是剪切一行然后复制一行,另一种是剪切n行然后复制n行,我们先看第一种我们把光标移动到想要剪切的位置输入

dd

我们再输入

p

我们再看另一种剪切n行然后粘贴例如我们想剪切3行,我们输入

3dd

然后输入

p

3.3.3多行复制

        我们的复制也可以进行多行复制例如我们想复制10000次第8行我们先复制第8行然后输入

10000p

3.3.4光标的移动

        在上面我们说了光标的上下左右移动如果我我们想将光标移动到开始位置呢?我们可以输入

gg

如果我们想让光标移动到结尾位置我们可以输入(必须大写)

G

如果我们想让光标移动到n位置,例如我们想让光标移动到5000的位置我们输入

5000gg

我们还可以让光标在一行中进行移动,移动到这一行的开始和结尾,例如我们想移动到这一行的结尾我们输入

$

我们想移动到这一行的开始我们输入

^

我们还有逐个单词的移动例如我们想向后移动一个单词,我们输入

w

向前移动一个单词,我们输入

3.3.5撤销和撤销上一次撤销

        我们有时候会遇到这种情况,我们不小心多写一段或者少些一段内容,或者不小心删除一段内容,这时候我们需要用到我们的撤销功能,撤销的指令就是

u

例如我们不小心多复制了10000行如下:

这时候我们输入u就可以把那1000行进行撤销

假如我们不小心多撤销了例如:

我们就需要对撤销进行撤销,这时候我们需要输入指令

ctrl r

3.3.6批量注释和批量取消注释

        我们写代码时经常会遇到需要注释的地方,我们应该怎样批量注释呢?例如我们想将500行到510行进行注释,我们先将光标移动到500行

我们先输入

ctrl v

然后进行移动进行选中(HJKL)

然后输入

I

然后输入

//

然后输入两次esc

这样我们的批量注释就完成了。

对于我们的批量取消注释,我们先输入

ctrl v

然后进行选中

然后输入、

d

这样批量取消数组就完成了。

3.4底行模式

3.4.1退出保存

        我们先进入底行模式,也就是先进入普通模式然后输入:就会进入到我们的底行模式

我们输入

wq

就可以完成保存退出。

3.4.2强制执行

        有时候我们会遇到不能执行的指令,例如某一个文本我们不能wq进行保存退出我们就可以输入

!wq

完成强制保存退出。
利用!我们还可以完成一些操作,即使不退出vim我们也可以执行指令

我们现在在底行模式中我们想创建一个test2.c的文件我们输入

! touch test2.c

我们退出来就可以看到

3.4.3多窗口打开文本

        我们想要打开多个文本,例如我们想将test.c和test2.c同时打开,我们先用vim打开test.c

然后我们进入底行模式输入

vs test2.c

此时的光标在哪我们就是控制哪一个文本,这样我们就可以完成多文本的编写,我们关闭文本就是关闭此时的文本,我们看下边

此时对test2.c进行编写我们想关闭test2.c在底行模式中输入

wq

我们重新打开,如果我们想进行编写test.c但是光标在test2.c我们输入

ctrl w

四.vim一键配置

        注意这个配置需要Centos7,并且必须不能在root账号中进行,我们直接输入指令

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

卸载方法是输入指令

bash ~/.VimForCpp/uninstall.sh

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

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

相关文章

深入探索 JS 的提升机制、函数与块作用域以及函数表达式和声明(上)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SpringBoot和ApiFox整合快速上手

前置&#xff1a;IDEA版本IntelliJ IDEA 2023.2.4&#xff0c;Apifox 2.5.6 安装插件&#xff1a;Apifox Helper1.2.1 目录 1.文档生成 2.提取登录接口token 1.文档生成 把密钥配置到 修改日志编码&#xff1a; 导入成功:文档就会出现 2.提取登录接口token 之后我们再使用的…

综合服务 IntServ

目录 综合服务 IntServ IntServ 定义的两类服务 IntServ 的四个组成部分 流 (flow) 资源预留协议 RSVP RSVP 协议的工作原理 IntServ 体系结构在路由器中的实现 综合服务 IntServ 体系结构存在的主要问题 综合服务 IntServ 综合服务 IntServ (Integrated Services) 可…

五种多目标优化算法(MOCS、MOFA、NSWOA、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…

用于电机控制应用的动态制动电阻器?

这种复杂的医疗系统中&#xff0c;高度可靠的无源元件始终是必不可少的。在单个设计中&#xff0c;每个有源集成电路 &#xff08;IC&#xff09; 需要多达 20 个无源元件。通常需要专业元件&#xff0c;这是实现商品、批量生产的电阻器产品领域之外的特定应用价值所必需的。设…

微信小程序-宿主环境-开发文档学习笔记

查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever 微信小程序开发指南 微信小程序开发文档 渲染层和逻辑层 WXML 模板和 WXSS 样式工作在渲染层&#xff0c;JS 脚本工作在逻辑层 渲染层和数据相关。逻辑层负责产生、处理数据。逻辑层通过 Page 实例的 setD…

matlab simulink变压器温度仿真

1、内容简介 略 48-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab simulink变压器温度仿真_哔哩哔哩_bilibili 4、参考论文 略 大型油浸风冷变压器绕组温度场分析_高原 基于顶层油温的变压器绕组热点温度计算改进模型_陈伟根 基于热电类比理论的油浸式电…

共同学习|Spring Cloud Alibaba一一Nacos配置

Nacos配置中心 在服务或者应用运行过程中&#xff0c;提供动态配置或者元数据以及配置管理的服务提供者。 从Nacos中拉去配置文件 pom文件 2、bootstrap.yml 修改application.yml为bootstrap.yml spring:cloud: nacos:config:server-addr: localhost:8848 #nacos服务地址…

node14下运行项目报错:regeneratorRuntime is not defined

regeneratorRuntime is not defined&#xff0c;这是由于配置babel出错问题&#xff0c;由于使用了es7语法如async/await而当前babel版本过低 解决&#xff1a; npm install -D babel-plugin-transform-runtime babel-runtime 安装完成后在.babelrc文件下配置&#xff1a; &qu…

python56-Python的断言

断言语句和if分支有点类似它用于对一个bool表达式进行断言,如果该bool表达式为True,该程序可以继续向下执行;否则程序会引发AssertionError错误。 # !/usr/bin/env python# -*- coding: utf-8 -*-# Time : 2024/01# Author : Laopiage input("请输入你的年龄&#xff1a…

QT文件IO

七、文件IO QFileDialog文件对话框 与QMessageBox一样&#xff0c;QFileDialog也继承了QDialog类&#xff0c;直接使用静态成员函数弹窗&#xff0c;弹窗的结果&#xff08;选择的文件路径&#xff09;通过函数返回值返回。 // 获取一个打开或保存的文件路径 // 参数1&#xff…

Git+py+ipynb Usage

0.default config ssh-keygen -t rsa #之后一路回车,当前目录.ssh/下产生公私钥 cat ~/.ssh/id_rsa.pub #复制公钥到账号 git config --global user.email account_email git config --global user.name account_namebug of ipynb TqdmWarning: IProgress not found. Please …

【JavaEE】_HttpServlet类

目录 1. init方法 2. destory方法 3. service方法 4. servlet生命周期 前文已经提及到&#xff1a;servlet是tomcat提供的&#xff0c;用于操作HTTP协议的一组API&#xff0c;可以将这组API理解为HTTP服务器的框架&#xff1b; 编写一个servlet程序&#xff0c;往往都要继…

记一次pulsar数据丢失排查

记一次pulsar数据丢失排查 背景 生产者往pulsar写消息时会有递增的序列号字段&#xff0c;消费端在消费时&#xff0c;会出现序列号断层。当下无法确定是生产端、mq、消费端哪个地方丢失了数据&#xff0c;所以先从生产端进行排查。 生产端的消息发送是通过sendAsync的异步方…

基于插件实现RabbitMQ“延时队列“

1.官网下载 在添加链接描述下载rabbitmq_delayed_message_exchange 插件,本文以v3.10.0为例 1.1.上传安装包 scp /Users/hong/资料/rabbitmq_delayed_message_exchange-3.10.0.ez root10.211.55.4:/usr/local/software1.2.将文件移入RabbitMQ的安装目录下的plugins目录 m…

EasyRecovery2024个人免费版本电脑手机数据恢复软件下载

EasyRecovery是一款功能强大的数据恢复软件&#xff0c;能够帮助用户恢复丢失、删除、格式化或损坏的数据。无论是由于误操作、病毒攻击、硬盘故障还是其他原因导致的数据丢失&#xff0c;EasyRecovery都能提供有效的解决方案。 该软件支持从各种存储介质恢复数据&#xff0c;…

linux-并发通信

一.linux-tcp通信框架 1.基础框架 1.1 tcp 服务器框架 1.套接字 #include <sys/socket.h> int socket(int domain, int type, int protocol);
 返回的文件描述符可以指向当前的socket&#xff0c;后续通过对文件描述符的访问就可以配置这个socket 成功时返回文件…

云原生应用测试:挑战与方法

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

Linux进程 ----- 信号处理

前言 从信号产生到信号保存&#xff0c;中间经历了很多&#xff0c;当操作系统准备对信号进行处理时&#xff0c;还需要判断时机是否 “合适”&#xff0c;在绝大多数情况下&#xff0c;只有在 “合适” 的时机才能处理信号&#xff0c;即调用信号的执行动作。 一、信号的处理…

万界星空科技MES系统,实现数字化智能工厂

万界星空科技帮助制造型企业解决生产过程中遇到的生产过程不透明&#xff0c;防错成本高&#xff0c;追溯困难&#xff0c;品质不可控&#xff0c;人工效率低下&#xff0c;库存积压&#xff0c;交期延误等问题&#xff0c;从而达到“降本增效”的目标。打通各个信息孤岛&#…