区块编辑

如何选中区块,可以参考“区块选择”一节

需要补充的是,完成区块选择时,实际定义了两种区块 :

---XXXXXxxx
xxxXXXXXxxx
xxxXXXXXxxx
xxxXXXXX---	  

---代表没有被选中的区域

连续区块为标记和光标点之间连续的区块;字符 X 和 x 均为连续区块

矩形区块为标记和光标点之间矩形的区块;大写字符 X 为矩形区块

表 25.6. Emacs 区块编辑

连续区块
C-SPC M-x set-mark-command 在光标点处设置标记
C-@ 同上 建议使用 C-t
M-@ M-x mark-word 在单词结尾处设置标记
M-h M-x mark-paragraph 选中段落
  M-x mark-end-of-sentence 在句末设置标记
C-x h M-x mark-whole-buffer 整个缓冲区
C-x C-x M-x exchange-point-and-mark 交换标记和光标点
C-w M-x kill-region 剪切区块
M-w M-x kill-ring-save 复制区块
C-y M-x yank 粘贴区块
M-y M-x yank-pop 队列粘贴
矩形区块
C-x r k M-x kill-rectangle 删除矩形区块
C-x r y M-x yank-rectangle 粘贴上一次删除的矩形区块
C-x r t M-x string-rectangle 用指定字符填充
C-x r o M-x open-rectangle 用空格插入
C-x r c M-x clear-rectangle 用空格填充
C-x r r M-x copy-rectangle-to-register 拷贝到寄存器中

搜索和替换

Emacs中,默认使用 增量搜索 :在搜索对话模式中输入关键词的同时,Emacs 就开始进行搜索,随着关键字的输入,不断的缩小搜索范围

而传统的非增量搜索,则是关键词输入后,再进行搜索。

表 25.7. Emacs 搜索

增量搜索
C-s M-x isearch-forward 向前增量搜索
C-r M-x isearch-backward 向后增量搜索
C-M-s M-x isearch-forward-regexp 正则表达式向前增量搜索
C-M-r M-x isearch-backward-regexp 正则表达式向后增量搜索
询问替换
M-% M-x query-replace 询问替换
C-M-% M-x query-replace-regexp 正则表达式询问替换
搜索
  M-x search-forward 向前搜索
  M-x search-backward 向后搜索
  M-x search-forward-regexp 正则表达式向前搜索
  M-x search-backward-regexp 正则表达式向后搜索
替换
  M-x replace-string 替换
  M-x replace-regexp 正则表达式替换

  • 增量搜索时,关键词会被一直保留。可以直接进行下一次搜索
  • 下一次增量搜索,如果之前进行了其它操作,则需要连续两次命令(快捷键),才能召回关键词。
  • C-g 取消搜索,回到搜索前的位置
  • RET 结束搜索,停在当前位置
  • 可以选中区块后,在区块内进行替换

其它

插入控制字符

使用 C-q ,可以在缓冲区插入一个控制字符。例如:

C-q C-m = ^M

 

文本换位

表 25.8. Emacs 其它

字符 C-t M-x transpose-chars
单词 M-t M-x transpose-words
C-x C-t M-x transpose-lines

 

将 TAB 字符转换为空格

选中需要转换的区域, M-x untabify

对齐文本块

选中需要对齐的区域, M-x indent-region