2009-02-06 10 views
6

I często trzeba wprowadzić tekst (składający się z powtarzających się znaków) tak:Textmate: Jak wprowadzić powtarzającą się sekwencję znaków?

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

W emacs, mogę zrobić

C-u 60 - 

że to Ctrl + U, a następnie przez "60", a następnie przez "-", co ułatwia wprowadzanie powtarzających się sekwencji znaków.

Czy istnieje sposób na zrobienie czegoś takiego w TextMate?

+0

Bo kto to głosował w dół, chciałbym wiedzieć, dlaczego. – PlagueHammer

Odpowiedz

4

W aplikacji TextMate otwórz Edytor paczki i wybierz język, w którym chcesz wykonać tę czynność. (Jeśli chcesz mieć tę funkcję we wszystkich językach, użyj pakietu Źródła) Kliknij symbol plusa u dołu w lewo i wybierz "Nowe polecenie". Wybierz "Nic" dla pola Zapisz i "Wybrany tekst lub linię" dla dwóch pól wprowadzania. Następnie wklej to w polu Polecenia:

#!/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]) 

Następnie można wybrać skrót klawiaturowy do aktywacji w polu Aktywacja. Sposób działania jest bardzo podobny do tego polecenia emacs: wpisz liczbę znaków, które chcesz, a następnie znak. Następnie wybierz obie (ten krok jest niepotrzebny, jeśli są jedynym tekstem na linii) i naciśnij klawisz skrótu. Mój skrypt pozwala na określenie wielu znaków do wydrukowania, rozdzielanych spacjami. Więc jeśli wpisane

10 - = 

i naciśnij klawisz skrótu, można dostać

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

Edycja: Po tym myśleć ... oto inna wersja. Ten wydrukuje ciąg po numerze. Tak na przykład

6 -= (space) 

nadrukami

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

Oto ta wersja:

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

W podanym przykładzie możesz wpisać Ctrl-Shift-B, "TODO", aby utworzyć baner tekstowy.