当前位置: 首页 > news >正文

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

         

相关文章:

  • 2.2.1.1-一个关于定投的故(姿)事(势)
  • CloudPanel RCE漏洞复现(CVE-2023-35885)
  • 探索设计模式的魅力:一次设计,多次利用,深入理解原型模式的设计艺术
  • EasyExcelFactory 导入导出功能的实战使用
  • 《数据结构》第七章:树和森林
  • 解开缺省参数与函数重载的衣裳
  • 超过GPT3.5?Mixtral 8*7B 模型结构分析
  • 开源项目_大模型应用_Chat2DB
  • krpano制作无水印360°场景方法
  • JavaScript库jquery的使用方法
  • 04-了解所有权
  • Spring事件发布ApplicationEventPublisher原理
  • DL专栏—笔记目录
  • 1.C语言——基础知识
  • LeetCode-135】分发糖果(贪心)
  • Angularjs之国际化
  • CODING 缺陷管理功能正式开始公测
  • Flannel解读
  • Java读取Properties文件的六种方法
  • Logstash 参考指南(目录)
  • PAT A1092
  • React+TypeScript入门
  • spring security oauth2 password授权模式
  • supervisor 永不挂掉的进程 安装以及使用
  • WebSocket使用
  • 关于Java中分层中遇到的一些问题
  • 删除表内多余的重复数据
  • 使用 Docker 部署 Spring Boot项目
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #AngularJS#$sce.trustAsResourceUrl
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2)Java 简介
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (4.10~4.16)
  • (javascript)再说document.body.scrollTop的使用问题
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Java数据结构)ArrayList
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET/C# 的字符串暂存池
  • .Net7 环境安装配置
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • @AutoConfigurationPackage的使用
  • @Bean, @Component, @Configuration简析