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

Pla*_*mer 6 emacs textmate

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

------------------------------------
 TODO
------------------------------------
Run Code Online (Sandbox Code Playgroud)

在emacs中,我可以做一个

C-u 60 - 
Run Code Online (Sandbox Code Playgroud)

这是一个Ctrl + U后跟一个"60"后跟一个" - ",这使得输入一个重复的字符序列很容易.

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

Kev*_*fin 4

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

#!/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])
Run Code Online (Sandbox Code Playgroud)

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

10 - =
Run Code Online (Sandbox Code Playgroud)

然后按快捷键,你会得到

-=-=-=-=-=-=-=-=-=-=
Run Code Online (Sandbox Code Playgroud)

编辑:经过思考...这是另一个版本。这将在数​​字后面打印字符串。例如

6 -= (space)
Run Code Online (Sandbox Code Playgroud)

印刷

-= -= -= -= -= -= 
Run Code Online (Sandbox Code Playgroud)

这是那个版本:

#!/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:])
Run Code Online (Sandbox Code Playgroud)