最近,我偶然发现了一个问题“在Emacs中反复输入变量名的快速方法是什么?”,它要求一种方法来创建和扩展片段“在飞行中”。我还找到了自吹自擂包,它是由问题的作者创建的,可能是他的问题的结果。我非常喜欢这个包,但是我想得到扩展的功能。该包允许执行以下操作:
您可以编写以下代码片段:
convert img$1.jpg -monochrome -resize 50% -rotate 180 img$1_mono.pdf调用aya-create,输入一个新行并调用aya-expand:上面的代码已经粘贴,您可以替换占位符($1,$2,.)就像你对待一个普通的小妞一样。
这是一个很好的特性,但是,如果您必须创建--许多片段的副本并输入扩展字符串--它就变得不那么有趣了。最好传递一个列表(如果有多个占位符,则传递列表列表),这些列表用于展开占位符。让我说,对于img_1.jpg到img_9.jpg的文件,我必须调用上面的内容,结果应该称为img_a_mono.jpg到img_k_mono.jpg,这样就可以创建列表了:
(setq foo-list '( '( 1 2 3 4 5 6 7 8 9 ) '( a b c d e f g h i j k ) )写片段
convert img$1.jpg -monochrome -resize 50% -rotate 180 img$2_mono.pdf并调用扩展函数,指定foo-list作为参数。当然,您可以通过像number-sequence这样的函数动态创建这些列表。
恐怕我对elips还不够精通,无法自己编写代码,不过,也许有人掌握了这方面的技能,并且看到了这个特性的使用情况。
发布于 2013-08-07 16:14:29
我已经写了另一个套餐,它现在完成了您描述的工作。相关的片段是:
m1\n10&convert img&s.jpg -monochrome -resize 50% -rotate 180 img&s_mono.pdf它扩展到
convert img1.jpg -monochrome -resize 50% -rotate 180 img1_mono.pdf
convert img2.jpg -monochrome -resize 50% -rotate 180 img2_mono.pdf
convert img3.jpg -monochrome -resize 50% -rotate 180 img3_mono.pdf
convert img4.jpg -monochrome -resize 50% -rotate 180 img4_mono.pdf
convert img5.jpg -monochrome -resize 50% -rotate 180 img5_mono.pdf
convert img6.jpg -monochrome -resize 50% -rotate 180 img6_mono.pdf
convert img7.jpg -monochrome -resize 50% -rotate 180 img7_mono.pdf
convert img8.jpg -monochrome -resize 50% -rotate 180 img8_mono.pdf
convert img9.jpg -monochrome -resize 50% -rotate 180 img9_mono.pdf
convert img10.jpg -monochrome -resize 50% -rotate 180 img10_mono.pdf语法如下:
m[<range start:=0>][<separator:= >]<range end>[lisp expr][&][format expr]x是elisp表达式中的默认变量。它将一个一个地取范围内所有数字的值。
&意味着elisp已经结束,格式expr已经开始。如果只有一个,它可以作为expr格式的一部分使用。键与format的键相同:我只是翻译& to %。
您可以在tiny.el的注释部分找到更多的片段。
UPD: expr现在可以返回一个列表
按照你的建议,这是下一个改进。这个变量没有辅助变量(96是(- ?a 1)的值):
m1\n10listx+x96&convert img&s.jpg -monochrome -resize 50% -rotate 180 img&c_mono.pdf这个是带辅助变量的。首先定义它(当然,使用tiny:):
(setq foo-list '(m 10+x97&?&c))把这个扩展到
(setq foo-list '(?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k))下面是你如何使用它:
m1\n10listxnthxfoo-list&convert img&s.jpg -monochrome -resize 50% -rotate 180 img&c_mono.pdf扩张将是
convert img1.jpg -monochrome -resize 50% -rotate 180 imga_mono.pdf
convert img2.jpg -monochrome -resize 50% -rotate 180 imgb_mono.pdf
convert img3.jpg -monochrome -resize 50% -rotate 180 imgc_mono.pdf
convert img4.jpg -monochrome -resize 50% -rotate 180 imgd_mono.pdf
convert img5.jpg -monochrome -resize 50% -rotate 180 imge_mono.pdf
convert img6.jpg -monochrome -resize 50% -rotate 180 imgf_mono.pdf
convert img7.jpg -monochrome -resize 50% -rotate 180 imgg_mono.pdf
convert img8.jpg -monochrome -resize 50% -rotate 180 imgh_mono.pdf
convert img9.jpg -monochrome -resize 50% -rotate 180 imgi_mono.pdf
convert img10.jpg -monochrome -resize 50% -rotate 180 imgj_mono.pdfhttps://stackoverflow.com/questions/18107568
复制相似问题