这是当时初学VIM后做的一个思维导图,图片稍大,所以从freemind导出了html文本po在下面;图片在最下方,放大可清晰浏览。

VIM

  • 普通模式

    • 普通编辑命令

      • 功能:浏览,普通编辑

        x:删除光标所在字符  (=d+h)

        X:删除光标前一个字符  (=d+l)

        D:删除当前行光标位置到行尾的字符  (=d+$)

        dd:删除光标所在的行

        J:删除光标所在行的换行符

        p:在光标后粘贴

        P:在光标前粘贴,粘贴行时,p是粘贴在光标的下方,P粘贴在光标上方

        xp:交换两个字符的位置

        ddp:交换两行的位置

        u:撤销前一个操作

        Ctrl+r:恢复前一个操作,可以配合数字n进行n次批量操作;如3x,则删除当前光标及其后两个字符。

        注1:删除命令执行后,删除的内容保存在缓冲区。

        注2:粘贴命令调用缓冲区内最近的内容。

    • 控制命令
      • 字符级命令

        • h或键盘向左键:光标左移一个字符
        • l或键盘向右键:光标右移一个字符
        • j或键盘向下键:光标下移一行
        • k或键盘向上键:光标上移一行
        • 可以配合数字n进行n次批量操作
      • 单词级命令
        • w:下一个单词的词首

          W:空白字符分割的下词词首

          b:上一个单词的词首

          B:空白字符分割的上词词首

          e:下一个单词的词末

          E:空白字符分割的下词词末

          ge:上一个单词的词末

          GE:空白字符分割的上词词末

          注3:光标在单词内时,b/e命令的结果是移动到本单词的词首/词末

          注4:命令前+数字n,执行n次命令

      • 行级命令
        • $:当前行行尾
        • 0(数字0):当前行的第一个字符
        • ^:当前行的第一个非空字符
        • 移动到指定字符
          • f+单个字符:在本行内向右移动到指定字符
          • F+单个字符:在本行内向左移动到指定字符
          • t+单个字符:在本行内向右移动到指定字符的前一个字符
          • T+单个字符:在本行内向左移动到指定字符的前一个字符
          • 同样可以在命令前加数字n来定义移动到行呗第几个指定字符
          • 使用“;”来查找下一个,“,”来查找上一个
        • %:在“( )”、“[ ]”、“{ }”类符号的首尾间切换
        • 1G或gg:文本第一行行首
        • nG:移动到第n行行首
        • n%:按百分比近似定位到某行
        • G:文本末行行首
      • 屏幕级命令
        • H:屏幕顶部行首
        • M:屏幕中央行首
        • L:屏幕底部行首
        • zt:使光标所在位置移动到屏幕的顶部(所有内容做位移)
        • zz:使光标所在位置移动到屏幕的中央(所有内容做位移)
        • zb:使光标所在位置移动到屏幕的顶部(所有内容做位移)
        • ctrl+b:上移一屏
        • ctrl+f:下移一屏
        • ctrl+u:上移半屏
        • ctrl+d:下移半屏
        • ctrl+e:上滚一行
        • ctrl+y:下滚一行
      • 提示信息
        • Ctrl+g:显示当前行的位置信息(第几行,相对整个文本行数的百分比)(当次生效)

      • 保存并退出VIM:ZZ
    • 替换命令
      • r:替换当前字符

        R:(进入replace模式)持续替换光标所在字符,直到使用ESC退出替换模式。

    • 标记mark
      • m+[a~z] :在当前光标做标记,如ma
      • `+(mark):光标返回指定标记,如`a,则光标返回标记a的位置
      • ‘+(mark):光标返回指定标记所在的行,如’a,则光标返回到标记a所在行首
      • ‘:回到跳转前的位置
      • “:跳转到最后编辑的位置
      • 【:最后修改的开始位置
      • 】:最后修改的结束位置
      • 一些特定的标记可以跳转到其他文本,具体情况以后再做了解
  • “.”命令:重复上一次操作
    • 例:

      1:/word1  \\查找单词word1

      2:cw word2  \\把word1修改为word2

      3:n  \\下一个匹配点

      4:.  \\重复步骤2

      “.”命令重复的对象:

         普通编辑命令(普通模式下的命令),组合命令(操作符+动作);

      不能重复命令行下的命令。

  • 多线操作
    • vim file1 file2 file3...:

      可在文本间切换编辑。

      :n:进入下一文本

      :N:进入上一文本

  • 命令行模式
    • 设置命令“:”

      • 保存、退出

        • :+w :保存文本,不退出vim

          :+wq:保存并退出vim(不管有否修改,文件修改时间都会更新)

          :+x:若有修改,则保存并退出vim,若无修改,则直接退出vim

          :+q :未对文本进行修改时,可使用该命令直接退出vim

          :+q!:强制退出vim(放弃修改)

          :+e!:放弃修改并重新打开该文本

        环境设定

        • :+set nu[mber]:显示行号

          :+set nonu[mber]:隐藏行号

          :+set ruler:显示光标位置信息

          :+set noruler:隐藏光标位置信息

          :+set hlsearch:高亮匹配

          :+set nohlsearch:取消高亮匹配

          :+nohlsearch:临时取消高亮(只取消一次查询的高亮)

          :+set ic或ignorecase):忽略大小写

          :+set noic(或noignorecase):区分大小写

          当前命令忽略大小写:查找命令+\c,如:/test\c,查找test,忽略大小写

          :+set incsearch:在输入字符串过程中显示匹配点

          :+set nowrapscan:找到文尾后停止查找

          :+set wrapscan:恢复为到文尾后自动从头开始

        替换(查找然后替换)

        • :s/old/new/ :当前行的第一个old替换为new(old和new可以是字符也可以是字符串)

          :x,ys/old/new/g:x行到y行的所有old替换为new(注意末尾的参数g,不加参数g则只替换每行的第一个old)

          参数“x”替换为“.”,则从当前行开始

          参数“y”替换为“$”,则到最后一行为止

          :%s/old/new/gc:全局替换,替换文本中所有old为new(注意最后的参数“c”,即为每次替换均需要确认)

        :+e filename:vim下打开指定文本

        :+!command:vim下执行某shell命令

        :marks:查看已有的标记

        :delmarks 标记名:删除某标记

    • 查找命令
      • /+字符或字符串:在文本内从光标位置向下查找指定字符/字符串

        ?+字符或字符串:反向查找

        查找命令执行后,可使用:

        n:查找下一个

        N:查找上一个

        (对于?查找,移动方向也相应变化)

        n/N命令前也可以使用数字n来查第n个

    • 退回普通模式:ESC
  • 可视模式
    • 可视模式的功能是选择区域,选择区域后的其他操作参见其他模式!!

      v:字符选择,可进行字符的逐个选择;

      选中从进入可视模式时的光标位置到当前光标位置的内容,光标控制可以参见普通模式的控制命令以提高效率。

      V:按行选择,参照字符选择。

      Ctrl+v:列块选择

      • 选择屏幕的一个矩形区域;以进入可视模式时的光标位置为一角,以光标当前位置为对角。光标控制可以参见普通模式的控制命令以提高效率。

        o:把光标移动到矩形的对角

        O:把光标移动到水平位置的另一角

  • insert模式
    • i:在光标前插入字符

      I:在行首插入字符

      a:在光标后插入字符

      A:在行尾插入字符

      o:在光标下发插入空行

      O:在光标上方插入空行

      s:删除光标位置字符,并进入insert模式  (=c+l)

      S:删除光标所在行,并进入insert模式  (=c+c)

      C:删除光标位置到行尾的字符,并进入insert模式  (=c+$)

    • 退回普通模式:ESC

  • 操作符
    • 三种操作符

      • d:delete  把选择的内容存入寄存器。

        c:change  把选择的内容存入寄存器,使用新的内容覆盖原内容。

        y:copy  把选中的内容拷贝到寄存器中。

        • yw:拷贝一个单词

          ynw:拷贝n个单词

          ye: 拷贝一个单词,不包括单词结尾空格。

          yne:拷贝n个单词。

          yy:拷贝一行

          nyy:浮躁从光标所在行起的n行,注意n在最前面。

          y$:拷贝从当前位置到行尾

          yG:拷贝从当前位置到文尾

        三种操作符存入寄存器的内容都适用于p/P粘贴命令。

        三种操作符与普通命令组合的思想一致!!!

    • 操作符+动作
      • 动作:普通模式下的控制命令;动作前有操作符时,动作的作用是覆盖一段文本;动作所走过的轨迹即操作符将要操作的对象。

        如:d+w,结果是删除光标位置(含)到下以单词首(不含)直接的字符。

    • 可视模式+操作符
      • 在可视模式下选择要操作的区域,然后使用操作符进行操作
    • 操作符+文本对象
      • daw:删除一个单词,包含单词的边界(空格)。

        da【:删除[ ]整个块,包含符号本身;

        da<;da(;da{;da";da'同理

        diw:删除一个单词,不含单词的边界。

        di【:删除[ ]内的字符,不含符号本身;

        di<;di(;di{;di";di'同理

        常见文本对象:

        ap 一个段落;  aW 一个字符串;as 一个句子; at 一个HTML标签

VIM基础知识整理(附思维导图)的更多相关文章

  1. JavaScript事件基础知识总结【思维导图】

    另外附上来自Nicholas C.Zakas<JavaScript高级程序设计 第3版>中的跨浏览器兼容EventUtil对象. var EventUtil = { //注册事件 addH ...

  2. Vue基础开发入门之简单语法知识梳理(思维导图详解)

    基于个人写的以下关于Vue框架基础学习的三篇随笔,在此基础上,做一个阶段性的知识总结,以此来检验自己对Vue这一段时间学习的成果,内容不多,但很值得一看.(思维导图详解)

  3. 给力Mac下的思维整理软件,思维导图软件合辑

    给力Mac下的思维整理软件,思维导图软件合辑 1.Mindjet MindManager for mac 10.0.211 经典的头脑风暴思维导图软件 最新破解Mindjet MindManager ...

  4. 32、最长有效括号 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(32)最长有效括号 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "滑动窗 ...

  5. 31、下一个排列 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(31)下一个排列 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "双指针法 ...

  6. 33、搜索旋转排序数组 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(33)搜索旋转排序数组 一 题目描述! 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 & ...

  7. 34、在排序数组中查找元素的第一个和最后一个位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(34)在排序数组中查找元素的第一个和最后一个位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: / ...

  8. 35、搜索插入位置 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(35)搜索插入位置 一 题目描述 二 解法总览(思维导图) 三 全部解法 1 方案1 1)代码: // 方案1 "无视要 ...

  9. 36、有效的数独 | 算法(leetode,附思维导图 + 全部解法)300题

    零 标题:算法(leetode,附思维导图 + 全部解法)300题之(36)有效的数独 前言 1)码农三少 ,一个致力于 编写极简.但齐全题解(算法) 的博主. 2)文末附赠 价值上百美刀 资料. 一 ...

随机推荐

  1. ArrayList源码解析(二)自动扩容机制与add操作

    本篇主要分析ArrayList的自动扩容机制,add和remove的相关方法. 作为一个list,add和remove操作自然是必须的. 前面说过,ArrayList底层是使用Object数组实现的. ...

  2. 《Android进阶》之第五篇 Fragment 的使用

    http://blog.csdn.net/lmj623565791/article/details/37970961 1.Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的 ...

  3. how to install Web logic Server (WLS)

    a) Download artificts from: http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main ...

  4. Ajax02 json

    1 什么是json JavaScript Object Notation(JavaScript 对象表示法) 是一种轻量级的数据交换格式. 注: 数据交换:将数据先转换成一种与平台无关的数据 格式(比 ...

  5. javascript基础-正则表达式

    概述 正则表达式被用来检索.替换那些符合某个模式的文本 标准正则表达式语法 javascript对正则表达式的支持 替代写法 逆向环视 //需求:替换mpre.cnsuning.com为${pre}, ...

  6. php+mysql 除了设置主键防止表单提交内容重复外的另一种方法

    感觉好久没有更新博客了,一直在做网站及后台,也没有遇到让我觉得可以整理的内容,之前做的一个系统,已经完成了,后来客户又要求加一个功能,大概就是表单提交的时候,约束有一项不能和以前的内容重复,如图 比如 ...

  7. JVM-5.字节码执行引擎

    一.概述 二.栈帧结构 三.方法调用 四.方法执行       一.概述 虚拟机与物理机 虚拟机是一个相对于物理机的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件. ...

  8. 一天搞定CSS: 浮动(float)及文档流--10

    浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器). ...

  9. Spring学习(15)--- 基于Java类的配置Bean 之 @Bean & @Scope 注解

    默认@Bean是单例的,但可以使用@Scope注解来覆盖此如下: @Configuration public class MyConfiguration { @Bean @Scope("pr ...

  10. CentOS 7 for ARM 安装一键Lnmp失败

    背景 前面把树莓派装上了CentOS 7,趁着国庆放假回来赶紧把服务端环境搭起来,为了方便就准备用一键lnmp快速部署一个,结果死活安装不成功... 报错 按照以往的经验进行安装,在我的小树莓派上安装 ...