第一章: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} 所跨越的行 !

Practical Vim 第一章 & 第二章的更多相关文章

  1. 《细说PHP》第四版 样章 第二章 PHP的应用与发展 1

    <细说PHP>第四版 样章 第二章 PHP的应用与发展 1 学习任何编程语言之前,先了解一下它的应用与发展是很有必要的.从Web开发的历史看来,PHP.Python和Ruby几乎是同时出现 ...

  2. CSS3秘笈复习:第一章&第二章&第三章

    第一章: 1.<cite>标签不仅可以将网页设置为斜体,还能给标题做上标记,使它便于被搜索引擎搜索到. 第二章: 1.import指令链接样式表: CSS本身有一种添加外部样式的方法:@i ...

  3. Linux第一章第二章学习笔记

    第一章 Linux内核简介 1.1 Unix的历史 它是现存操作系统中最强大最优秀的系统. 设计简洁,在发布时提供原代码. 所有东西都被当做文件对待. Unix的内核和其他相关软件是用C语言编写而成的 ...

  4. Linux内核设计与实现 第一章 第二章

    第一章 Linux内核简介 Unix特点: (1)     Unix很简洁,仅仅提供几个几百个系统调用并且有一个非常明确的设计目的 (2)     在Unix中,所有的东西都被当作文件对待,通过一套相 ...

  5. 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数

      猜数字游戏--核心代码--猜测次数   #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...

  6. 《Practical Vim》第五章:命令行模式

    前言 出于历史原因,命令行模式又叫 Ex 模式,它具有的功能有: 读写文件:比如 :edit, :write 等等 创建标签页或者窗口:比如 :tabnew :split 操作缓存区,比如: bnex ...

  7. progit 学习笔记-- 1 第一章 第二章

    * 1 起步**  关于版本控制*** 什么是版本控制?记录文件变化,查阅特定版本,回溯到之前的状态.任何类型的文件进行版本控制.复制整个目录 加上备份时间 简单 混淆 无法恢复本地版本控制 数据库记 ...

  8. Java入门 第一季第二章 变量和常量

    这是我学习慕课网Java课程的笔记.原视频链接为:http://www.imooc.com/learn/85 2-1 Java中的keyword PS:Javakeyword区分大写和小写 2-2 认 ...

  9. 《Linux内核设计与实现》课本第一章&第二章学习笔记

    <Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ...

随机推荐

  1. Android - Resource 之 String 小结

    简单的string: <?xml version="1.0" encoding="utf-8"?> <resources> <st ...

  2. Android - Resource 之 Drawable小结

    本篇直接选择性地翻译官方开发指南 ============================= Drawable有十种类型,如下 (1) - Bitmap file:这个简单,也可以用xml来更详细的定 ...

  3. [内核驱动] miniFilter 内核层与应用程序通信

    转载:http://blog.csdn.net/heyabo/article/details/8721611 转载:http://www.cnblogs.com/ljinshuan/archive/2 ...

  4. Web开发中B/S架构和C/S架构的区别

    在web开发中有两种基本架构,即C/S架构和B/S架构那么这两种架构有什么区别呢?那么就一起来看看吧. C/S架构图: B/S架构图: C/S架构是 浏览/服务器端的交互,是早期的一种分布式架构,在该 ...

  5. 打造性感好用的 VS Code 编辑器

    官网: https://code.visualstudio.com/ Blog链接:打造性感好用的VS Code编辑器 主命令框 F1或Ctrl+Shift+P: 打开命令面板.在打开的输入框内,可以 ...

  6. 终于明白vim 和 grep 中 的正则表达式的用法, vim 正则表达式 和grep基本正则表达式 几乎一样

    要搞清楚 vim中的正则和普通的Perl正则表达式的区别: 因为在perl中所有的元字符 都可以直接使用, 不需要在 元字符的前面加 反斜杠. 但是在vim, 包括grep中就有所区别, 同样是元字符 ...

  7. 总结: 在fc23中, 安装音频mp3 视频flv 的播放插件其实很简单, 只要一步就可以了: dnf install gstreamer1-libav

    同样是 firefox, 单词的在线发音, 跟 百度mp3的在线播放不是一样的!!! 百度/优酷 的在线播放, 用的确实是 flash player , 所以 你安装好libflashplayer后, ...

  8. FJUT Home_W的拆分序列(DP)题解

    Problem Description Home 现在给你一个序列要求你将这个序列拆成恰好两个子序列.且使得两个子序列的抖动系数之和最大. 对于一个序列c1,c2,c3,……cm. 其抖动系数=|c1 ...

  9. computed 计算选项

    computed 的作用主要是对原数据进行改造输出.改造输出:包括格式的编辑,大小写转换,顺序重排,添加符号……. 格式化输出结果 我们先来做个读出价格的例子:我们读书的原始数据是price:100 ...

  10. pyqt笔记1模块 信号和插槽

    资料 PyQt5图形界面编程 PyQt5指南 模块 PyQt5本身拥有超过620个类和6000函数及方法. QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time.文件 ...