首先介绍点
,标记
,区域
:
- 点:即光标所在位置
- 标记:用
C-Space
或者C-@
(即C-Shift-2)来做标记。 - 区域:
标记
与点
之间的内容即为区域
1. 原始列模式
emacs以C-x r
开头的命令来进行举行矩形操作。首先用C-Space
进行标记,然后移动光标到矩形的对角位置作为当前的点。 C-x <SPACE>
切换矩形标记模式,矩形块高亮显示。
- C-x r k 剪切一个矩形块,作为最新保存的矩形块
- C-x r d 删除一个矩形块,不保存矩形块
- C-x r M-w 保存矩形块,作为最新保存的矩形块
- C-x r y 粘贴最新保存的矩形块
- C-x r o 插入同等宽度的空格矩形块(相当于右移矩形块的距离)
- C-x r c 清除一个矩形块(使其变成空格)
- C-x r t string <RET> 在选定矩形块的所有列前插入string
- C-x r N 在选定矩形块的所有列前面插入序号(从1开始),如果选定矩形块有空格,会自动取带空格,如果选定矩形块无空格,矩形块会整体右移。
- C-x <SPACE> 切换矩形标记模式,矩形块高亮显示,同时还可以随时调整矩形块的大小。
- M-x delete-whitespace-rectangle 删除矩形第一个字符左侧的所有空格。
- M-x string-insert-rectangle <RET> string <RET> 在矩形块前面插入string
2. cua-mode (Common User Access mode)
我感觉cua-mode
的列编辑模式更加符合操作习惯和人性化。在cua-mode
下还有cua-rect
和普通模式的区别。网上很多关于cua-mode
的文章都是互相抄,有错误,而且还从来不提怎么进入和退出cua-mode
。SimonLiu在这里重新整理补充并纠正了一些错误。
特别的,在cua-mode
下,C-c
,C-v
, C-x
, C-z
对应操作系统系统里的复制、粘贴、剪切和恢复操作。cua-rect
模式的全部操作(除了输入和切换),都是M-
开头的组合键。
在cua-mode
下,按C-<RET>
会进入cua-rect
模式,并以鼠标位置作为起点,也可以鼠标重新点击新位置作为起点,然后通过移动光标(比如C-n, C-f, M-f等操作)来选中一个rect范围,这个rect会用另外的颜色显示出来。之后我们 就可以很方便地对这个rect进行操作。比如[M-up],[M-down],[M-left],[M-right]可以移动这个rect范围(字符不动),此时按<RET>
确定范围(这样可以移动鼠标到rect左侧或者右侧),或者再按一次C-<RET>
可以取消这个矩形,C-<Space>
可以退出cua-rect
模式并激活普通模式下的选择。
- 进入和退出
cua-mode
: M-x cua-mode - 进入
cua-rect
模式:C-<RET> - 退出
cua-rect
模式: C-<Space>
cua-mode
下可以用以下命令进行列操作:
- 插入字符: 直接输入字符即可。会在每行前(或后)都插入这个字符。取决于鼠标在前还是在后。如果需要在前面输入,可以从右下往左上选取区域,或者按回车确认矩形范围以后再移动鼠标。
- M-b: 用空格(tabs或者spaces)替换所有rect中的字符
- M-c: 去掉所有行左侧的空格
- M-f: (fill)用单个字符填充rect(提示输入一个字符)
- M-i: 对每行中第一个找到的数字进行加1操作(自动把0x开头的当作十六进制数字)
- M-k: 剪切rect
- M-m: 拷贝rect
- M-n: 用一串自增的数字替换rect中的每一行(这个功能可以用来给每行编号)
- M-o: rect的内容右移,选中的rect用空格填充
- M-r: 用字符串替换符满足正则表达式的字符串
- M-R: 上下反转
- M-s: 把rect中的
每一行
替换为一个字符串(提示输入) - M-t: 把rect
整个
替换为一个字符串(提示输入) - M-l: 把rect中的内容全部转换为小写
- M-u: 把rect中的内容全部转换为大写
- C-c: 复制rect
- C-v: 粘贴rect
- C-x: 剪切rect
- C-z: undo
- M-|: 对rect执行一个shell命令