如何在emacs中插入连接在一起的顺序编号(或不同)字符串列表?

时间:2016-08-22 01:46:23

标签: emacs

基本上我想在emacs中使用以下内容:

x = 52; while x > 0 { println("* Week #{x}\n"); x = x - 1; }

通过这种方式,我可以在组织模式等中快速生成一年的价值。

我确定这是一个简单的'运行此命令并使用lisp'答案,但我找不到它,而且我还没有使用emacs 很好。我在debian上使用了emacs 24和evil-mode的spacemacs

4 个答案:

答案 0 :(得分:3)

尝试使用Tiny,这非常适合您的情况。

这里有一个小小的片段:m1\n5|* Week #{%d}

答案 1 :(得分:1)

我想这就是您要求的:为命令提供一个NUM并打印行* Week N,其中N以{{1}开头并转到NUM

1

您可以通过将命令绑定到某个键或使用(defun insert-my-strings (num) (interactive "N") (let ((form (format "* Week %%%dd\n" (1+ (log num 10)))) (p num)) (while (> p 0) (insert (format form p)) (setq p (1- p))))) 来调用该命令。

如果没有前缀arg,系统会提示您输入所需的数字M-x insert-my-strings。否则,请为命令NUM提供数字NUM作为前缀arg,其中C-u NUM M-x insert-my-strings表示输入NUM作为数字前缀arg。

或者,如果您只想要C-u NUM = 52:

NUM

答案 2 :(得分:1)

与Drew相同,但使用defuns pluspdecf

(let ((p 5))
  (require 'cl)        ; For `plusp' and `decf'
  (while (plusp p)
    (insert (format "* Week %2d\n" p))
    (decf p)))

答案 3 :(得分:0)

如果这是一个特殊用例的例子,我建议使用键盘宏(或者更简洁地,根据zilongshanren的回答使用" Tiny"库)。

使用键盘宏:

  • M-1 < f3> (将计数器初始化为1)
  • RET * Week < f3> < up> (插入计数器值)
  • M-5 M-2 < f4> (共执行52次)

n.b。它稍微简单 1 向上计数,只是以相反的顺序插入行,但向下计数:

  • M-5 M-2 < F3>
  • * Week M - < f3> RET
  • M-5 M-2 < F4>

1 因为你不需要记住计数器调整/减少是否在插入之前或之后生效。