Linux编辑器---vim

       

目录

       

        1、vim的基本概念

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

        2、1命令模式下一些命令(不用进入插入模式)

        3插入模式(Insert mode)

        4末行/底行模式(last line mode)

        4、1底行模式下的一些命令

        5、普通用户无法进行sudo提权的解决方案

        6、vim配置问题

        6、1配置原理

       6、1、1配置文件的位置

        6、1、2常用配置选项,用来测试


        1、vim的基本概念

        vim是一种多模式的编辑器。

        这里我们讲解vim的三种模式(其实有很多模式,这里掌握三种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。

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

        命令模式是vim的核心模式。如果忘了自己在哪个模式,无脑ESC回到命令模式。

        命令模式:允许使用者通过命令,来进行文本的编辑控制。

        刚开始打开vim的时候,暂时无法正常输入,这是进入了命令模式。当我们输入i(insert)就进入到了插入模式。(左下角出现insert)。就可以正常编写程序。

        2、1命令模式下一些命令(不用进入插入模式)

        yy:复制当前行。(支持在yy前带数字: n + yy,表示从当前光标开始,连续复制n行)

        p:粘贴到我们当前光标的下一行。(支持在p前面带数字:n + p,表示把指定内容复制粘贴n次。)

        u:撤销

        dd:将光标指定行剪切/删除。,后面带上p就是剪切。(支持前面带数组:n + dd,表示把指定连续n行剪切/删除。)

        x:在光标位置向后删除一个字符(在一行内)。(也支持带n,n+x,向后删除n个字符)

        shift + x = X :在光标位置向前删除一个字符(在一行内)。(也支持带n,n+x,向前删除n个字符)

        r + 字符:对光标指定的位置进行一个字符的替换。(也支持n,n + r + 字符,向后替换n个字符

        shift + r = R :进入替换模式,直接进行文本替换。

        i:按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
        a:按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
        o:按「o」进入插入模式后,是插入新的一行,从行首开始输入文字

        shift + ;,即:进入底行模式。

        移动光标:可通过上下左右移动,也可以用 h j k l分别对应左 下 上 右移动:h(左),j(下),k(上),l(右)也可以带n

        G:移动到文章的最后

        nG:移动到文章的第n行

        gg:进入到文本开始

        $ :移动到光标所在行的“行尾”

        ^:移动到光标所在行的“行首”

        w:光标跳到下个字的开头,(以单词为单位,往后移)

        b:光标回到上个字的开头,(以单词为单位,往前移)

        e:光标跳到下个字的字尾

        nl:光标移到该行的第n个位置,如:5l,56l

        ctrl + r:取消撤销动作。(对撤销进行撤销)

        shift + ` = ~:大小写转换。

        shift + zz = ZZ:保存并退出。(不建议)(如果ctrl + z会中断vim,并形成临时文件。如果断网了,也会形成临时文件。临时文件是个隐藏文件。有了临时文件:进入vim时,R可恢复文件,D可删除临时文件。临时文件其实是vim在保护文件

        批量化注释:先ctrl+v进入visual block模式,然后hjkl上下选择想要注释的行,再shift + i = I,再 // ,再ESC按一次或两次。

        消除注释:先ctrl+v进入visual block模式,然后hjkl上下选择想要删除注释的行,一定要仅包含//,再d

        ctrl+b:屏幕往“后”移动一页

        ctrl+f:屏幕往“前”移动一页

        ctrl+u:屏幕往“后”移动半页

        ctrl+d:屏幕往“前”移动半页

        

        3插入模式(Insert mode)

         插入模式:其实就是我们的编辑模式

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

        4末行/底行模式(last line mode)

        底行模式:用来进行让vim进行包括但不限于shell进行交互的。什么保存,退出,什么的。

        在命令模式下shift+:(输入冒号) 即可进入底行模式模式。输入wq就可以退出了。

        如果刚进入vim的时候后面没有接文件,想要退出,就在命令模式下 :+ q!即可。

        4、1底行模式下的一些命令

        w表示保存当前文件

        wq表示存盘并退出vim

        q:退出

       :强制

        wq!:保存并强制退出

        q!表示不存盘强制退出

        set nu:标出行数

        set nonu:不标出行数

        /关键字:做搜索

        !command:不退出vim,可以进行shell命令的执行。最常用的就是查看常用函数使用方式,即man手册。

        vs filename:分屏,多文件操作。(ctrl ww,切屏)(多屏之间支持跳转:即在这屏里面复制的东西,可以粘贴到另一屏)(其实也是vim了一个文件,vim创建的文件如果不保存,退出之后不会创建。只有保存后才会创建出来

        5、普通用户无法进行sudo提权的解决方案

        不能进行sudo提权的原因是:普通用户并没有在sudoers白名单中。

        1、首先转换为root用户

        2、vim /etc/sudoers

        3、在100行左右,和root的格式类似的添加一行,将新的一行的root位置处改为普通用户名

        4、wq!强制保存退出。

        5、提权成功。

        6、vim配置问题

        6、1配置原理

        vim不是简单直接执行可执行程序就行,也会读取若干配置文件,其中最典型的配置文件叫 .vimrc

       6、1、1配置文件的位置


        在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
        而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
        切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
        打开自己目录下的.vimrc文件,执行 vim .vimrc

        6、1、2常用配置选项,用来测试


        设置语法高亮: syntax on
        显示行号: set nu
        设置缩进的空格数为4: set shiftwidth=4

         

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Node 创建 Web 服务器

Node.js 提供了 http 模块,http 模块主要用于搭建 HTTP 服务端和客户端,使用 HTTP 服务器或客户端功能必须调用 http 模块,代码如下: var http require(http); 以下是演示一个最基本的 HTTP 服务器架构(使用 8080 端口)&#x…

100天精通鸿蒙从入门到跳槽——第8天:TypeScript 知识储备:泛型

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

学好UEFI,实现从工程师到架构师的跨越

学好UEFI, 实现从工程师到架构师的跨越 2024 / 01 / 19 统一可扩展固件接口 UEFI,是由英特尔、微软等众多全球知名 IT企业共同开发、管理与推进的全新一代 BIOS 体系规范,目前作为最先进最完善的固件架构,已占据绝大部分计算机市…

基于Redisson的RAtomicLong实现全局唯一工单号生成器

最近几年,我一直从事的是运营平台业务开发。每天,我们都需要处理大量的工单配置工作。为了生成工单号,我们建立了一张专用的数据库表,用于记录和生成工单号。每次创建工单时,我们会查询这张表,根据年份字段…

梁山泊国潮风礼盒,传承经典,贺礼新春

在春节来临之际,梁山泊隆重推出新年中国红礼盒酒,为您传递新年的祝福与关爱。这款酒以其独特的魅力,为您带来美好的祝愿和愉悦的享受。中国风国潮礼盒采用中国传统红色为主色调,象征着吉祥、喜庆和繁荣。红色的背景上,…

appium连接手机进行启动失败 ,怎么办 ?检查下这几个地方 。

在使用appium做app自动化,首先需要启动appium连接到手机,然后进行后续操作。 但是往往在启动的时候就会卡住,在点击start session后就会出现报错,具体如下图 : 那么,出现如上的情况该如何解决呢 &#xff1…

(蓝桥杯每日一题)love

问题描述 马上就要到七夕情人节了,小蓝在这天想要心爱得男神表白,于是她写下了一个长度为n仅由小写字母组成的字符串。 她想要使这个字符串有 1314个 love 子序列但是马虎的小蓝却忘记了当前已经有多少个子序列为 love。 请你帮小蓝计算出当前字符串有多…

挑战杯参赛总结-时间序列预测

参赛任务: 目标:针对中国各个市区的不同年份二氧化碳排放量,预测未来年份的二氧化碳排放量。 不同与之前我学习过的波士顿房价预测机器学习-波士顿房价预测-CSDN博客 房价预测是通过学习与房价有关的很多特征,训练出一个模型来预…

RabbitMQ-生产者可靠性

一、生产者重连 1、概念 由于网络波动导致客户端无法连接上MQ,这是可以开启MQ的失败后重连机制。 注意: 是连接失败的重试,而不是消息发送失败后的重试。 2、开启配置 spring:rabbitmq:template:retry:enabled: true # 是否启用重试机制ma…

[python语言]数据类型

目录 知识结构​编辑 复数类型 整数类型、浮点数类型 1、整型 2、浮点型 字符与字符串 1、转义字符 2、字符串的截取 3、字符串的拼接级连 4、字符串的格式化 1、format格式化 2、字符格式化 3、f标志位格式化--(推荐) 5、字符串的常用属性 1、对字符串做出判断…

Mat - 基本映像容器

目标 我们有多种方法可以从现实世界中获取数字图像:数码相机、扫描仪、计算机断层扫描和磁共振成像等等。在每种情况下,我们(人类)看到的都是图像。但是,当将其转换为我们的数字设备时,我们记录的是图像每…

设计模式篇章(4)——十一种行为型模式

这个设计模式主要思考的是如何分配对象的职责和将对象之间相互协作完成单个对象无法完成的任务,这个与结构型模式有点像,结构型可以理解为静态的组合,例如将不同的组件拼起来成为一个更大的组件;而行为型更是一种动态或者具有某个…

高级编程。JavaScript中有哪些类型转换机制?

一、概述 前面我们讲到,JS中有六种简单数据类型:undefined、null、boolean、string、number、symbol,以及引用类型:object 但是我们在声明的时候只有一种数据类型,只有到运行期间才会确定当前类型 let x y ? 1 : …

MCM备赛笔记——蒙特卡罗方法

Key Concept 蒙特卡罗方法(Monte Carlo Method),也称为统计模拟方法,是一种基于概率和统计的数值计算方法。该方法使用随机数(或更常见的伪随机数)来解决可能非常复杂的数学或物理问题。蒙特卡罗方法广泛应…

用git bash调用md5sum进行批量MD5计算

对于非常大的文件或者很重要的文件,在不稳定的网络环境下,可能文件的某些字节会损坏。此时,对文件计算MD5即可以校验其完整性。比如本次的 OpenStreetMap 导出包,我的学弟反馈通过网盘下载无法解压,并建议我增加每个文…

web学习笔记(十六)

目录 HTML5新增标记汇总 1.新增语义化标签 2.新增音频和视频标签 2.1音频标签 audio 2.1视频标签 video 3.新增图像标签 4.新增表单元素和表单控件 5.新增应用程序标签(使用率较低) HTML5新增标记汇总 1.新增语义化标签 新增语义化标签能够便于…

BossCMS RCE

简介 BossCMS是一款基于自主研发PHP框架MySQL架构的内容管理系统,能够满足各类网站开发建设的需求。系统开源、安全、稳定、简洁、易开发、专注为中小型企业及政企单位、个人站长、广大开发者、建站公司提供一套简单好用的网站内容管理系统解决方案。官网提供了大量…

Linux 可观测性 BPFeBPF 以及 BCCbpftrace 认知

写在前面 博文内容为 《BPF Performance Tools》 读书笔记整理,对原书内容做了摘要博文内容涉及: BPF 和 eBPF 认知BCC 和 bpftrace 认知BCC 和 bpftrace 工具简单认知 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找…

PTA 6-11 先序输出叶结点

本题要求按照先序遍历的顺序输出给定二叉树的叶结点。 函数接口定义: void PreorderPrintLeaves( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; typedef Position BinTree; struct TNode{ElementType Data;BinTree Left…

C++ | 五、哈希表 Hash Table(数组、集合、映射)

哈希表基础 哈希表是一种数据结构(哈希表包含数组,和前两篇文章叙述的字符串、链表平级)哈希表概念:类似于Python里的字典类型,哈希表把关键码key值通过哈希函数来和哈希表上的索引对应起来,之后输入key值…