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} 所跨越的行 !









posted @ 2019-03-29 22:19  FBshark  阅读(143)  评论(0编辑  收藏  举报