当前位置: 首页 > 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 支持多种环境,包括开发环境、测试环境、预发布环境和生产环境。不同的环境具有不同的配置,可以在不同的环境中对应用程序进行测试、验证和部署。以下是每种环境的用途和相应的代码案例。 开发环境 开发环境是开发人员在本地进行开发的环境&…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM&#xff09…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...