当前位置: 首页 > news >正文

【探索Linux】—— 强大的命令行工具 P.3(Linux开发工具 vim)


阅读导航

  • 前言
  • vim简介
    • 概念
    • 特点
  • vim的相关指令
    • vim命令模式(Normal mode)相关指令
    • 插入模式(Insert mode)相关指令
    • 末行模式(last line mode)相关指令
  • 简单vim配置(附配置链接)
  • 温馨提示

前言

前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也相信大家都掌握的不错,今天博主带大家了解一下Linux开发工具—— vim ,下面话不多说坐稳扶好咱们要开车了!!!😍

vim简介

概念

Vim(Vi IMproved)是一款在Unix和类Unix系统上广泛使用的文本编辑器。它是Vi编辑器的增强版,提供了更多的功能和改进的用户体验。Vim具有强大的编辑能力和高度可定制性,被广泛认为是一款程序员和系统管理员常用的编辑器之一。掌握Vim的基础概念和功能将使您在Linux系统上的文本编辑工作更加高效和便捷。通过实践和探索,您可以逐步熟悉和精通Vim的使用。
在这里插入图片描述

特点

  1. Vi和Vim:Vi是Unix系统上一款文本编辑器,它是Vim的前身。Vim(Vi IMproved)是对Vi进行了改进和增强的编辑器。Vim保留了Vi的所有功能,并新增了很多新的特性和命令。

  2. 终端:在Linux中,Vim通常在终端中运行。终端是Linux上的命令行界面,它允许用户通过命令行输入来与计算机进行交互。

  3. 模式:Vim具有不同的编辑模式,主要有三种模式:

    • 命令模式(Command mode):在启动Vim或按下Esc键后进入的默认模式。可以执行命令和移动光标。
    • 插入模式(Insert mode):在命令模式下按下iao等字符进入的模式。可以输入文本内容。
    • 可视模式(Visual mode):在命令模式下按下v进入的模式。可以选择和操作文本。
  4. 命令和快捷键:在命令模式下,使用各种命令和快捷键可以执行不同的操作,例如保存文件、退出Vim、复制粘贴文本等。

  5. 配置:Vim有一个配置文件.vimrc,用于设置和定制Vim的行为。用户可以在配置文件中添加自定义的颜色方案、缩进设置、插件管理等。

  6. 插件和扩展:Vim支持插件系统,允许用户安装扩展功能。有很多社区维护的插件可供选择,可以增加各种功能,如代码补全、语法高亮等。

  7. 帮助文档:Vim附带了详细的内置帮助文档。通过命令模式下的:help命令可以打开帮助系统,查找和学习Vim的命令和功能。

vim的相关指令

vim命令模式(Normal mode)相关指令

⭕Vim的命令模式(Normal mode)是启动Vim或按下Esc键后进入的默认模式。在命令模式下,可以执行各种命令和移动光标,以下是一些常用的命令指令:

  1. 光标移动:

    • h: 将光标向左移动一个字符。
    • j: 将光标向下移动一行。
    • k: 将光标向上移动一行。
    • l: 将光标向右移动一个字符。
    • 0: 将光标移动到当前行的行首。
    • $: 将光标移动到当前行的行尾。
    • gg: 将光标移动到文件的第一行。
    • G:将光标移动到文件的最后一行。
    • Ctrl+f: 向下翻页。
    • Ctrl+b: 向上翻页。
  2. 文本编辑:

    • i: 进入插入模式,在当前位置插入文本。
    • a: 进入插入模式,在当前位置的下一个字符插入文本。
    • o: 在当前行的下方插入一个新行,并进入插入模式。
    • O: 在当前行的上方插入一个新行,并进入插入模式。
    • x: 删除光标所在位置的字符。
    • dd: 删除当前行。
    • yy: 复制当前行。
    • p: 粘贴复制的内容。
  3. 撤销和重做:

    • u: 撤销上一次操作。
    • Ctrl+r: 重做上一次被撤销的操作。
  4. 查找和替换:

    • /keyword: 在文件中向后查找关键字keyword
    • ?keyword: 在文件中向前查找关键字keyword
    • n: 在当前方向继续查找下一个匹配项。
    • N: 在当前方向继续查找上一个匹配项。
    • :s/old/new: 在当前行将第一个出现的old替换为new
    • :%s/old/new/g: 在整个文件中将所有出现的old替换为new
  5. 保存和退出:

    • :w: 保存文件。
    • :q: 退出Vim。
    • :wq:x: 保存并退出Vim。
    • :q!: 强制退出Vim,丢弃所有修改。

以上只是常用的命令模式指令的一部分,Vim命令模式提供了众多的命令和功能,几乎可以涵盖所有的文本编辑需求。通过练习和尝试,您将逐渐掌握更多的指令和技巧。您可以通过在命令模式下输入 :help 或查阅Vim的相关文档来获取更多信息。

插入模式(Insert mode)相关指令

⭕Vim的插入模式(Insert mode)是在命令模式下按下iao等字符进入的模式。在插入模式中,可以输入和编辑文本。以下是一些常用的插入模式指令:

  1. 插入文本:

    • i: 在当前光标位置之前插入文本。
    • a: 在当前光标位置之后插入文本。
    • o: 在当前行的下方插入一个新行,并进入插入模式。
    • O: 在当前行的上方插入一个新行,并进入插入模式。
  2. 光标移动:

    • Left ArrowCtrl+h: 将光标向左移动一个字符。
    • Right ArrowCtrl+l: 将光标向右移动一个字符。
    • Up ArrowCtrl+k: 将光标向上移动一行。
    • Down ArrowCtrl+j: 将光标向下移动一行。
    • Home: 将光标移动到当前行的行首。
    • End: 将光标移动到当前行的行尾。
  3. 删除和编辑:

    • BackspaceCtrl+h: 删除光标前的一个字符。
    • DeleteCtrl+d: 删除光标后的一个字符。
    • Ctrl+w: 删除光标前的一个单词。
    • Ctrl+u: 删除当前行的所有内容。
    • Ctrl+t: 缩进当前行。
    • Ctrl+d: 取消缩进当前行。
    • Ctrl+v: 输入特殊字符。
  4. 退出插入模式:

    • Esc: 退出插入模式,返回到命令模式。

在插入模式中,您可以自由地输入和编辑文本内容。一旦退出插入模式,就可以使用命令模式下的各种命令,如保存文件、撤销操作、搜索等。通过练习和使用,您将逐渐熟悉插入模式的操作方式,并能够高效地编辑和修改文本文件。

末行模式(last line mode)相关指令

⭕末行模式(Last Line mode)是在命令模式下以冒号开头的操作,用于执行一系列的操作和命令。在末行模式下,可以执行一些高级的编辑和操作,以下是一些常用的末行模式指令:

  1. 保存和退出:

    • :w:write: 保存当前文件。
    • :w filename:write filename: 以指定的文件名保存当前文件。
    • :q:quit: 退出Vim。
    • :q!:quit!: 强制退出Vim,丢弃所有修改。
    • :wq:x:xit:writequit: 保存并退出Vim。
  2. 打开和编辑文件:

    • :e filename:edit filename: 打开指定的文件。
    • :new:new filename: 在新的分窗口中打开指定的文件。
    • :tabnew:tabnew filename: 在新的标签页中打开指定的文件。
    • :split filename: 将当前窗口分割,并在新窗口中打开指定的文件。
    • :vsplit filename: 将当前窗口垂直分割,并在新窗口中打开指定的文件。
  3. 搜索和替换:

    • :/pattern:search pattern: 在当前文件中向后搜索匹配的模式。
    • :?pattern:search? pattern: 在当前文件中向前搜索匹配的模式。
    • :s/old/new:substitute/old/new: 将当前行第一个出现的old替换为new
    • :%s/old/new/g:%substitute/old/new/g: 将整个文件中所有出现的old替换为new
  4. 行号和跳转:

    • :n:n line_number: 跳转到指定行号。
    • :n:n +offset: 跳转到当前行号加偏移量的行。
    • :n:n -offset: 跳转到当前行号减偏移量的行。
    • :rewind:rew: 跳转到文件的第一行。
    • :last:la:$: 跳转到文件的最后一行。
    • :first:fi:1: 跳转到文件的第一行。
  5. 窗口管理:

    • :only:on: 关闭除当前窗口之外的其他窗口。
    • :sp filename:split filename: 将当前窗口水平分割,并在新窗口中打开指定的文件。
    • :vsp filename:vsplit filename: 将当前窗口垂直分割,并在新窗口中打开指定的文件。
    • :close:clo: 关闭当前窗口。
    • :wincmd h/j/k/lCtrl+w h/j/k/l: 使用方向键控制光标在窗口间移动。

以上是一些常见的末行模式指令,您可以在末行模式下执行各种命令和操作。通过练习和了解更多的指令,您可以更加高效地进行编辑和操作。

简单vim配置(附配置链接)

要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来博主推荐一个链接里面有详细的配置过程以及链接,直接按照上面的那样一步一步来相信好用的很。
概况预览

配置链接:VimForCpp

推荐阅读:Vim从入门到牛逼(vim from zero to hero)

温馨提示

感谢您对博主文章的关注与支持!在阅读本篇文章的同时,我们想提醒您留下您宝贵的意见和反馈。如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。请继续关注博主的更新,不要错过任何精彩内容!

再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!

在这里插入图片描述

相关文章:

【探索Linux】—— 强大的命令行工具 P.3(Linux开发工具 vim)

阅读导航 前言vim简介概念特点 vim的相关指令vim命令模式(Normal mode)相关指令插入模式(Insert mode)相关指令末行模式(last line mode)相关指令 简单vim配置(附配置链接)温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构&…...

AgentBench::AI智能体发展的潜在问题一

从历史上看,几乎每一种新技术的广泛应用都会在带来新机遇的同时引发很多新问题,AI智能体也不例外。从目前的发展看,AI智能体的发展可能带来的新问题可能包括如下方面: 第一是它可能带来涉及个人数据、隐私,以及知识产权的法律纠纷的大幅增长。要产生一个优秀的AI智能体,除…...

【2023年11月第四版教材】《第5章-信息系统工程之软件工程(第二部分)》

《第5章-信息系统工程之软件工程(第二部分)》 1.3 软件设计1.4 软件实现[补充第三版教材内容] 1.5 部署交付 1.3 软件设计 1、结构化设计SD是一种面向数据流的方法,它以SRS和SA阶段所产生的DFD和数据字 典等文档为基础…...

OpenCV(二)——图像基本处理(二)

目录 2.图像的几何变换 2.1 图像平移 2.2 图像缩放 2.3 图像旋转 2.4 仿射变换 2.5 透视变换...

Redis—缓存

目录标题 缓存雪崩发生场景解决方案针对Redis宕机的缓存雪崩解决方案 缓存击穿发生场景解决方案 缓存穿透发生场景解决方案布隆过滤器 数据库和缓存数据一致性 缓存雪崩 大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大…...

第三章 图论 No.10无向图的双连通分量

文章目录 定义Tarjan求e-DCCTarjan求v-DCC395. 冗余路径1183. 电力396. 矿场搭建 定义 无向图有两种双连通分量 边双连通分量,e-DCC点双连通分量,v-DCC 桥:删除这条无向边后,图变得不连通,这条边被称为桥 边双连通分…...

Java学习手册——第二篇面向对象程序设计

Java学习手册——第二篇面向对象 1. 结构化程序设计2. 面向对象 第一章我们已经介绍了Java语言的基础知识,也知道他能干什么了, 那我们就从他的设计思想开始入手吧。 接触一个语言之前首先要知道他的大方向,设计思想是什么样的, 这…...

Redis实战:Redis的安装及简单使用

本片将介绍 Redis 的安装及简单使用 文章目录 1、Redis安装1.1、Windows下Redis的安装1.2、Linux下Redis的安装1.3、Mac下Redis的安装(使用Homebrew) 2、Redis使用2.1、启动服务端客户端2.2、Redis简单命令 3、Redis命令大全 1、Redis安装 1.1、Windows…...

Linux学习之初识Linux

目录 一.Linux的发展历史及概念 1.什么是Linux UNIX发展的历史: Linux发展历史: 2. 开源 商业化发行版本 二. 如何搭建Linux环境 Linux 环境的搭建方式主要有三种: 1. 直接安装在物理机上 2. 使用虚拟机软件 3. 使用云服务器 三. …...

神经网络基础-神经网络补充概念-29-为什么使用深层表示

概念 深层表示(Deep Representation)是指在深度神经网络的多个隐藏层中逐层提取和学习数据的特征表示。 使用深层表示的原因 高维特征提取:深层神经网络可以从原始数据中自动学习高维抽象特征。每个隐藏层都对数据进行一些变换&#xff0c…...

2023最新水果编曲软件FL Studio 21.1.0.3267音频工作站电脑参考配置单及系统配置要求

音乐在人们心中的地位日益增高,近几年音乐选秀的节目更是层出不穷,喜爱音乐,创作音乐的朋友们也是越来越多,音乐的类型有很多,好比古典,流行,摇滚等等。对新手友好程度基本上在首位,…...

边缘计算:下一代计算模式的突破

章节一:引言 随着物联网、人工智能和大数据等技术的不断发展,计算需求变得越来越复杂,传统的云计算模式已经难以满足快速增长的数据处理需求。在这样的背景下,边缘计算作为一种全新的计算模式崭露头角,为我们带来了更加…...

连接不上手机,adb devices为空:

首先说明一下,我是已经安装了android studio,也配置了环境变量,但是还是连接不上手机 解决方案: 1.打开开发者模式 https://product.pconline.com.cn/itbk/sjtx/sjwt/1424/14246015.html 2.开启usb调试 https://baiyunju.cc/10770 最后成功…...

vuex学习总结

一、vuex工作原理 工作流程:需求:改变组件count的sun变量的值,先调用dispatch函数传入jia函数和要改变的值给actions(这个actions里面必须有jia这个函数);actions收到后调用commit函数将jia方法和值传给mut…...

11. Docker Swarm(二)

1、前言 上一篇中我们利用Docker Swarm搭建了基础的集群环境。那么今天我们就来验证以下该集群的可用性。上一篇的示例中,我创建了3个实例副本,并且通过访问http://192.168.74.132:8080得到我们的页面。 2、验证高可用 1)我们可以通过以下命…...

注册中心Eureka和Nacos,以及负载均衡Ribbon

1.初识微服务 1.1.什么是微服务 微服务,就是把服务拆分成为若干个服务,降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。 1.2.单体架构和微服务架构的区别: 单体架构:简单方便&#…...

php+tcpdf生成pdf:中文乱码

亲测成功,感谢分享! 查看原文 TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的。 场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然…...

【AI实战】BERT 文本分类模型自动化部署之 dockerfile

【AI实战】BERT 文本分类模型自动化部署之 dockerfile BERTBERT 文本分类模型基于中文预训练bert的文本分类模型针对多分类模型的loss函数样本不均衡时多标签分类时 dockerfile编写 dockerfilebuild镜像运行docker测试服务 参考 本文主要介绍: 基于BERT的文本分类模…...

深入理解 Flutter 图片加载原理 | 京东云技术团队

前言 随着Flutter稳定版本逐步迭代更新,京东APP内部的Flutter业务也日益增多,Flutter开发为我们提供了高效的开发环境、优秀的跨平台适配、丰富的功能组件及动画、接近原生的交互体验,但随之也带来了一些OOM问题,通过线上监控信息…...

Spring Boot 支持多种环境,包括开发环境、测试环境、预发布环境和生产环境。

Spring Boot 支持多种环境,包括开发环境、测试环境、预发布环境和生产环境。不同的环境具有不同的配置,可以在不同的环境中对应用程序进行测试、验证和部署。以下是每种环境的用途和相应的代码案例。 开发环境 开发环境是开发人员在本地进行开发的环境&…...

Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 持续更新中(预计8.18完成)~

Ctfshow 命令执行 web29 pregmatch是正则匹配函数,匹配是否包含flag,if(!preg_match("/flag/i", $c)),/i忽略大小写 可以利用system来间接执行系统命令 flag采用f*绕过,或者mv fl?g.php 1.txt修改文件名&#xff0c…...

合宙Air724UG LuatOS-Air script lib API--wifiRil

wifiRil Table of Contents wifiRil wifiRil.regRsp(head, fnc, typ, formt) wifiRil.regUrc(prefix, handler) wifiRil.deRegUrc(prefix) wifiRil.request(cmd, arg, onrsp, delay, param) wifiRil 模块功能:esp8266 wifi模块AT命令交互管理 wifiRil.regRsp(head,…...

python读取word/pdf文档,指定文字内容和图片

读编号转文件夹目录然后放图片进去那个 一 先将word转为PDF pdf 读起来比较方便, 按页码读取文件: import pdfplumber from PIL import Image import cv2 import numpy as np import re import os import logging import iodef create_folder(folder_name):if not…...

零售行业供应链管理核心KPI指标(二) – 线上订单履行周期

一般品牌零售商有一个大的渠道就是全国连锁的商超、大卖场,非常重要的渠道,要去铺货。同类型的产品都在竞争这个大渠道,但商超、大卖场在这类产品的容量是有限的,所以各个品牌就要去争夺整个容量,看谁在有限的容量里占…...

VGG分类实战:猫狗分类

关于数据集 数据集选择的是Kaggle上的Cat and Dog,猫狗图片数量上达到了上万张。你可以通过这里进入Kaggle下载数据集Cat and Dog | Kaggle。 在我的Github仓库当中也放了猫狗图片各666张。 VGG网络 VGG的主要特点是使用了一系列具有相同尺寸 3x3 大小的卷积核进…...

C++11并发与多线程笔记(3)线程传参详解,detach()大坑,成员函数做线程函数

C11并发与多线程笔记(3)线程传参详解,detach 大坑,成员函数做线程函数 1、传递临时对象作为线程参数1.1 要避免的陷阱11.2 要避免的陷阱21.3 总结 2、临时对象作为线程参数2.1 线程id概念2.2 临时对象构造时机抓捕 3、传递类对象…...

说几个常见的语法糖

目录 面试回答 知识扩展 如何解语法糖? 糖块一、swith 支持 String 与枚举 糖块二、泛型 糖块三、自动装箱与拆箱 糖块四、枚举 糖块五、条件编译 糖块六、断言 糖块七、数值字面量 糖块八、for-each 糖块九、try-with-resource 可能遇到的坑 泛型 自…...

Python文件操作与输入输出:从基础到高级应用

文章目录 🍀引言🍀文件操作基础🍀上下文管理器与文件自动关闭🍀文件的迭代与逐行读取🍀文件的其他常见操作🍀输入输出基础🍀 文件输入输出🍀格式化输出🍀高级文件操作&am…...

leetcode算法题--找出最安全路径

原题链接:https://leetcode.cn/problems/find-the-safest-path-in-a-grid/description/ func maximumSafenessFactor(grid [][]int) int {n : len(grid)type pair struct {x inty int}p : make([]pair, 0)dis : make([][]int, n)for i : range dis {dis[i] make([…...

神经网络基础-神经网络补充概念-34-正则化

概念 正则化是一种用于控制模型复杂度并防止过拟合的技术,在机器学习和深度学习中广泛应用。它通过在损失函数中添加一项惩罚项来限制模型的参数,从而使模型更倾向于选择简单的参数配置。 理解 L1 正则化(L1 Regularization)&a…...