Linux工具篇 之 vim概念 操作 及基础指令讲解

学校不大 创造神话

讲桌两旁 陨落的王

临时抱佛脚 佛踹我一脚

书山有路勤为径 游戏玩的很起劲

想要计算机学的好,我的博客列表是个宝

–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–

目录

一、vim的基本概念

二、vim的基本操作

三、vim命令模式命令集

四、vim底行模式命令集

五、完结撒❀


一、vim的基本概念

在介绍vim之前有些同学可能听过vi,vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vimvi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。

这篇博客我们先讲解vim基础的三种模式(其实vim一共有12种模式),分别是命令模式(command mode)、插入模式(insert mode)、底行模式(last line mode),各模式的功能区分如下:

● 正常/普通/命令模式(Normal mode)

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

● 插入模式(insert mode)

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

● 末行模式(last line mode)

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

二、vim的基本操作

进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:

$ vim test.c

不过有一点要特别注意,就是你进入vim之后,是处于[命令模式],你要切换到[插入模式]才能够输入文

[命令模式] 切换至 [插入模式]

● 输入a 光标向后一格进入插入模式

● 输入i  光标当前位置进入插入模式

● 输入o 光标回车到下一行进入插入模式

[插入模式]切换至[命令模式]

目前处于[ 插入模式 ] ,就只能一直输入文字,如果发现输错了字 , 想用光标键往回移动,将该字删除,可 以先按一下「 ESC 」键转到 [ 命令模式 ] 再删除文字。当然,也可以直接删除。
[命令模式]切换至[底行模式]
「shift + ; , 其实就是输入「 :
退出vim及保存文件,[命令模式]下,按一下「:」冒号键进入[底行模式],例如:
: w(保存当前文件)

: wq (输入「wq,存盘并退出vim)

: q!(输入 q!, 不存盘强制退出 vim)

三、vim命令模式命令集

● 插入模式

按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;

按「a 」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o 」进入插入模式后,是插入新的一行,从行首开始输入文字

从插入模式切换为命令模式

按「ESC」键。

● 移动光标

vim可以直接用键盘上的光标来上下左右移动,但正规的 vim 是用小写英文字母「 h 」、「 j 」、「 k 」、「 l 」,分别控制光标左、下、上、右移一格
按「 $ 」:移动到光标所在行的 行尾”
按「 ^ 」:移动到光标所在行的 行首”
按「 w 」:光标跳到下个单词的开头
「b 」:光标回到上个字的开头
按「 e 」:光标跳到下个字的字尾
按「 #l 」:光标移到该行的第# 个位置,如: 5l,56l
按[gg ]:进入到文本开始
按[shift g = G ]:进入文本末端
按「ctrl + b 」:屏幕往 移动一页
按「ctrl + f 」:屏幕往 移动一页
按「ctrl + u 」:屏幕往 移动半页
按「ctrl + d 」:屏幕往 移动半页

● 删除文字

 「x」:每按一次,删除光标所在位置的一个字符

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

● 复制

yw」:将光标所在之处到字尾的字符复制到缓冲区中。

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

替换

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

撤销上一次操作

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

更改

「cw 」:更改光标所在处的字到字尾处
「c#w 」:例如,「 c3w 」表示更改 3 个字

跳至指定的行

「ctrl + g 」列出光标所在行的行号。
「#G 」:例如,「 15G 」,表示移动光标至文章的第 15 行行首。

● 其他查用指令

● Shift + `=~:大小写快速切换

● Shift + zz=ZZ:直接保存并退出

● Ctrl + z:挂后台,程序并没有关闭

● Ctrl + ww:在vs开多窗口下,进行光标的窗口切换

四、vim底行模式命令集

在使用底行模式之前,请记住先按「 ESC 」键确定您已经处于命令模式,再按「:」冒号即可进入底行模式。

列出行号

set nu: 输入「set nu」后,会在文件中的每一行前面列出行号。

跳到文件中的某一行

「# : # 」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15 再回车,就会跳到文章的第 15 行。

查找字符

「/ 关键字」 : 先按「 / 」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 n 」会往后寻找到您要的关键字为止。
「? 关键字」:先按「 ? 」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直 按「 n 」会往前寻找到您要的关键字为止。
问题:/ 和 ?查找有和区别?操作实验一下

保存文件

「w : 在冒号输入字母「 w 」就可以将文件保存起来
离开vim
「q 」:按「 q 」就是退出,如果无法离开 vim ,可以在「 q 」后跟一个「 ! 」强制离开 vim。
「wq 」:一般建议离开时,搭配「 w 」一起使用,这样在退出的时候还可以保存文件。

● 批量化注释命令操作

该操作相对复杂,一共分为5步

● 1.Ctrl+v 进入视图模式

● 2.hjkl,滑动选中范围,支持Shift+g(G)文本全选,n+Shift+g 选中范围选到第n行

● 3.Shift+i 进入插入模式

● 4.//......(输入要批量化的操作)

● 5.Esc

● 其他常用指令

● !command(shell指令):不退出vim,可以在底行进行shell命令的执行,常用做函数查看,比如:!man 3 fflush

●vs filename(文件名):分屏,多文件操作

五、完结撒❀

如果以上内容对你有帮助不妨点赞支持一下,以后还会分享更多编程知识,我们一起进步。
最后我想讲的是,据说点赞的都能找到漂亮女朋友❤

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

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

相关文章

这份详细的智慧校园建设方案,赶紧收藏

高等教育信息化是促进高等教育改革创新和提高质量的有效途径,是教育信息化发展的创新前沿。进一步加强基础设施和信息资源建设,重点推进信息技术与高等教育的深度融合,能促进教育内容、教学手段和方法现代化,创新人才培养、科研组…

渗透之sql注入---实战1

本期的sql注入实战在:BUUCTF在线评测 (buuoj.cn) 该网站上进行。 启动靶机: 1.进来后搜索web1 2.点击【SWPU2019】Web1启动靶机。 3.进来之后在此界面进行注入。 开始注入: 1.找注入点: 我们输入1 后查看广告详情发现报错&a…

我用suno做了人生中第一首歌

前几周AI已经杀入音乐制作领域,Suno正式发布V3音乐生成模型,被业界誉为AI音乐的"ChatGPT"时刻。 借此机会,我也生成了人生中第一首歌,下面是歌词和对应的音频。 歌词: [Verse] 烽火连天万里霜 英雄豪杰赴…

03-JAVA设计模式-解析器模式

解释器模式 什么是解析器模式 在Java中,解释器模式(Interpreter Pattern)是一种行为设计模式,它给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子…

Linux提权--SUID提权内核漏洞本地用户提权

免责声明:本文仅做技术交流与学习,请不要乱搞破坏... 目录 SUID提权 漏洞成因 提权过程: 手工命令探针: 参考利用: 脚本探针: LinEnum.sh traitor linuxprivchecker等等... Linux命令的利用: find命令 利用nc反弹 利用python反弹--棱角 内核漏洞本地用…

电磁兼容(EMC):生产的ESD防护要点及措施

目录 1. 接地和连接系统 2. 操作员及工作区域 3. 地板 4. 座椅 5. 防静电车间 早期电子产品出现质量问题有80%的问题都是生产过程静电所引起的。随着ESD的管理程序系统的普及,ESD问题相当减小很多。例如当今的S20.20静电控制程序产生于IBM内部审核和控制系统。…

打不完!真的打不完!海量用户线索车企该怎么办?用AI!

当车企面临海量用户线索,怎么找到精准用户?大量的电话根本打不完,这种情况怎么办?建议借助AI,降本增效。下面以某车企为例来帮助大家解决这个难题! 某车企面临的问题主要有三点 第一:车企有来自…

罗德与施瓦茨矢量网络分析仪ZNB20相位一致性

矢量网络分析仪(VNA)是电子测量领域中非常重要的一类仪器,广泛应用于射频和微波电路的测试与分析。其中,德国罗德与施瓦茨公司生产的ZNB20型号是一款性能出色的矢量网络分析仪,深受业内人士的青睐。本文将重点介绍ZNB20在相位测量方面的特点和优势,为用户提供全面的使用参考。 …

微信红包架构

文章目录 包发抢拆抢红包——拆包算法——要解决并发问题那怎么做呢?——预分配红包预分配怎么实现呢?redis集群解决日均百亿级但微信没有用预分配方案哦——内存消耗过大——cas查询红包领取记录会很频繁的查询,从redis中查询hash&#xff0…

Blob对象实现文件下载

首先&#xff0c;要有下载按钮 <a download onClick{()> downloadAttentment(data)}>下载</a>其次&#xff0c;定义下载function // 此处去处理 blob 对象 const downloadStreamByATag (data, suffix, name) > {if (suffix void 0) { suffix xls; }if (…

Python数据结构与算法(1):将序列分解为单独的变量

问题 现在有一个包含 N 个元素的元组或者是序列&#xff0c;怎样将它里面的值解压后同时赋值给 N 个变量&#xff1f; 解决方案 任何的序列&#xff08;或者是可迭代对象&#xff09;可以通过一个简单的赋值操作来分解为单独的变量。 唯一的要求就是变量的总数和结构必须与序…

一个人可能代表一群人

最近有个小伙伴问他是做货代的&#xff0c;怎么能找到自己的客户&#xff1f;刚看到这个问题的时候&#xff0c;觉得这个不属于自己的范围&#xff0c;因为自己不是做货代的&#xff0c;怎么知道他们怎么工作&#xff0c;怎么去搜索客户呢&#xff1f; 但是仔细想来&#xff0…

【Java EE】日志框架(SLF4J)与门面模式

文章目录 &#x1f340;SLF4j&#x1f333;门面模式(外观模式)&#x1f338;门面模式的定义&#x1f338;门面模式的模拟实现&#x1f338;门面模式的优点 &#x1f332;关于SLF4J框架&#x1f338;引入日志门面 ⭕总结 &#x1f340;SLF4j SLF4J不同于其他⽇志框架,它不是⼀个…

跟TED演讲学英文:AI isn‘t as smart as you think -- but it could be by Jeff Dean

AI isn’t as smart as you think – but it could be Link: https://www.ted.com/talks/jeff_dean_ai_isn_t_as_smart_as_you_think_but_it_could_be Speaker: Jeff Dean Jeffrey Adgate “Jeff” Dean (born July 23, 1968) is an American computer scientist and software…

【服务器部署篇】Linux下快速安装Jenkins

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

网站建设企业网站优化

近年来&#xff0c;随着互联网的迅速发展&#xff0c;企业网站已经成为了企业展示自我形象与实力的重要载体之一。然而&#xff0c;单单拥有一个美观、简洁的企业网站并不能让企业在竞争激烈的市场中脱颖而出。因此&#xff0c;在建设企业网站的过程中&#xff0c;我们需要将企…

C++常用的输入输出方法(ACM模式)

文章目录 前言一、输入输出方法1、cin2、getline()3、getchar() 二、算法案例1、一维数组1.1 输入固定长度1.2长度不固定 2、固定二维数组3、以非空格隔开的元素输入3、常见数据结构定义以及输入3.1 链表 前言 C中的输入输出函数有很多&#xff0c;我们本章只针对大部分算法题…

上位机图像处理和嵌入式模块部署(树莓派4b开机界面程序自启动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了如何在树莓派4b上面开发qt&#xff0c;也学习了如何用/etc/rc.local启动控制台程序&#xff0c;那今天我们继续学习一下如何利用树莓…

docker compose安装redis

一、安装准备 在docker hub查看redis镜像版本。查看地址如下&#xff1a; Dockerhttps://hub-stage.docker.com/_/redis/tags 二、拉取docker镜像 我这里用redis:6.2.14版本&#xff0c;先拉取镜像。命令如下&#xff1a; docker pull redis:6.2.14 查看刚刚下载的镜像&am…

[python数据处理系列] 深入理解与实践基于聚类的过采样与欠采样技术:以K-Means为例

目录 一、过采样介绍 (一)什么是过采样 (二)过采样的优点 (三)过采样的缺点 二、欠采样介绍 (一)什么是欠采样 (二)欠采样的优点 (三)欠采样的缺点 三、基于聚类的欠抽样方法(K-Means欠采样/KMeans-Undersampling) (一)KMeans欠采样原理及其步骤介绍 (二)为什么不采…