代码之家  ›  专栏  ›  技术社区  ›  Debajit

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

  •  6
  • Debajit  · 技术社区  · 16 年前

    我经常需要输入这样的文本(由重复字符组成):

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

    在Emacs中,我可以

    C-u 60 - 
    

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

    在textmate中有什么方法可以这样做吗?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Kevin Griffin    16 年前

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

    #!/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:])
    
        2
  •  4
  •   Ryan Bright    16 年前

    对于给定的特定示例,可以键入ctrl-shift-b、“todo”创建文本横幅。