2009-02-06 3 views
6

мне часто нужно вводить текст (состоящий из повторяющихся символов), как это:Textmate: Как ввести повторяющуюся последовательность символов?

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

В Emacs, я могу сделать

C-u 60 - 

это Ctrl + U затем «60», а затем «-», что упрощает ввод повторяющейся последовательности символов.

Есть ли способ сделать что-то подобное в TextMate?

+0

ибо кто голосовал это вниз, я хотел бы знать, почему. – PlagueHammer

ответ

4

В TextMate откройте редактор Bundle Editor и выберите язык, в котором вы хотели бы сделать это. (Если вы хотите иметь эту функциональность на всех языках, используйте пул источников) Нажмите символ «плюс» внизу влево и выберите «Новая команда». Выберите «Ничего» для поля «Сохранить» и «Выбранный текст или строка» для двух полей ввода. Затем вставьте в поле Команды:

#!/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 - = 

и нажмите клавишу быстрого доступа, вы получите

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

Edit: Подумав об этом ... вот еще одна версия. Этот будет печатать строку после номера. Так, например

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:]) 
4

Для конкретного примера, который вы указали, вы можете ввести Ctrl-Shift-B, «TODO», чтобы создать текстовый баннер.