July 19, 2021
By: 邵夔

emacs-rectangle-and-macro

  1. Table of Contents
  2. Emacs: 矩形 * 对齐 * 简单宏.
    1. 1、 rectangle(矩形区域操作)
      1. poor man's multi-cursor
      2. 基本操作
      3. 习题: 快速补齐string?
    2. 2 对齐(给矩形操作准备条件)
      1. 基本操作
      2. 习题: 对齐第二列
    3. 3 宏(操作录像)
      1. 加速 自动化. --《卓有成效的程序员》
      2. 基本操作
      3. 习题: marvin 出题:不等长结尾加逗号
      4. 习题: 快速增加(ds/opt ...)
    4. 综合实战: 从product.sql的建表语句到接口spec.

Table of Contents

  1. 演示rectangle和简单的宏.
    1. 1 rectange(矩形区域操作)
      1. poor man's multi-cursor
      2. 基本操作
      3. 习题: 参数类型为string?
    2. 2 对齐(给矩形操作准备条件)
      1. 基本操作
      2. 习题: 对齐列?
    3. 3 宏(操作录像)
      1. 加速 自动化. --
      2. 基本操作
      3. 习题: marvin 加逗号
      4. 习题: 可选传参
    4. (结合1\2\3的真实案例): 从建表语句到接口spec.

Emacs: 矩形 * 对齐 * 简单宏.

1、 rectangle(矩形区域操作)

poor man's multi-cursor

基本操作

  • [X] 替换/插入 replace-rectangle

  • [X] 剪切 kill-rectangle

  • [X] 复制 copy-rectangle-as-kill

  • [X] 粘贴 yank-rectangle

  • [X] 增加空间 open-rectangle

  • [X] 删除矩形区域 clear-rectangle

  • [X] 我用左对齐(锯齿) delete-whitespace-rectangle

  • [X] rectangle-mark-mode 矩形选区模式(而不是流式选区模式)

  • [X] rectangle-exchange-point-and-mark (从四个顶角修改矩形选区)

习题: 快速补齐string?

:name string? :age :gender :school :company :mobile :card-no

2 对齐(给矩形操作准备条件)

基本操作

正则对齐 align-regex

习题: 对齐第二列

apple "苹果" banana "香蕉" Cactoideae "仙人掌"

3 宏(操作录像)

加速 自动化. --《卓有成效的程序员》

基本操作

  • [x] 开始录像 kmacro-start-macro
  • [x] 结束录像 kmacro-end-macro
  • [x] 执行刚才那个macro call-last-kbd-macro
  • [x] 给刚才的录像起名 name-last-kbd-macro
  • [x] 存储macro为永久命令 insert-kbd-macro 存到自己的配置文件中。

习题: marvin 出题:不等长结尾加逗号

name age gender school company mobile card-no

习题: 快速增加(ds/opt ...)

(ds/opt :name) (ds/opt :name) :age :gender :school :company :mobile :card-no

综合实战: 从product.sql的建表语句到接口spec.

CREATE TABLE t_product ( product_id varchar(40) NOT NULL COMMENT '主键', category_id varchar(40) NOT NULL COMMENT '商品品类', company_id varchar(40) NOT NULL COMMENT '商品所属公司', product_name varchar(100) DEFAULT NULL COMMENT '商品名称', product_no varchar(40) DEFAULT NULL COMMENT '商品编码',

...)

{:product_id string? ;; '主键', :category_id string? ;; '商品品类', (ds/opt :company_id) string? ;; '商品所属公司', (ds/opt :product_name) string? ;; '商品名称', … }

答案:

1、先利用 `空格 空格’ 进行对齐 。

2、利用rectangle删除掉中间,批量增加字段类型。

3、录制增加(ds/opt)的宏,操作一次,然后用repeat命令重复执行。

Tags: emacs