• vim使用技巧二 模式


    第一部分模式

    第2章  普通模式
    打开vim的默认状态即为普通模式   普通模式的命令强大  很大程度源于可以把操作符与动作命令结合在一起
    技巧7 停顿时请移开画笔
     

              工欲善其事,必先利其器   准备工作必不可少

    技巧8   把撤销单元切成块

              u键 会除法撤销命令,它会撤销最新的修改  一次修改可以是改变文档内文本的任意操作,其中包括在普通模式,可视模式以及命令行模式中所触发的命令,也包括在插入模式中输入或删除的文本  

              i <ESC>   是一次修改

             不同的文本编辑器   有不同的撤销粒度   一种是它可能会撤销最后输入的字符,另一种可能会把字符分成块,使每次撤销操作删除一个单词而不是一个字符。

              在vim中我们自己可以控制撤销命令的粒度,从进入插入模式开始,直到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改,因此,只要我们控制好对<ESC>键的使用,就可使撤销命令作用与单词、句子或段落。

              每次的ESC键都控制着u键撤销的单位   也即撤销块

              输入文件时  当前光标在行尾,如果想拥有更细的粒度,可以用<ESC>o替换<CR>   即每次撤销涉及的仅限于一行的内容

              注意在插入模式中移动上下左右光标键   会产生新的撤销块,可以想象为现切换回普通模式,然后用hjkl命令进行光标的移动  会对.命令产生影响

    技巧9  构造可重复的修改       思考用到.的命令构造方式

               删除行尾的单词    当前光标位于行尾的单词最后一个字符上

               例如  the end is nigh

               当前光标位于h上,想要删除nigh

               1.反向删除

                     db                    the end is h                 向前删除一个单词  但是会保留当前光标处的最后一个字符

                     x                      the end is                     删除上面的h字符

                           .代表执行x命令  仅仅删除一个字符

               2.正向删除

                     b                      the end is nigh            当前光标位于n处

                    dw                     the end is                     删除n及所在的单词

                            .代表   dw       未移动光标   仅仅删除一个单词   无意义

               3.删除整个单词

                    daw                  the  end is                     aw代表一个单词的意思 为一个命令       daw为删除一个单词

                         .  能够删除一个单词     .=daw          更有意义

     技巧10 用次数做简单的算术运算

                  <CTRL-a>   和<CTRL-x>     命令分别对数字执行加和减操作

                 例如  光标在5上     按10<CTRL-a>    值就会变为15     如果当前光标不在数字上   则会在当前字符串中向后搜索数字并定位光标到数字上  再操作

                例 .blog {background-position:0px 0px}     

                要求  复制一行  修改.blog为.news     并将第一个0px中的0改为-180

              1.     yyp  复制一行 并粘贴

    2. cw.news<ESC> 修改第一个单词 为.news

    3. 180<C-x> 0-180=-180

      注意:

    007数字在vim中被当做8进制 +001=010

    如果想让数字全部被当做10进制,需要在vimrc中添加“set nrformats=”

    技巧11   能够重复   就别用次数

    delete more than one word

    方式1: d2w  先删除命令 2w为动作命令 这里的修改是d2w     .=d2w

    方式2: 2dw 2次 删除单词 这里的修改是2dw

    方式3: dw. 删除单词 用.重复操作 这里的修改是dw

    建议  如果要删除数量不多的连续7个单词   可以d7w   也可dw......   6个点

    后者更好   粒度细    省略计算个数的时间

    使用次数的场景

    将i have a couple of questions改为i have some more questions

    c3wsome more<ESC>    前提条件将光标移动到a上

    用次数的另一个好处是   可以保留一个干净、连贯的撤销历史记录   一次u键就可以撤销整个修改

    技巧12 双剑合璧  天下无敌

    操作符+动作命令=操作

    vim的操作符命令

    命令 用途

    c 修改

    d 删除

    y 复制到寄存器

    g~ 反转大小写

    gu 转换为小写

    gU 转换为大写

    > 增加缩进

    < 减小缩进

    = 自动缩进

    ! 使用外部程序{motion}所跨越的行

    d{motion} 命令可以对一个字符dl 一个完整单词 daw 或一整个段落dap     作用范围由动作命令决定

    c{motion}

    y{motion}

    g~ 切换大小写     反转

    gu 切换成小写

    gU 切换成大写

    vim的语法仅有的一条额外规则    当一个操作符命令被连续调用两次时,会作用与当前行

    例如 dd删除当前行   >>缩进当前行

    扩展命令组合的能量强大

    有vim缺省的操作符和动作命令

    也有通过自定义动作命令及操作符来进一步扩充其数目

    可以通过 :h  :map-operator来查看如何创建自定义的操作符

    :h  omap-info来查看如何创建自定义的动作命令

    例如commentary.vim插件    textobj-entire插件      

     操作符待决模式

    普通   插入及可视模式很容易辨识      例如在dw时会激活待决模式   通常只持续不到一秒时间     仅仅在d及w键之间的短暂时间间隔内存在。

    将vim看成有限状态机    操作符待决模式就是一只接受动作命令的状态    此状态在我们调用操作符时被激活,然后什么也不做,直到我们提供了一个动作命令,完成整个操作。

    :h g    :h z    :h ctrl-w   通常头一个按键仅仅是第二个按键的前缀    这些命令不会激活操作符待决模式   相反可以把他们看成命名空间namespace    用来扩充可用命令的数目    只有操作符才会激活操作符待决模式。

     

  • 相关阅读:
    mysql设置指定ip远程访问连接实例
    Hibernate学习笔记之EHCache的配置
    关于Hibernate中的Configuration
    Hibernate的一级缓存
    Hibernate工作原理
    org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
    微信多客户端
    【hadoop之翊】——CentOS6.5 Linux上面编译Hadoop2.4源代码
    HDU 2102 A计划 (三维的迷宫BFS)
    SSO 中间件 kisso
  • 原文地址:https://www.cnblogs.com/dongguolei/p/7902536.html
Copyright © 2020-2023  润新知