基本上我想在emacs中使用以下内容:
x = 52; while x > 0 { println("* Week #{x}\n"); x = x - 1; }
通过这种方式,我可以在组织模式等中快速生成一年的价值。
我确定这是一个简单的'运行此命令并使用lisp'答案,但我找不到它,而且我还没有使用emacs 很好。我在debian上使用了emacs 24和evil-mode的spacemacs
答案 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 plusp
和decf
:
(let ((p 5))
(require 'cl) ; For `plusp' and `decf'
(while (plusp p)
(insert (format "* Week %2d\n" p))
(decf p)))
答案 3 :(得分:0)
如果这是一个特殊用例的例子,我建议使用键盘宏(或者更简洁地,根据zilongshanren的回答使用" Tiny"库)。
使用键盘宏:
* Week
< f3> < up> (插入计数器值)n.b。它稍微简单 1 向上计数,只是以相反的顺序插入行,但向下计数:
* Week
M - < f3> RET 1 因为你不需要记住计数器调整/减少是否在插入之前或之后生效。