Frage

Ich muss oft Text eingeben (bestehend aus wiederholten Zeichen) wie folgt aus:

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

Im Emacs kann ich ein tun

C-u 60 - 

das ist ein Strg + U von einem „60“ gefolgt, gefolgt von einem „-“., Die eine wiederholte Abfolge von Zeichen einfach macht Eingabe

Gibt es eine Möglichkeit etwas wie dies in Textmate zu tun?

War es hilfreich?

Lösung

Textmate, öffnen Sie das Bundle-Editor und wählen Sie die Sprache, die Sie dies tun möchten, dass in. (Wenn Sie in allen Sprachen dieser Funktionalität haben möchten, die Source-Bundle verwenden) Klicken Sie auf das Plus-Symbol in der linken unteren und „Neuer Befehl“ wählen. Wählen Sie „Nichts“ für die Save-Feld und „Ausgewählten Text oder Line“ für die beiden Eingabefelder ein. Dann ist diese Paste in das Feld Befehle:

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

Sie können dann eine Tastenkombination wählen, diese mit im Aktivierungs-Feld zu aktivieren. Die Funktionsweise ist sehr ähnlich zu dem Emacs-Befehl: die Anzahl der Zeichen geben Sie die Zeichen gefolgt werden soll. Dann wählen sie beide (dieser Schritt ist nicht erforderlich, wenn sie der einzige Text auf der Linie ist), und drücken Sie die Tastenkombination. Mein Skript können Sie mehrere Zeichen zu drucken, begrenzt durch Leerzeichen angeben. Also, wenn Sie eingegeben

10 - =

und die Tastenkombination treffen, würden Sie bekommen

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

Bearbeiten : Nach dem darüber nachzudenken ... hier ist eine andere Version. Dieser wird die Zeichenfolge nach der Nummer drucken. So zum Beispiel

6 -= (space)

druckt

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

Hier ist die Version:

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

Andere Tipps

Für das spezielle Beispiel, das Sie gegeben haben, können Sie Strg-Umschalt-B, "TODO", um ein Text-Banner zu erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top