【Linux】基础开发工具——vim篇

news2024/11/28 4:49:26

在这里插入图片描述

目录

  • 一、vim的基本概念
    • 1.1 正常/普通/命令模式
    • 1.2 插入模式
    • 1.3 底行模式
  • 二、vim的基本操作
    • 2.1 进入vim
    • 2.2 模式切换
    • 2.3 退出vim
  • 三、命令模式命令集
    • 3.1 移动光标
    • 3.2 复制/粘贴
    • 3.3 撤销
    • 3.4 剪切/删除
    • 3.5 更改
  • 四、底行模式命令集
    • 4.1 多文本操作
    • 4.2 保存/退出
    • 4.3 命令执行
    • 4.4 调出行号
    • 4.5 跳到文件的某行
    • 4.6 查找字符
  • 五、配置vim
    • 5.1 配置文件的位置
    • 5.2 常见的vim配置项
    • 5.3 自动化配置

前言:
 今天给大家分享的工具是 vim。vim是一款强大的 文本编辑器,他有多种编辑模式,所以也叫 多模式编辑器,它的前身是vi。vim兼容vi的所有指令,并且在vi的基础上添加了一些新的特性。例如:语法加亮、可视化操作也可以运行在x windows、mac os、windows。

一、vim的基本概念

 先给大家介绍一下vim常用的三种模式:正常/普通/命令模式、插入模式、底行模式

1.1 正常/普通/命令模式

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

1.2 插入模式

 只有在插入模式下,才可以做文字的输入,按Esc键可回到命令行模式。该模式是应用最频繁的模式。

1.3 底行模式

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

二、vim的基本操作

2.1 进入vim

 在系统提示符后面输入vim及文件名称,就进入vim全屏幕编辑画面。
注意:如果vim后面的文件名不存在,也会进入到vim全屏幕编辑画面,写入退出后,会在当前目录下生成一个新文件,直接退出不会形成一个新文件。
指令:

  • vim test.c

在这里插入图片描述

 输入上面的指令,点击回车,看到的结果如果和上图一样,左下角出现NORMAL,说明你就成功的用vim打开了test.c这个文件,当前所处的模式就是命令模式,在命令模式下,用户输入的所有内容都被当做命令,所以当前点击键盘,不会以文本的形式显示出你所敲的字符,要想显示你所敲的字符,需要切换到插入模式,所以,下面让我们来看看,如何进行模式之间的切换。

2.2 模式切换

⟦命令模式⟧切换至⟦插入模式⟧
 从命令模式切换到插入模式,可以输入aoi,它们三个区别在于:进入插入模式后光标所在的位置不同。

  • 输入a:进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字。
  • 输入o:进入插入模式后,是插入新的一行,从行首开始输入文字。
  • 输入i:进入插入模式后,是从光标当前位置开始输入文件。

在这里插入图片描述
 左下角出现INSERT说明切换成功。
⟦插入模式⟧切换至⟦命令模式⟧

  • 点击键盘上的Esc键就可以退出到命令模式。(所有模式退到命令模式都是这样)

⟦命令模式⟧切换至⟦底行模式⟧

  • 点击shift + ;,其实就是输入:

2.3 退出vim

  • 底行模式下,输入w保存当前文件,输入q退出vim。
  • wq:保存并退出vim。
  • q!:不保存,强制退出vim。

三、命令模式命令集

3.1 移动光标

  • gg:定位光标到最开始行(第一个文本所在的地方)

  • Gshift + g:定位光标到最结尾行(第一个文本所在的地方)

  • n+G:n是任意数字,定位光标到任意行(第一个文本所在的地方)

  • $:定位光标到当前行最后一个文本

  • ^:定位光标到当前行第一个文本

  • wb:光标按照单词进行行内或跨行移动(也可可以配合n使用,一次跨越n个单词)

  • hjkl:以字符为单位进行左、下、上、右移动

3.2 复制/粘贴

  • yy:复制光标所在行到缓冲区
  • n+yy:n是任意数字,从光标当前行开始,复制n
  • p:将缓冲区中的字符贴到光标所在行的下一行位置
  • n+p:n是任意数字,将缓冲区中的字符粘贴n

小Tips:所有与yy有关的复制命令都必须与p配合才能完成。

3.3 撤销

  • u:回到上一个操作,按多次,可执行多次恢复
  • ctrl+r:对撤销的恢复

3.4 剪切/删除

  • dd:dd完如果不p的话,那就是删除,如果p的话就是剪切
  • x:删除光标所在位置的字符
  • n+x:n是任意数字,删除从光标位置开始的n个字符
  • X:删除光标所在位置的前面一个字符
  • n+X:n是任意数字,删除光标所在位置的前n个字符

3.5 更改

  • shift+~:快速更换大小写
  • r:替换光标所在字符,点击r后,再点击期待替换的字符
  • n+r:n是任意数字,把从光标位置开始的n个字符全部替换成目标字符
  • R:替换光标所到之处的字符,知道按下Esc键为止(其实这就是替换模式

四、底行模式命令集

4.1 多文本操作

  • vs 文件名:实现多文件分屏
  • ctrl+w+w:实现光标在分屏多文件之间的切换,光标在哪个窗口里面,就对哪一个窗口进行操作

4.2 保存/退出

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

4.3 命令执行

  • !:在底行模式下执行命令

4.4 调出行号

  • set nu:调出行号,在文件每一行前面列出行号
  • set nonu:取消行号

4.5 跳到文件的某行

  • n:n是任意数字,输入一个数字在点enter,就会跳到文章对应的行

4.6 查找字符

  • /关键字:先输入/,在输入你先更要查找的字符,如果第一次找的不是你想要的,可以一直按n,会继续往后寻找你想要的
  • ?关键字:输入?,在输入你先更要查找的字符,如果第一次找的不是你想要的,可以一直按n,会继续往后寻找你想要的

五、配置vim

 未经配置的vim,在插入模式下写代码的时候,没有任何语法提醒,也没有自动补全功能,使用起来比较笨重。要实现在写代码的时候给出提示,需要我们自行对vim进行配置。

5.1 配置文件的位置

 配置项一般都放在用户家目录下的.vimrc文件中,.vimrc就叫做配置文件,家目录中如果没有这个文件可以自行创建一个touch .vimrc,然后可以将配置项写入.vimrc文件中。
示例:
 在.vimrc文件中什么配置项都没写入的情况下,使用的就是最原生的vim。
在这里插入图片描述
 给配置文件中加入,调出行号的选项set nu
在这里插入图片描述
 此时再用vim打开文件,就可以看见,文本每一行的前面都有了行号。
在这里插入图片描述
 以上就是配置vim的基本原理,即:将自己所需要的配置项,写入配置文件.vimrc中就行。
 在每一个用户自己家目录下配置的vim不会影响的其他普通用户,只对当前用户有效。而在/ect/目录下的.vimrc属于系统公共的vim配置文件,对所有用户都有效,一般不建议对公共的配置文件进行修改,各用户根据自己的喜好,在自己的家目录下进行配置就好。

5.2 常见的vim配置项

set nu//设置行号
syntax on//语法高亮
set showmode//底部显示当前处于什么模式
set cursorline//显示行号下划线
set shiftwidth=4//设置缩进的空格数为4
……

 更多的配置项,可以自行在网上搜索。自己配置显然是比较麻烦地。

5.3 自动化配置

 这里提供一种自动化配置vim的方案,仅需一条指令就可以把你的vim给配置好,需要的下伙伴可以后台私信我,手把手教你配置好vim。从此以后你的vim就可以实现:自动补全、头文件补全、语法诊断、跳转到变量/函数定义, 跳转到头文件、函数查找、文件列表、文件查找等功能。下面给大家展示下在配置后的vim中敲代码。
在这里插入图片描述


 今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是春人前进的动力!
在这里插入图片描述

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

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

相关文章

第六步:NVIC中断优先级分组

CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。 STM32F4并没有使用CM4内核的全部东西,而是只用了它的一部分。 STM32F40xx/STM32F41xx总共有92个中断。 STM32F42xx/STM32F43xx则总共有96个中断…

ModaHub魔搭社区:UCloud优刻得镜像市场上线Milvus向量数据库镜像

近日,为了更好地满足客户在AI业务场景下的需要,UCloud优刻得镜像市场上线支持了Milvus向量数据库镜像。 随着时代发展,文档资料、图片、语音、视频影像等非结构化数据开始海量涌现。为了能够更好地使用这些数据,可以使用embedding…

Jmeter参数传递——将上一个接口的返回结果做为变量传入下一个接口参数中

我们以CSDN文章发布为例: CSDN博客 - 专业IT技术发表平台CSDN博客为中国软件开发者、IT从业人员、IT初学者打造交流的专业IT技术发表平台,全心致力于帮助开发者通过互联网分享知识,让更多开发者从中受益,一同和IT开发者用代码改变未来.https://blog.csdn.net/ 注&…

Spark学习(一)---Spark简介和运行环境

文章目录 1.Spark介绍1.1 Spark核心模块1.2 使用Spark写一个WordCount1.2 Spark运行环境1.2.1 Local模式1.2.2 Standalone 模式1.2.3 高可用模式(HA)模式1.2.4 Yarn模式 1.Spark介绍 Hadoop中的MapReduce框架在设计之初并不是为了满足循环迭代式数据流处理,因此在多…

DMDSC共享存储集群启动、关闭及介绍

DMDSC介绍 DM 共享存储数据库集群(DMDSC)。DM共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入,某一个数据库实例故障后…

FastDFS【FastDFS环境搭建_Linux、FastDFS指令、复习】(二)-全面详解(学习总结---从入门到深化)

目录 FastDFS环境搭建_Linux FastDFS指令 复习: FastDFS环境搭建_Linux 下载安装gcc 安装方式为yum安装(需网络): yum install gcc-c perl-devel pcre-devel openssl-devel zlib-devel wget 下载安装FastDFS wget https:/…

leetcode42. 接雨水(单调栈-java)

接雨水 leetcode42. 接雨水题目描述单调栈解题代码演示 单调栈专题 leetcode42. 接雨水 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/trapping-rain-water 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图…

一章让你明白什么是权限

目录 🌏什么是Linux 权限? 🌏文件: 🌏目录: 🌏查看文件的权限 🌏权限针对的三类用户: 🌏ls -l 命令显示的意义 🌏修改文件的属性和权限 …

uni-app获取系统信息(手机牌子、手机型号、屏幕宽度、屏幕高度)

uni.getSystemInfo({success(res) {console.log(res.brand) //手机牌子console.log(res.model) //手机型号console.log(res.screenWidth) //屏幕宽度console.log(res.screenHeight) //屏幕高度}) .exec()}}); 如下 官网链接:系统信息的概念 | uni-app官网

基于Java学生作业管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

机器学习面试题 - 模型评估1

目录标题 1、准确率的局限性广告投放问题: 2、精确率与召回率的权衡2.1 案例2.2 P-R曲线 3、平方根误差4、ROC曲线5、如何绘制ROC6、如何计算AUC7、ROC曲线相比P-R曲线有什么特点? 模型评估主要分为离线评估和在线评估两个阶段。 针对分类、排序、回归、…

uni_app 微信小程序 苹果手机 边框显示不全

![在这里插入图片描述](https://img-blog.csdnimg.cn/3a4c4ab1a146444c84c72d360a057c01.png 解决方案: 原因:是因为我们在设置边框的时候设置的rpx ,自适应会自动换算px, 两者之间的比例一般都是1.5-2之间,对于边框 border 来说…

指定专业和城市|超声科医生赴美国佐治亚理工学院自费访学

从事超声医学的Y医生拟自费赴美国访学,希望在亚特兰大附近,且专业相符。最终我们落实了佐治亚理工学院的职位,专业及地理位置都符合申请人的预期目标。 Y医生背景: 申请类型:自费访学 工作背景:三甲医院医…

QT 实现windows系统文件拖拽

效果预览: 2023-07-05 14-29-11 功能描述: 1.首先实现了根据文件的路径获取了文件的信息,通过 QFileIconProvider 获取图标信息,并在界面上进行展示。 2.dropEvent 是实现拖拽功能的核心。重新此事件函数,并将窗口设…

vue实现动态URL

最近在项目上要用到动态baseURL,用的是vuex存储,具体实现如下 1.拦截器中重写baseURL 但是需要注意的是这个url必须符合URL格式,所以前端校验是必须的 2.前端校验 const validateUrl (rule, value, callback) > {if (isBlank(value)) {callback(ne…

【技巧】快速提取PowerPoint文件的图片

如果你看到PPT里的图片或背景素材比较好看,想要保存下来,你会怎么做呢? 可能很多人首先想到的就是选择图片后另存下来,或者使用截图保存,这也是一种方法,但如果图片很多的话,就十分繁琐和费时间…

MySQL用户与权限管理

用户与权限管理 1. 用户管理1.1 创建用户1.2 修改用户1.3 删除用户1.4 用户密码相关1.4.1 密码修改1.4.2 密码管理机制 2. 权限管理2.1 授予权限原则2.2 查看权限2.3 授予权限2.4 收回权限 3. 权限表4. 访问控制 1. 用户管理 MySQL用户分为root用户和普通用户;root…

大模型时代的模型运维与部署:LLMops

文章目录 1 LLMOps介绍1.1 关联定义1.2 LLMOps 与 MLOps 2 LLMOps实现步骤2.1 数据管理2.1.1 数据清洗和预处理技术2.1.2 数据标记和注释2.1.3 数据存储、组织和版本控制2.1.4 数据合规性检验 2.2 基础模型的选择2.3 迭代和提示管理2.4 测试评估2.5 部署2.6 监控 3 参考文献 1 …

万物的算法日记|算法学习 [java 二分法 acwing789.数的范围]

算法语言:java 题目来源:acwing.789 文章目录 题目描述题解五点七边的二分法第一个细节 l,r 边界问题为什么 l 边界初始化为 -1?同理为什么 r 边界初始化为 N而不是N-1 ?第二个细节 m是否始终处于[0,N)以内第三个细节&#xff0c…

【UnityDOTS 四】System的理解

System的理解 前言 System主要用于在ECS中进行逻辑处理。它具有自己的声明周期,主要分为两类:ISystem,SystemBase。前一个是非托管内存访问,后一个是托管内存访问。 一、Systemg认知 System在主线程运行,可以在代码中使用Job系…