【Linux从入门到精通】vim的基本使用各种操作详解

news2024/11/26 13:38:39

  

文章目录

一、vim编辑器简单介绍

二、vim编辑器的四种模式

2、1 正常/普通/命令模式(Normal mode)

2、2 插入模式(Insert mode)

2、3 末行模式(last line mode)

三、命令模式的相关操作实例

3、1 光标的相关操作

3、2 文本操作

四、插入模式下的相关操作

五、末行模式下的相关操作


🙋‍♂️ 作者:@Ggggggtm 🙋‍♂️

👀 专栏:Linux从入门到精通 👀

💥 标题:vim的基本使用各种命令详解 💥

 ❣️ 寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景 ❣️

  vim下的操作多而杂,本篇文章会对vim下常用的多个操作进行详细解释。附加动图解释多个操作,超级详细,希望会对你有所帮助。 

一、vim编辑器简单介绍

  vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vimvi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x windowmac os、windows。通俗来讲,vim就是从 vi 发展出来的一个文本编辑器,是程序开发者的一项很好用的工具。

  我们可先看一下vim的键盘图大概了解一下:

  下面会给大家详细解释vim编辑器的使用细节。 

二、vim编辑器的四种模式

  vim编辑器下一共有四种模式:正常/普通/命令模式(Normal mode) 插入模式(Insert mode) 、末行模式(last line mode)、可视化模式Visual Mode)

  我们初学的时候主要掌握正常/普通/命令模式(Normal mode) 插入模式(Insert mode) 、末行模式(last line mode)三种模式即可。这三种模式也基本可以满足我们在Linux下编程的需要了。下面对上述的主要三种模式主要功能简单阐述一下:

2、1 正常/普通/命令模式(Normal mode)

  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2、2 插入模式(Insert mode)

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

2、3 末行模式(last line mode)

  文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入。

三、命令模式的相关操作实例

3、1 光标的相关操作

  vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。为什么「h」、「j」、「k」、「l」还能控制光标上下移动呢?原因很简单,在最早的时候,键盘上并没有上下左右那四个按键,并且也没有鼠标。所以移动光标只能设置到字母上。

  当一行很长的时候,我们查看到行中时,想切换到行尾或者行首。这里就引出了光标位置锚点:shift + ^(光标切换到行首)shift + $(光标切换到行尾)

  正常情况下,一个字母一个字母的移动似乎也很慢,这里也可通过:w(从左往右以单词为单位移动)、b(从右往左以单词为单位移动)。

  相同的问题:一个项目很大时,我们总不能一行一行的移动。所以我们这里就有相关的操作光标可以整个文本移动gg(光标移到起始行)、shift+g(光标移到起结束行)、n+shift+g(光标移到指定的第n行)

3、2 文本操作

  首先复制、粘贴肯定少不了,也是常用的。我们复制可通过:yy(复制当前行)、n+yy(复制当前行和之后的n-1行)。复制后粘贴可通过:p(粘贴)、n+p(一次重复粘贴n行)。

  剪切当然也是必不可少:dd(删除当前所在行)、n+dd(删除当前所在行及后n-1行)、dd后再按p(前且功能)。

  大小写的快速切换shift + ~

  我们知道剪切功能可删除一行,那要是我们想要删除其中的一部分呢?其中删除光标之后的字符:x(删除光标之后的一个字符)、n+x(从左向右删除光标之后的n个字符)、shift+x(从右向左删除光标前的一个字符)、n+shift+x(从右向左删除光标前的n个字符)。

  其中我们还可以进行替换操作r(替换一个光标所在位置的字符)、n+x(替换n哥字符)、shift+r(进入到替换模式)。 

  我们还可进行撤销操作u(撤销误操作)、ctrl+r(撤销最近的撤销)。 

  以上操作均为命令模式下的操作。上述的操作其实我们在插入模式下都可以完成的。

四、插入模式下的相关操作

  插入模式没什么好说的。我们了解怎么进入插入模式就行:

  • 命令模式+i,转换到插入模式,在光标前一个位置进行插入;
  • 命令模式+a,转换到插入模式,在光标后一个位置进行插入; 
  • 命令模式+o,转换到插入模式,在当前行下再新建一行进行插入。

  我们按 Esc 键可从插入模式转换到命令模式。

五、末行模式下的相关操作

  在末行模式的情况下,我们最常用的操作就是:q(退出编辑模式,并没有保存)、w(写入文件,也就是保存) 、wq(保存并退出编辑模式)、!(q!、w!、wq!表示强制操作)。

  在命令模式下,我们可按 shift + : 键可切换到末行模式。正常情况下,我们每行是没有行号的,我们可通过:set nu(列出行号)、set nonu(取消行号)。

  还有一种情况就是我们需要同时对多个文件进行编辑,我们可通过:vs+文件名(开启另一个文件框)

  我们可通过:ctrl +w+w(光标从一个文件转换到另一个文件)。当然,我们想退出其中一个时,我们可进入到末行模式进行退出。注意,此时退出的为光标所在的文件

  以上就是我们在vim下进场用的操作。我们应该多加训练,达到熟练的掌握状态。本篇文章的内容讲解到这里,希望以上内容贵对你有所帮助ovo~

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

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

相关文章

FreeRTOS任务的创建(动态方法和静态方法)

文章目录 前言一、FreeRTOS任务基本概念二、动态创建任务三、静态创建任务四、静态创建任务和动态创建任务的区别五、任务的删除总结 前言 本篇文章将介绍FreeRTOS任务的创建(动态方法和静态方法),了解什么是任务和任务的具体创建方法。 一…

文件 IO 操作

文章目录 一 文件1.1 文本模式1.2 二进制模式 二 函数2.1fopen()2.2 getc() 和 putc()2.3 fclose()2.4 fprintf() 和 fscanf()2.5 fgets() 和 fputs()2.6 rewind()2.7 fseek() 和 ftell()2.8 fflush()2.9 fgetpos() 和 fsetpos()2.10 feof() 和 ferror()2.11 ungetc()2.12 setv…

[python][vpython]用vpython实现小球砸弹簧代码

代码: from vpython import * # 加载vpython模块s1 canvas(width1200, height500, backgroundcolor.white, centervector(0, 1, 0)) # 定义画布 L0 1.4 # 定义初始高度 natural_length 0.9 # 设置弹簧原长 base_spring box(posvector(0, 0, 0), sizevector…

solidity 安全 如何阻止重入攻击

什么是可重入攻击? 我们使用合约的过程中,经常会遇到这种情况,智能合约能够调用外部的合约;这些外部合约又可以回调到调用他们的智能合约;在这种情况下,我们说智能合约被重新输入,这种情况被称为…

守护进程Daemon

进程组、对话期和控制终端关系 每个会话有且只有一个前台进程组,但会有0个或者多个后台进程组。产生在控制终端上的输入(Input)和信号(Signal)将发送给会话的前台进程组中的所有进程。对于输出(Output&…

给大家介绍几个手机冷门但好用的小技巧

技巧一:拍照识别植物 手机的拍照识别植物功能是指在使用手机相机时,可以通过对植物进行拍照,并通过植物识别技术,获取植物的相关信息和资料。其主要优点如下: 方便实用:使用拍照识别植物功能,…

Small Tip: 怎么去Schedule一个Analysis for Office的workbook

workbook的query不能是本地的,也就是说不能是在包$Tmp里面的。这种的没办法在BO里面用SSO。也就没办法Schedule。 前提条件有: 1.BO和BW系统的SSO配置得OK。 如果没有SSO,那么每次打开workbook就会有一个要登录BW的弹窗,这样是…

从零开始学习Linux运维,成为IT领域翘楚(三)

文章目录 🔥Linux超级用户与伪用户🔥Linux文件基本属性🔥Linux权限字与权限操作 🔥Linux超级用户与伪用户 Linux下用户分为三类:超级用户、普通用户、伪用户 ⭐ 超级用户:用户名为root,具有一切…

初识 OPC

为什么需要OPC? 随着自动化的发展,工厂的自动化程度越来越高,面临着问题: 设备之间,设备与应用程序之间交互数据 不同产商设备/应用程序具有不同接口/通信协议,如何简单快速连接?采集的数据及…

【计算机网络】学习笔记:第四章 网络层【王道考研】更新中....

基于本人观看学习b站王道计算机网络课程所做的笔记&#xff0c;不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系&#xff0c;立删 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0c;如有疑问欢迎…

计算机组成原理4.2.2汉明码

编码的最小距离 奇校验和偶校验 看1的个数是奇数 还是偶数 汉明码 汉明码的配置 根据不等式&#xff0c;确定增添几位&#xff0c;根据指数放置增添位 汉明码的检错 分不同检测小组 分组规则&#xff1a;哪位为’1‘就是哪组元素。 1号位为‘1’的都是第一组元素&#…

JUnit 5 使用教程 及 JUnit 4/5的差异

1. JUnit 5产生的原因 JDK 8在java中带来了迷人的功能,最值得注意的是lambda表达式 为了适应 Java 8 风格的编码和新的功能特性,JUnit 提供了JUnit 5 2. JUnit 5 架构 与 JUnit 4 相比,JUnit 5 由来自三个不同子项目的几个不同模块组成:JUnit 5 = JUnit Platform + JUni…

controlnet1.1模型和预处理器功能详解(各预处理器出稿对比及对应模型说明)

ControlNet 1.1 与 ControlNet 1.0 具有完全相同的体系结构,ControlNet 1.1 包括所有以前的模型&#xff0c;具有改进的稳健性和结果质量&#xff0c;且增加并细化了多个模型。 命名规范 项目名版本号标识基础模型版本功能名文件后缀名 control 官方总是以control为项目名&…

Java NIO(Java Non-Blocking IO:非阻塞式IO)(2)

1.NIO非阻塞网络编程原理分析 1>.NIO非阻塞网络编程相关的(Selector、SelectionKey、ServerScoketChannel和SocketChannel)关系梳理图: 说明: ①.当客户端连接时,会通过服务器端ServerSocketChannel得到/生成对应的SocketChannel; ②.通过register(Selector sel,int ops)…

SpringBoot 如何防御 CSRF 攻击

SpringBoot 如何防御 CSRF 攻击 CSRF 原理CSRF实践CSRF防御前后端不分离方案前后端分离方案 CSRF 就是跨域请求伪造&#xff0c;英文全称是 Cross Site Request Forgery。 这是一种非常常见的Web攻击方式&#xff0c;其实是很好防御的&#xff0c;但是由于经常被很多开发者忽略…

压缩HTML引用字体

内容简介 有些网站为了凸显某部分字体&#xff0c;而引入自定义字体&#xff0c;但由于自定义字体相对都比较大&#xff08;几M&#xff09;,导致页面加载缓慢&#xff1b;所以本文介绍三种压缩字体的方法&#xff0c;可根据项目情况自行选择。 压缩方法 1、利用Fontmin程序&a…

ETL工具 - Kettle 输入输出算子介绍

一、Kettle 输入输出算子介绍 上篇文章对 Kettle 进行了简单的介绍及做了个简单的案例&#xff0c;但是对 Kettle 的Step算子工具没有做过多的解释&#xff0c;本篇文章从输入输出算子工具开始进行介绍。 下面是上篇文章的地址&#xff1a; ETL工具 - Kettle 介绍及基本使用 …

正点原直流有刷驱动板的硬件解说

这里写目录标题 H桥电流采集电路电源电压采集电路温度采集电路过流检测电路过流保护电路![请添加图片描述](https://img-blog.csdnimg.cn/fa130e17e23b471e8e27ae942e1ff125.png) H桥 因为光耦(EL0631)作用&#xff0c;PWM 引脚电平输入IN相反。 然后半桥芯片的逻辑表为&#x…

【Python】BeautifulSoup

一、什么是BeautifulSoup Beautiful Soup 简称 BS4&#xff08;其中 4 表示版本号&#xff09;是一个 Python 第三方库&#xff0c;它可以从 HTML 或 XML 文档中快速地提取指定的数据。 二、BS4下载安装 点击最下面的终端进如命令行界面 &#xff08;进入成功界面&#xff1a;&…

C++/Qt 小知识记录3

工作中遇到的一些小问题&#xff0c;总结的小知识记录&#xff1a;C/Qt 小知识 QLineEdit限制输入大于0的正整数QLayout内清空已布局的WidgetWindows结束进程直接结束&#xff0c;子进程不响应结束事件正常结束&#xff0c;子进程响应结束事件 CMake关闭控制台Console实体与值对…