[elisp-snippet] region的基本操作

基本概念和函数

所谓region,就是指选中的文本区域,可以对这个文本区域进行复制、粘贴、获取文本区域的内容等操作。常用的函数有这几个:

  • use-region-p:判断当前是否选中了一个region,返回一个布尔型返回值。用法示例:
(defun my-test-region1 ()
  "Test region active or not."
  (interactive)
  (if (use-region-p)
      (message "select a region!")
  (message "NOT select a region!")))

在没有选中任何文本的时候,执行M-x my-test-region1,输出:NOT select a region!,当选中了一个文本区域后,再执行M-x my-test-region1,输出:select a region!

  • region-beginningregion-end:分别返回当前region的起始和结束位置。用法示例:
(defun my-test-region2 ()
  "Get region beginning and end."
  (interactive)
  (if (use-region-p)
      (message "region text is: %s" (buffer-substring-no-properties (region-beginning) (region-end)))))

比如当前选中了一个region区域,其文本内容为abc123,那么当执行M-x my-test-region2后,输出:region text is: abc123

interactive的搭配使用

region的起始和结束位置可以作为参数传入一个函数,在函数中可以使用这两个参数。下面的函数就传入了两个参数begend,代表当前选中区域的起始位置和结束位置,如果当前没有选中任何region,将会以当前行的起始位置和结束位置作为begend的默认值。

(defun my-test-region3 (beg end)
  "Test region beginning and end as parameter."
  (interactive
   (if (use-region-p)
       (list (region-beginning) (region-end))
     (list (line-beginning-position) (line-end-position))))
  (message "comment current region or line is: %s" (format "<!-- %s -->" (buffer-substring-no-properties beg end))))

假设当前行的内容为:abc123,没有选中任何region,此时执行:M-x my-test-region3,输出为:comment current region or line is:。假设当前选中的region区域内容为:hello,此时执行:M-x my-test-region3,输出为:comment current region or line is:

总结

region是一个指代被选中的文本区域的概念,很多对文本的操作都是基于region的,所以reigon的基本概念和常见操作要熟悉,在处理文本的时候才能做到游刃有余。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,438评论 0 5
  • 原文地址:https://github.com/JuanitoFatas/slime-user-manual#24...
    四月不见阅读 3,203评论 0 2
  • 推荐:一年成为Emacs高手(像神一样使用编辑器)参考:Master Emacs in 21 Days 这些年也用...
    m2fox阅读 27,726评论 1 18
  • 使用首先需要了解他的工作原理 1.POI结构与常用类 (1)创建Workbook和Sheet (2)创建单元格 (...
    长城ol阅读 8,513评论 2 25
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,119评论 0 0