『Linux升级路』基础开发工具——vim篇

news2024/11/20 19:25:53

🔥博客主页:小王又困了

📚系列专栏:Linux

🌟人之为学,不日近则日退 

❤️感谢大家点赞👍收藏⭐评论✍️


目录

一、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查找字符

五、vim的配置

📒5.1配置文件的位置

📒 5.2vim常用配置选项


🗒️前言:

本期给大家介绍的工具是vim,它是多模式编辑器,vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

一、vim的基本概念 

     我们先介绍 vim 的三种模式,分别是命令模式(command mode)插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

📒1.1命令模式

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

📒1.2插入模式

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

📒1.3底行模式

     文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下输入,shift  +  ' : '即可进入底行模式。

注意:要查看你的所有模式:打开vim,底行模式直接输入help vim-modes

二、vim的基本操作

📒2.1进入vim

指令: 

  •  vim code.c

     在系统提示符号输入vim加文件名称后,就进入vim全屏幕编辑画面。打开vim默认是命令模式,命令模式下所有的输入都被当成命名,所以我们敲击键盘,屏幕不会显示字符,想要显示字符,我们要切换为插入模式,接下来就让我们看看怎么切换模式。

注意:如果vim后的文件不存在,系统会生成一个新文件并进入编辑画面。

📒2.2模式转换

🎀「命令模式​​​​​​​」切换为「插入模式」

     从命令模式切换为插入模式,可以输入 a o i ,它们三个的区别在于,进入插入模式后光标的位置不同。

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

🎀「插入模式​​​​​​​」切换为「命令模式​​​​​​​」 

      点击键盘上的Esc键,就可以退回到命令模式。(所有模式退到命令模式都是按Esc)

🎀「命令模式​​​​​​​」切换为「底行模式​​​​​​​」

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

     插入模式无法直接进入底行模式, 因为插入模式下所有的输入都会被当成文本输入,没有被解释成命令。

📒2.3退出vim

     要退出vim要在底行模式下进行,在命令模式下输入「:」即可进入底行模式,输入q退出vim。

  • :w :保存当前文件
  • :wq:保存并退出vim
  • :q!:不保存,强制退出vim

三、命令模式命令集

📒3.1移动光标

  •  $ :移动到光标到所在行的行尾
  •  ^ :移动到光标到所在行的行首
  • gg:移动到光标到文本开始
  •  G :移动到光标到文本末尾
  •  w :光标移动到下个字的开头(可以配合n,一次跳过n个单词)
  •  b :光标移动到上个字的开头(可以配合n,一次跳过n个单词)
  •  h    :以字符为单位,进行左、下、上、右移动

📒3.2复制粘贴 

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

注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

📒3. 3删除文字

  • dd:删除光标所在行
  • n+dd:从光标所在行开始删除n行
  •  x 删除光标所在位置的一个字符
  • n+x删除从光标位置开始的n个字符
  •  X :删除光标所在位置的前一个字符
  • n+X删除从光标位置开始的前n个字符

注意:dd完如果不p的话就是删除,如果p的话就是剪切。

📒3.4撤销

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

📒​​​​​​​3.5替换

  • shift + ~:快速更换大小写
  •  r :替换光标所在字符,点击r后,再点输入待替换的字符
  • n+r:把从光标位置开始的n个字符全部替换成目标字符
  •  R :替换光标所到之处的字符,直到按下Esc键停止

四、底行模式命令集

     在使用底行模式之前,请记住先按ESC键确定已经处于命令模式,再按冒号即可进入底行模式。

📒4.1调出行号

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

📒​​​​​​​​​​​​​​4.2保存退出

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

📒​​​​​​​​​​​​​​4.3多文件操作

  • vs 文件名:实现多文件分屏
  • ctrl+w+w:实现光标在分屏多文件之间的切换

注意:光标在哪个界面,我们就在编辑哪一个界面,底行也是一样。

📒4.4命令执行 

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

在!后直接跟shell命令就可以执行 。

📒4.5查找字符

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

五、vim的配置

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

📒5.1配置文件的位置

     配置项一般都放在用户家目录下,我们在家目录下建立私有的配置文件,命名为.vimrc。如果/root目录下,已经存在一个.vimrc文件,就不用创建。

示例:

1. 我们先进入配置文件,给配置文件中加入,调出行号的选项set nu

2. 再用vim打开文件,就可以看见,文本每一行的前面都有了行号 

     以上就是配置vim的基本原理,即:将自己所需要的配置项,写入配置文件.vimrc中就行。
  在每一个用户自己家目录下配置的vim不会影响的其他普通用户,只对当前用户有效。而在/ect/目录下的
.vimrc属于系统公共的vim配置文件,对所有用户都有效,一般不建议对公共的配置文件进行修改。

📒 5.2vim常用配置选项

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

本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。

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

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

相关文章

ENVI IDL:如何监测代码运行时间(计时器函数实现)?

01 预想 我预想的是在循环中加入一个函数,可以监测相邻两次循环的运行时间,正常操作如此: pro unknowfor ix 0, 5 do beginstart_timekeeping systime(1)wait, randomu(systime(1), 1) ; 此处systime(1)仅仅作为seed种子end_timekeeping…

C# DirectoryInfo类的用法

在C#中,DirectoryInfo类是System.IO命名空间中的一个类,用于操作文件夹(目录)。通过DirectoryInfo类,我们可以方便地创建、删除、移动和枚举文件夹。本文将详细介绍DirectoryInfo类的常用方法和属性,并提供…

拥抱中国发展新机遇,原知因制药再次亮相2023进博会

11月5日至10日,第六届进博会在国家会展中心(上海)成功举办。作为世界上首个以进口为主题的国家级博览会,进博会成为构建新发展格局的窗口、高水平开放的载体,持续为世界经济注入正能量。 原知因制药再次亮相进博会&am…

开放领域问答机器人1

开放领域问答机器人是一种智能机器人,它不受限制,可以回答任何问题。这种机器人主要通过自然语言处理技术来理解用户的问题,并从大量的数据中获取相关信息,以提供准确的答案。它的应用领域广泛,包括客户服务、教育、医…

网易云音乐未登录接口返回301

网易云音乐 NodeJS 版 API (neteasecloudmusicapi.js.org) 上面是网易云音乐的官方API接口文档 当我调用接口发送请求的时候部分接口数据是需要登录之后进行获取的,但是当我发送请求的时候原生js项目中的跨端问题是比较难解决的。 遇到的问题:跨端请求…

嵌入式Linux系统中内存分配详解

Linux中内存管理 内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。 虚拟地址的作用 如果用户进程直接操作物理地址会有以下的坏处: 1、 用户进程可以直接操作内核对应的内存,破坏…

拓世法宝AI智能直播一体机,快速搭建品牌矩阵,开启扩张新里程

时光荏苒,数字时代悄然而至,短视频已成为品牌传播的新宠。在这个潮流中,短视频以一种无法阻挡的势头成为了品牌传播的新趋势。如何巧妙地利用短视频进行品牌传播,实现零成本的品牌升级,构建强大的品牌矩阵,…

Linux编辑器---vim的使用

Vim是一个高度可配置的文本编辑器,它是操作Linux的一款利器,旨在高效地创建和更改任何类型的文本。这款编辑器起源于"vi",并在此基础上发展出了众多新的特性。Vim被普遍推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来…

【每日OJ—— 206. 反转链表(链表)】

每日OJ—— 206. 反转链表(链表) 1.题目:206. 反转链表(链表)2.方法讲解:2.1解法:2.1.1.图文解析2.1.2.代码实现2.1.3.提交通过展示 1.题目:206. 反转链表(链表&#xff…

WPS的JS宏基础(二)——其他

数据的输入和输出 InputBox(‘请输入内容’) //输入框 alert(‘a’) //简单消息框 MsgBox(‘b’) //进阶消息框 Debug.Print(‘c’) //立即窗口 Console.log(‘d’) //立即窗口 编写规则与注释 1.严格遵循大小写规范 2.每条语句之间用分号分隔 3.复合语句块(块中…

uni.getLocation() 微信小程序 线上获取失败

开发版,体验版,用此方法都可以正确获取定位,但是在小程序的线上,总是获取失败 参考:uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权-CSDN博客 uniapp 中的 uni.…

[sd_scripts]之fine_tune

https://github.com/kohya-ss/sd-scripts/blob/main/docs/fine_tune_README_ja.mdhttps://github.com/kohya-ss/sd-scripts/blob/main/docs/fine_tune_README_ja.md fine-tune微调是指使用图像和文本对来训练模型,不包括lora、textual inversion和hypernetwork。 …

JavaFX03(首页搭建)学生管理业务逻辑老师管理登录注册

数据库脚本 --创建学生管理系统 create database db_school; --使用当前数据库 use db_school; --创建学生表 create table tb_stu(sid int primary key identity(1,1),sname varchar(50),spwd varchar(50),ssex varchar(10),sage int,shobby varchar(100),saddress varchar(1…

STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录

近期在使用STM32H563ZIT6这款芯片在开发板上使用正常,烧录到自己打的板子就遇到了芯片烧录一次后,再次上电无法烧录的问题。 遇到问题需要从以下5点进行分析。 首先看下开发板的原理图 1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…

前端 a链接 如何实现下载功能

目录 前言 标签 download a 标签链接下载的实现 1. 整体流程 2. 实现步骤 3. 类图 4. 代码示例 download 使用注意点 1. 同源 URL 的限制 2. 不能携带 Header Blob 转换 方法1. 用作 URL(blob:) 方法2. 转换为 base64(data:&…

[C++随笔录] 红黑树

红黑树 红黑树的特点红黑树的模拟实现红黑树的底层结构insert的实现实现思路更新黑红比例的逻辑insert的完整代码 insert的验证 源码 红黑树的特点 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是 Red或 Black。…

什么是Selenium?如何使用Selenium进行自动化测试?

什么是 Selenium? Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试Web应用…

实现跨域必须要知道的知识点

目录 同源策略 cookie iframe和多窗口通信 片段识别符 window.postMessage() LocalStorage Storage接口: 概述 属性和方法 Storage.setItem() Storage.getItem() Storage.removeItem() Storage.clear() Storage.key() storage 事件 同源策略 浏览器…

响应式少儿舞蹈培训网站模板源码

模板信息: 模板编号:6903 模板编码:UTF8 模板颜色:橙色 模板分类:学校、教育、培训、科研 适合行业:培训机构类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统&#xf…

从开源项目聊鱼眼相机的“360全景拼接”

目录 概述 从360全景的背景讲起 跨过参数标定聊透视变化 拼接图片后处理 参考文献 概述 写这篇文章的原因完全源于开源项目(GitHub参阅参考文献1)。该项目涵盖了环视系统的较为全貌的制作过程,包含完整的标定、投影、拼接和实时运行流程。该篇文章主要是梳理全…