Textmate: Как мне ввести повторяющуюся последовательность символов? - PullRequest
6 голосов
/ 07 февраля 2009

Мне часто нужно вводить текст (состоящий из повторяющихся символов) следующим образом:

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

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

C-u 60 - 

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

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

Ответы [ 2 ]

4 голосов
/ 14 февраля 2009

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

#!/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:])
4 голосов
/ 07 февраля 2009

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

...