【Linux】Linux编辑神器vim的使用

news2025/2/28 2:56:47

目录

         一、Vim的基本概念

         二、Vim的基本操作

                1、进入vim

                2、正常模式切换至插入模式

                3、插入模式切换至正常模式

                4、正常模式切换至底行模式

                5、退出Vim编辑器

         三、Vim正常模式命令集

                1、移动光标

                2、删除文字

                3、复制

                4、替换

                5、撤销

         四、Vim底行模式命令集

                1、列出行号

                2、光标跳转

                3、查找字符

                4、替换字符

 


 

一、Vim的基本概念

     Vim是多模式编辑器,我们其实只用掌握这3中即可,分别是命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode)。

       命令模式(正常模式/普通模式)

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

       插入模式

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

       底行模式 

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

二、Vim的基本操作

   1、进入vim

    进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面: vim test.c,如果有这个test.c 的文件就会直接进去,如果没有就会自动创建并进去。

此时就已经进去编辑器内部,但是这只处于正常模式,是不可以编辑的。

   2、正常模式切换至插入模式

    从正常模式切换到插入模式有3中方法,直接可以按a 或 i 或 o 就能直接进入插入模式下,此时编辑框下面也有所变化,如下图所示:

    左下角变成了INSERT,说明已经切换到了插入模式了,此时就可以编辑。

   3、插入模式切换至正常模式

    从插入模式切换到正常模式,直接按 Esc 退出键即可。

   4、正常模式切换至底行模式

    从正常模式切换到底行模式,需要我们按 Shift + : 组合键方可进入底行模式,注意:从插入模式是不可以直接进入底行模式,需要先退出插入模式,从插入模式进入底行模式。

   5、退出Vim编辑器

    退出Vim编辑器是从底行模式下退出的,看到有(:),在冒号后面输入相对应的字母即可退出。

q:  输入 q 是直接退出,是不会保存刚才所编辑的内容。

wq:是先进行保存,然后再退出。

q! :是强制退出。

    我们常用是wq 的方式进行退出,不然我们编辑的东西会不存在。

    注意:以上命令都是在英文输入的情况下方可执行,在中文输入的情况下,是不执行命令的。

三、Vim正常模式命令集

   1、移动光标

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格;
  • 按「G」:移动到文档的最后;
  • 按「 $ 」:移动到光标所在行的“行尾”;
  • 按「^」:移动到光标所在行的“行首”;
  • 按「w」:光标跳到下个字的开头;
  • 按「e」:光标跳到下个字的字尾;
  • 按「b」:光标回到上个字的开头;
  • 按[gg]:进入到文档开始;
  • 按[shift+g]:进入文档末端;
  • 按[n + shift+g]:将光标定位到指定的n行;
  • 按[shift+~]:将光标所在的字母进行大小写转换;
  • 按「ctrl」+「b」:屏幕往“后”移动一页;
  • 按「ctrl」+「f」:屏幕往“前”移动一页;
  • 按「ctrl」+「u」:屏幕往“后”移动半页;
  • 按「ctrl」+「d」:屏幕往“前”移动半页.

   2、删除文字

  • 按「x」:每按一次,删除光标所在位置的一个字符;
  • 按「n + x」:表示删除光标所在位置的“后面(包含自己在内)”6个字符;
  • 按「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符;
  • 按「n + X」:表示删除光标所在位置的“前面”20个字符;
  • 按「dd」:删除光标所在行;
  • 按「n + dd」:从光标所在行开始删除n行.

   3、复制

  • 按「yy」:复制光标所在行到缓冲区;
  • 按「n + yy」:表示拷贝从光标所在的该行“往下数”6行文字;
  • 按「p」:将缓冲区内的字符贴到光标所在位置;注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。

   4、替换

  • 按「r」:替换光标所在处的字符;
  • 按「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

   5、撤销

  • 按「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。
  • 「ctrl + r」: 撤销的恢复。

四、Vim底行模式命令集

   1、列出行号

set nu :输入命令之后,敲回车键,代码的每一行前面就会显示行号。

 此时没有行号。

就完成了行号的添加。

   2、光标跳转

在底行模式下,输入一个数字n,按回车,光标就会来到第 n 行。

 

   3、查找字符

 在底行模式下,输入 [?+ 你想要寻找的字符] 。

   4、替换字符

在底行模式下,输入[%s/xxx/xxx/g],就可以完成替换。比如 %s/hello/HELLO/g ,就完成了替换。

 

 


 

本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

 

 老铁们,记着点赞加关注!!! 

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

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

相关文章

【Linux】进程信号捕捉

前言 在【Linux】进程信号及信号产生中,我们提到,进程接收到信号,并不是立刻处理,而是在合适的时候才执行相应的动作,那合适的时候是什么时候呢,进程捕捉信号的过程究竟是怎么样的呢?本篇博客就…

Python入门(七)if语句(二)

if语句(二) 1.if语句1.1 简单的if语句1.2 if-else语句1.3 if-elif-else结构1.4 使用多个elif代码块1.5 使用多个elif代码块 2.使用if语句处理列表2.1 检查特殊元素2.2 确定列表不是空的2.3 使用多个列表 作者:xiou 1.if语句 前面我们理解了…

React Native技术探究:开发高质量的跨平台移动应用的秘诀

作为一个跨平台移动应用开发框架,React Native在开发过程中能够有效提高开发效率、降低开发成本、缩短上线时间,因此备受开发者的欢迎。然而,如何使用React Native开发出高质量的跨平台移动应用呢?本文将探究这个问题,…

(一)PUN 2基本介绍

一、开始 (一)基本简介 1.简介 Photon Unity Networking (PUN) 是一个用于多人游戏的 Unity 包。灵活的配对让您的玩家进入可以通过网络同步对象的房间。 RPC、自定义属性或“低级别”光子事件只是其中的一些功能。快速且(可选)可靠的通信是通过专用的…

选卡攻略!一分钟教你选择一款好的流量卡!

很多流量卡看似便宜,但用起来套路不少,所以,挑选一款流量卡并不是只看资费,而且要了解它的各个方面,比如:优惠期、合约期等等,今面,小编就带大家一块了解如何选择一款好的流量卡。 …

默认的HuggingFace模型

介绍 在本文中,我将探讨表征学习中常见的一种做法——使用预训练神经网络的冻结状态作为学习特征提取器。 具体而言,我感兴趣的是研究使用这些提取的神经网络特征训练的简单模型的性能与使用迁移学习初始化的微调神经网络的性能的比较。预期受众主要是数…

一款功能强大的多合一聚合支付Discuz插件,可直接替换DiscuzX 3.5自带的支付接口

源码介绍: Discuz论坛多合一聚合支付接口插件,该插件直接替换了自带的支付接口功能, 增强了支付的扩展性,自带支持支付宝、微信、QQ钱包官方支付, 以及彩虹易支付、我爱支付、虎皮椒等支付通道,并且可以…

专家共话:存力一体成“东数西算”全场景利器

从2022年2月17日正式全面启动至今,“东数西算”工程已经度过了一周年。一年多的实践探索证明,激活数据要素,推动算力成为核心生产力,离不开“存力先行”。其中,东西部存力一体化,是支撑“东数西算”全场景应…

「读书感悟系列」友者生存:与人为善的进化力量(我会解释人类善良和暴力的进化原因)...

作者 | gongyouliu 编辑 | gongyouliu ‍ 最近花了不长的时间读完了这本『友者生存:与人为善的进化力量』,由于我对进化生物学非常感兴趣,又有4年的生物学学习背景,读起来还是非常容易的,这本书算是人类进化学的科普读…

tcp cubic 与随机丢包

前面提到过一个 AIMD 的修正方法,“二次机会 MD”:首次丢包只 MD 收缩一个相对较小的比例,再次丢包时再继续收缩,直到 beta * Wmax。 效果如下图: 大意是在检测到丢包时,先 MD 一个相对小的缩放比例&…

DS215KLDCG1AZZ03A如何编写温度比例的代码?

DS215KLDCG1AZZ03A如何编写温度比例的代码&#xff1f; 可编程逻辑控制&#xff0c;简称PLC&#xff0c;由美国机械工程师迪克莫利于1年1968月<>日首次设计。PLC最初是为了减少汽车行业员工的工作量而开发的&#xff0c;从那时起&#xff0c;它们已被用于所有其他恶劣环境…

常用linux多场景查找文件的方法及对比

波哥整理了在linux中根据文件名称查文件&#xff0c;根据文件内容查找文件&#xff0c;根据进程号查找文件的方法及命令详细解释。 一、find命令 find命令可以在指定目录下查找文件&#xff0c;其语法如下&#xff1a; find <目录> <选项> <匹配模式> 选项和…

vue-4:注册组件,组件传参,特殊属性ref $parent $root,透传,内置组件,自定义指令,mixins混入

注册组件&#xff0c;使用组件&#xff08;项目中都是写component中&#xff09; 为什么用组件&#xff1a;组件可以复用&#xff0c;每一个组件都是独立的&#xff0c;模板&#xff0c;数据&#xff0c;css样式互不影响 全局注册组件component&#xff1a;请勿滥用全局组件in…

一个打通基于XML管理Bean

目录 准备工作 添加依赖 引入配置文件 获取bean ①方式一&#xff1a;根据id获取 ②方式二&#xff1a;根据类型获取 ③方式三&#xff1a;根据id和类型 ④注意的地方 ⑤扩展知识 依赖注入之setter注入 ①创建学生类Student ②配置bean时为属性赋值 ③测试 依赖注…

Powerlink协议在嵌入式linux上的移植和主从站通信(电脑和linux板通信实验)

使用最新的openPOWERLINK 2.7.2源码&#xff0c;业余时间搞定了Powerlink协议在嵌入式linux上的移植和测试&#xff0c;并进行了下电脑和linux开发板之间的通信实验。添加了一个节点配置&#xff0c;跑通了源码中提供的主站和从站的两个demo。这里总结下移植过程分享给有需要的…

飞桨EasyDL月刊:4月功能全新升级,模型训练步骤缩短63%

亲爱的开发者&#xff1a; 近来以生成式 AI、多模态预训练大模型为代表的技术变革正席卷全球&#xff0c;与此相关的智能化工具和平台陆续发布。飞桨 EasyDL 和 BML 位于文心全景图的工具与平台层&#xff0c;提供大模型开发套件及多种建模方式&#xff0c;全面支持基于大模型能…

访客接入-唯一客服系统文档中心

网站可以通过多种方式接入客服系统&#xff0c;直接跳转链接&#xff0c;或者在页面右下角弹窗 访客链接 可以在自己的网站接入&#xff0c;访客独立链接&#xff0c;入口形式可以完全自己写&#xff0c;只是跳转链接。 例如下面的访客链接https://gofly.v1kf.com/chatIndex?k…

Angular开发之——安装Angular CLI并初始化项目(02)

一 概述 Angular CLI介绍及开发环境准备安装Angular CLI开发工具使用Angular CLI初始化Angular项目简单体验Angular 二 Angular CLI介绍及开发环境准备 2.1 Angular CLI介绍 目前&#xff0c;无论你使用什么前端框架&#xff0c;都必须要使用到各种NodeJS工具&#xff0c;An…

Leetcode 剑指 Offer II 026. 重排链表

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&a…

day32_HTML

今日内容 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 晨考 一、二阶段介绍 第一阶段: JavaSE, 对java基本语法,面向对象知识,和编程有了基本了解 第二阶段: javaweb阶段 开发入门 前端 网页(用户直接交互界面)html 网页css 美化js 动起来 - jquerybootstrap 服务器 …