首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Re) emacs中的编号列表(muse)

(Re) emacs中的编号列表(muse)
EN

Stack Overflow用户
提问于 2010-04-09 21:45:28
回答 6查看 1.4K关注 0票数 7

假设我在emacs中有一个文本列表,如下所示:

代码语言:javascript
复制
a
b
c
...
d

有没有一种方法可以通过选择区域来为Emacs中的这些项分配编号?最终结果应如下所示:

代码语言:javascript
复制
1. a
2. b
3. c
j. ...
n. d

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-04-09 23:38:25

代码语言:javascript
复制
(defun number-region (start end)
  (interactive "r")
  (let* ((count 1)
     (indent-region-function (lambda (start end)
                   (save-excursion
                     (setq end (copy-marker end))
                     (goto-char start)
                     (while (< (point) end)
                       (or (and (bolp) (eolp))
                       (insert (format "%d. " count))
                       (setq count (1+ count)))
                       (forward-line 1))
                     (move-marker end nil)))))
    (indent-region start end)))
票数 3
EN

Stack Overflow用户

发布于 2010-04-09 21:56:19

我的方法是使用正则表达式搜索和替换,这可能不是最优的。当然,这要求您能够定义一个正则表达式来匹配您想要编号的行的开头。以您的示例为例,我将使用如下搜索正则表达式:

代码语言:javascript
复制
\([a-z]\)

注意捕获括号,我们很快就需要第一个字母了。替换正则表达式,如下所示:

代码语言:javascript
复制
\#. \1

其中:

\#是一种特殊的形式,它被Emacs替换为正确的数字(尽管参见下面的警告);

.写了一个停顿;

\1写入一个空格和捕获的组。

警告: Emacs会将您的项目编号为0, 1, 2, ...。直到有人发帖告诉我们如何从1开始,我总是在编辑前插入一个虚拟的第0个元素,然后删除它。

票数 10
EN

Stack Overflow用户

发布于 2010-04-09 22:39:42

您可以使用the Emacs Keyboard Macro Counter

将光标放在列表上方一行。启动宏:F3

  • Insert
  • C-x C-k C-i。此时将出现0,并插入点号和空格:F4
  • Select .
  • 将光标移动到下一行并停止宏:F4
  • Select list
  • M-x apply-macro-to-region-lines
  • You
  • .0
  • .

:)

注意:这将创建一个编号列表。它不会使用字母。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2607925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档