Textmate:如何输入重复的字符序列?

时间:2009-02-06 21:47:11

标签: emacs textmate

我经常需要输入文字(由重复的字符组成),如下所示:

------------------------------------
 TODO
------------------------------------

在emacs中,我可以做一个

C-u 60 - 

这是一个Ctrl + U后跟一个“60”后跟一个“ - ”,这使得输入一个重复的字符序列变得容易。

有没有办法在TextMate中做这样的事情?

2 个答案:

答案 0 :(得分:4)

对于您提供的具体示例,您可以键入Ctrl-Shift-B,“TODO”来创建文本横幅。

答案 1 :(得分:4)

在TextMate中,打开Bundle Editor并选择您要执行此操作的语言。(如果您希望使用所有语言的此功能,请使用Source包)单击左下角的加号,并选择“新命令”。为“保存”字段选择“无”,为两个输入字段选择“选定的文本或行”。然后将其粘贴到命令字段中:

#!/usr/bin/python
import sys
commandLine = raw_input("")
tmArgs = commandLine.split()
numberOfArgs = len(tmArgs)
for i in range(eval(tmArgs[0])):
    for j in range(1, numberOfArgs):
        sys.stdout.write(tmArgs[j])

然后,您可以在“激活”字段中选择一个键盘快捷键来激活它。它的工作方式与emacs命令非常相似:键入要跟随的字符数。然后选择它们(如果它们是线上唯一的文本,则不需要此步骤)并按快捷键。我的脚本允许您指定要打印的多个字符,并以空格分隔。所以,如果你输入

10 - =

然后点击快捷键,你就得到了

-=-=-=-=-=-=-=-=-=-=

编辑:在考虑之后......这是另一个版本。这个将在数字后打印字符串。例如,

6 -= (space)

打印

-= -= -= -= -= -= 

这是那个版本:

#!/usr/bin/python
import sys
import string
commandLine = raw_input("")
timesToPrint = eval(commandLine.split()[0])
firstSpace = string.find(commandLine, " ")
for i in range(timesToPrint):
        sys.stdout.write(commandLine[firstSpace + 1:])