【Liunx篇】基础开发工具 - vim

在这里插入图片描述

文章目录

  • 一.vim的基本概念
    • 1.正常/命令模式
    • 2.插入模式
    • 3.底行模式/末行模式
    • 4.视图模式
    • 5.替换模式
  • 二.vim的基本操作
    • 1.进入vim:
    • 2.退出vim:
  • 三.vim正常模式命令集
    • 1.光标定位:
    • 2.复制/粘贴
    • 3.撤销
    • 4.剪切/删除
    • 5. 更改
  • 四.vim底行模式命令集
    • 1.保存/退出
    • 2.调出行号
    • 3.搜索字符
    • 4.命令执行
    • 5.分屏操作
  • 五.补充几个实用的命令
    • 1.命令模式
    • 2.底行模式
    • 3.快速执行历史命令
  • 六.vim的配置
    • 1.vim的配置文件

一.vim的基本概念

 vim是一个专注的编辑器,支持多模式编辑,有命令模式视图模式替换模式插入模式底行模式
在这里插入图片描述

1.正常/命令模式

首次打开vim进入的就是命令模式,命令模式是vim的核心和精华。

  • 功能: 控制屏幕光标的移动,进行字符、单词或行的删除、移动、复制等操作,以及进入插入模式或末行模式。
  • 特点: Vim启动时的默认模式,用于执行各种编辑命令。在此模式下,用户可以通过键盘快捷键快速移动光标,进行文本的浏览和编辑操作。
  • 进入方式: Vim启动后自动进入,或者从其他模式按Esc键返回。

2.插入模式

  • 功能: 允许用户直接在文本中输入内容。
  • 特点: 只有在插入模式下,才可以进行文本输入。
  • 进入方式: 在命令模式下,按下i键即可进入插入模式。
  • 退出方式: 按下Esc键即可退出插入模式,返回正常模式。

3.底行模式/末行模式

  • 功能: 用于执行一些特殊的命令,如文件保存、退出Vim、查找替换、设置环境等。
  • 特点: 提供了一种方便的方式来执行全局命令。
  • 进入方式: 在命令模式下,按下进入底行模式。
  • 退出方式: 按下Esc键即可退出底行模式,返回正常模式。

4.视图模式

  • 功能: 用于选择文本块,方便进行复制、粘贴、删除等操作。
  • 特点: 择文本时有一种鼠标选择的即视感,非常直观。
  • 进入方式: 在正常模式下,按下v键进入字符选择模式,按下V键进入行选择模式,按下Ctrl+v键进入块选择模式。
  • 退出方式: 按下Esc键即可退出视图模式,返回正常模式。

5.替换模式

  • 功能: 用于直接替换光标所在位置的字符。
  • 特点: 在替换模式下,输入的字符将直接替换光标所在位置的字符。
  • 进入方式: 在正常模式下,按下R键即可进入替换模式。
  • 退出方式: 按下Esc键即可退出替换模式,返回正常模式。

二.vim的基本操作

1.进入vim:

指令: vim 文件名
输入vim及文件名称后,就进入vim全屏幕编辑画面,如果文件不存在vim也会新建文件。
在这里插入图片描述
在这里插入图片描述
注意: 进入vim之后,是处于正常模式,你要切换到插入模式才能够输入文字。

正常模式 切换到 插入模式:

  • i:在当前光标位置前插入
  • a:在当前光标位置后插入
  • o:在当前行后插入新行

插入模式 切换到 正常模式:

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

正常模式 切换到 底行模式:

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

2.退出vim:

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

三.vim正常模式命令集

1.光标定位:

  • gg:光标定位到文本最开始。
  • shift+g / G:光标定位到文本最结尾行。(第一个文本所在的地方)
  • n+G:n是任意数字,定位光标到任意行。(第一个文本所在的地方)
  • shift+4 / $:光标定位到行尾。
  • shift+6 / ^:光标定位到行首。
    上面两种方式也被称为锚点
  • hjkl:以字符为单位进行左、下、上、右移动。
  • w/b:光标以单词为单位进行行内或跨行移动。(也可可以配合n使用,一次跨越n个单词)

2.复制/粘贴

  • yy:复制当前行。(也可以配合n使用,一次复制多行)
  • p:粘贴到当前行的下一行。(也可以配合n使用,一次粘贴多份)

3.撤销

  • u:对上一个操作进行撤销,按多次可执行多次撤销。(只要不退出vim,就可以一直撤销)
  • ctrl+r:对u进行撤销。
    这两个命令是环状的,互相可以取消对方

4.剪切/删除

  • dd:剪切/删除当前行。dd完如果不p的话,那就是删除,如果p的话就是剪切
  • x:删除光标所在位置的字符。(也可以配合n使用,一次删除多个字符)
  • shift+x / X: 删除光标所在位置的前面一个字符。(也可以配合n使用,一次删除前n个字符)

5. 更改

  • shift+ `/ ~:快速大小写切换。
  • r:进行文本替换。(也可以配合n使用,进行小范围的文本替换)
  • shift+r / R:模式切换为替换模式,替换光标所到之处的字符。(退出无脑Esc

四.vim底行模式命令集

1.保存/退出

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

2.调出行号

  • set nu:调出行号
  • set nonu:取消行号

3.搜索字符

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

4.命令执行

  • !:在不退出vim的情况下执行命令。

5.分屏操作

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

五.补充几个实用的命令

1.命令模式

  • 批量化注释:ctrl+v ->hjkl->shift+i / I->//->Esc
  • 批量化去注释:ctrl+v->hjkl->d

2.底行模式

  • 批量化替换:%s/被替换的对象/替换的对象/g,gglobal的意思,表示全面的
    例如:将文本中的printf替换成print:%s/printf/print/g

  • 进文件后光标直接到指定行:vim 文件名 +指定行
    例如:进入code.c文件光标直接定位到第15行:vim code.c +15

3.快速执行历史命令

  • !+命令的开始符:快速执行历史命令。
    例如:在这里插入图片描述

六.vim的配置

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

1.vim的配置文件

 一般情况下vim的配置都是在一个叫做.vimrc的文件里面。这个文件如果没有我们要手动创建一个。所以vim最根本的配置本质上就是修改当前家目录里的.vimrc的文件,向里面添加配置项。
在这里插入图片描述
示例:
没添加任何配置项的原始vim
在这里插入图片描述
.vimrc文件里面添加显示行号的配置项set nu,保存并退出
在这里插入图片描述

再次打开test.c文件就会发现代码前带上了行号
在这里插入图片描述
一般配置vim都是在你自己的家目录里面配置的,所以一台Liunx机器下有多个用户的前提下,你自己配置的vim影响不了用户。


今天的内容就分享到这里,如果这篇文章对你有帮助,记得点赞,评论+收藏 ,最后别忘了关注作者,作者将带领你探索更多关于Liunx方面的问题。

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

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

相关文章

Windows安装WSL子系统及docker,以及WSL和docker配置、使用及问题解决

在Windows操作系统中,Ubuntu子系统(也称为Windows Subsystem for Linux, WSL)为开发者提供了一个在Windows环境下运行Linux环境的平台。然而,有时用户在按照Ubuntu子系统或者使用WSL时,可能会遇到各种问题,下面总结一下解决方式。 想要在Windows上安装Docker(实际上是基…

【Golang】Go语言编程思想(六):Channel,第三节,使用Channel实现树的遍历

使用 Channel 实现树的遍历 tree 在此处简单回顾一下之前学过的二叉树遍历,首先新建一个名为 tree 的目录,并在其下对文件和子目录进行如下组织: 其中 node.go 存放的是 Node 的定义: package treeimport "fmt"type…

IDEA 2024 版本配置热部署

在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊 采用下面三步骤可以完成 1.在IDEA中settings中搜索Debb…

【目标跟踪】DUT Anti-UAV数据集详细介绍

DUT Anti-UAV数据集是大连理工大学的团队公开的数据集(DUT是他们学校的简称),其中包括了两个子数据集:目标检测和目标跟踪(也就是说,目标检测和目标跟踪都可以用这个数据集)。该数据集为可见光模…

经典多模态模型CLIP - 直观且详尽的解释

阅读原文 在本文中,您将了解“contrastive language-image pre-training”(CLIP),这是一种创建视觉和语言表示的策略,效果非常好,可用于制作高度特定且性能卓越的分类器,而无需任何训练数据。本…

探索云原生安全解决方案的未来

我们是否充分意识到云端所面临的网络安全威胁? 在当今互联互通的世界中,维护安全的环境至关重要。云的出现扩大了潜在威胁的范围,因为它催生了机器身份(称为非人类身份 (NHI))及其秘密。随着组织越来越多地转向云原生…

项目组件框架介绍[etcd]

文章目录 前言etcd安装Ubuntu 上通过包管理器安装通过源码安装配置 客户端开发包开发包的安装接口介绍添加一个键值对获取一个键值对租约保活机制监听 封装服务注册与发现服务注册服务发现 前言 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配…

在Windows 10中使用SSH远程连接服务器(附花生壳操作方法)

SSH 在 linux 中是一种重要的系统组件,用户可以使用 SSH 来远程连接 linux 系统的计算机,或者传输文件。不过在 win10 以前,windows 并不原生支持 SSH,需要借助第三方工具来使用 SSH 功能。而实际上,微软在 2015 年就曾…

【环境搭建】Jeecg-Boot v3.5.0 Docker搭建

前言 最近需要复现JeecgBoot的SQL注入漏洞,必须要搭建JeecgBoot v3.5.0这个版本才行,DockerHub没人push这个版本的,相关博客也比较少,所以自己来搭建,记录一下过程。 前置环境 Ubuntu 20.04Docker version 27.3.1do…

【人工智能基础06】人工神经网络(练习题):神经网络的计算、激活函数的选择与神经网络的退化

文章目录 1. 基于神经网络计算心理健康程度2. 添加激活函数的神经网络计算3. 使用神经网络预测小胖是否会变胖4. 激活函数选择的讨论5. 神经网络的设计6. 深度线性模型的表达能力线性模型7. 神经网络退化 主要讨论的内容 什么是人工神经网络,相关计算反向传播算法的…

STM32 串口收发文本数据包

单片机学习! 目录 前言 一、文本数据包格式 二、串口收发文本数据包代码 三、代码解析 3.1 标志位清除 3.2 数据包接收 四、代码问题改进 总结 前言 本文介绍了串口收发文本数据包程序设计的思路并详解代码作用。 一、文本数据包格式 文本数据包的格式的定义…

预言机调研

预言机 1. 概述 预言机主要承担两个工作,一是验证信息可靠性,二是传递信息。 如果没有预言机,区块链的信息来源将仅限于其内部数据,其广泛使用的潜力和可能性将会大大降低。 区块链预言机是区块链与外部世界之间的桥梁。它们使区…

【1211更新】腾讯混元Hunyuan3D-1文/图生3D模型云端镜像一键运行

目录 项目介绍 显存占用 11月21 新增纹理烘焙模块Dust3R 烘焙相关参数: AutoDL云端镜像 启动说明 标准模型下载 项目介绍 https://github.com/Tencent/Hunyuan3D-1 腾讯混元 3D 生成模型,支持文本和图像条件生成(对于文生3D,支持中/英双语生成)…

【前端】HTML标签汇总

目录 展示用户信息的标签 1.文本标签 span 2.标题标签 h1~h6 3.竖着布局的标签 div 4.段落标签 p 5.超链接标签 a 5.1跳转至网上的资源 5.2锚点 6.列表标签 6.1有序列表 ol 6.2无序列表 ul 7.图片标签 img 7.1相对路径 7.1.1兄弟关系 7.1.2叔侄关系 7.1.3表兄弟…

今天你学C++了吗?——C++中的类与对象(日期类的实现)——实践与知识的碰撞❤

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

负载均衡和tomcat

一、负载均衡 1.相关概念 nginx的反向代理<-->负载均衡 负载均衡 将四层或者是七层的请求分配到多台后端的服务器上&#xff0c;从而分担整个业务的负载。提高系统的稳定性&#xff0c;也可以提供高可用&#xff08;备灾&#xff0c;其中的一台后端服务器如果发生故障…

【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和 2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集 题目大意 对于一个长度为 ( N ) 的整数数列 ( A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1​,A2​,⋯,AN​ )&#xff0c;小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i l r A i A l A l 1 ⋯ A r \su…

【C++】判断能否被 3, 5, 7 整除问题解析与优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;老师代码实现与分析老师代码逻辑分析优点缺点 &#x1f4af;学生代码实现与分析学生代码逻辑分析优点缺点 &#x1f4af;改进与优化优化代码实现优化…

[计算机网络]IP地址推行的“书同文,车同轨”

硬件地址无法直接转换的故事 在很久很久以前&#xff0c;网络世界就像一个庞大的帝国&#xff0c;各个村落&#xff08;网络&#xff09;都有自己的语言&#xff08;硬件地址&#xff09;。每个村落都有自己的规则和习惯&#xff0c;村里的每户人家&#xff08;设备&#xff0…

深度优先搜索(DFS)与回溯法:从全排列到子集问题的决策树与剪枝优化

文章目录 前言&#x1f384;一、全排列✨核心思路✨实现步骤✨代码✨时间和空间复杂度&#x1f381;1. 时间复杂度&#x1f381;2. 空间复杂度 &#x1f384;二、子集✨解法一&#xff1a;逐位置决策法&#x1f381;步骤分析&#x1f381;运行示例&#x1f381;代码 ✨解法二&a…