zoukankan      html  css  js  c++  java
  • Practical Vim 第一章 & 第二章

    第一章:Vim 解决问题的方式

    前言

    本质上讲,我们的工作是重复性的.凡是可以简化重复性操作的方式,都会成倍地节省我们的时间.

    Vim 对重复性操作进行了优化.它之所以能高效地重复,是因为它会记录我们最近的操作,让我们用一次按键就能重复上次的修改.

    .--这个看似简单的命令是 Vim 中的瑞士军刀.

    修改的定义

    定义:

    修改是改变文档内文本的任意操作,分为两类:

    1. 它可以是在普通模式、可视模式、命令行模式中所触发的指令.
    2. 插入模式在按 Esc 之前的操作,包括输入的文本.

    将两个动作合并成一次按键——一箭双雕

    复合命令等效的长命令
    C c$
    S cl
    S c
    I i
    A $a
    o A
    0 ko

    重复 & 回退

    在执行一个修改的时候,要想办法做到两点:

    1. 使修改可重复
    2. 使移动可重复

    并且当发生错误,或者针对不同对象有不同的操作的时候,我们能够执行回退操作.

    目的操作重复回退
    作出一个修改 {edit} . u
    在行内查找下一指定字符 f{char}/t{char} ; ,
    在行内查找上一指定字符 F{char}/T{char} ; ,
    在文档中查找下一处匹配项 /pattern n N
    在文档中查找上一处匹配项 ?pattern n N
    查找当前光标下的单词 * n N
    执行替换 :/target/replacement & u
    执行一系列修改 qx{changes}q @x u

    “. 范式”

    定义:使用 “.” 命令重复上一次的修改,并且只需一次按键就可以把光标移到下一个目标上.
    即理想模式:用一键移动,另一键执行.

    第二章:普通模式

    导言

    这一章节讲述了 Vim 中的默认模式:普通模式,探讨了如下问题:

    1. 在执行时可指定执行的次数的普通模式命令
    2. 普通模式命令将操作符与动作命令结合在一起的特点
    3. 普通模式命令执行简单的算术运算

    构造「可重复的」修改

    依据:使用这种手段的时候 ,需要的按键次数最少.
    示例:
    文中比对了三种命令的效果:
    db-x, b-dw. daw 都是能够删除一个句子中的一个单词的命令,但是如果要重复执行操作,即执行 "." 命令的时候,

    1. db-x, 只重复 x 命令,即删除一个字符
    2. b-dw,重复 dw 命令,即删除下一个单词.
    3. daw, 删除一个单词.

    <C-x>&<C-a> 命令

    定义:
    <C-x>:把当前光标之上或者之后的数值加上 [count]
    <C-a>:把当前光标之上或者之后的数值减去 [count]

    控制粒度

    普通模式的命令可以指定操作的次数,但是应该只在必要的时候使用次数,一般的情况下可以使用重复的命令.

    operator 与 motion

    operator 定义:进行操作的类型,其中控制的范围由 {motion} 来决定,
    motion 定义: 字符l, 一个单词 aw, 一个段落 ap 等等.

    语法

    operation = operator + motion
    例外:
    当一个 operator 被连续调用两次的时候,它会作用于当前行,例如 : >>, dd 等等

    操作符待决模式

    格式:在按下 operator 和 motion 之间的一段时间.
    本质:
    如果我们把 Vim 想象成有限状态机,那么操作符待决模式就是一个只接受动作命令的状态.这个状态只在我们调用操作符时被激活,直到得到一个动作命令.
    当操作符待决模式被激活时,我们可以按 返回到普通模式.

    类别

    目的命令
    修改 c
    删除 d
    复制到寄存器 y
    反转大小写 g~
    转换为小写 gu
    转换为大写 gU
    增加缩进 >
    减小缩进 <
    自动缩进 =
    使用外部程序过滤 {motion} 所跨越的行 !









  • 相关阅读:
    webpack打包注意事项
    打印内存, 打印16进制
    c++ 字符集转换
    RegSvr32 加载失败,找不到指定的模块
    错误码设计
    mfc 移动绘制的图形
    获取、设置光标
    c++ 函数中定义函数
    python linux 自动补全 tab.py
    3.4.5节 完整神经网络样例程序
  • 原文地址:https://www.cnblogs.com/FBsharl/p/10624580.html
Copyright © 2011-2022 走看看