2009-02-06 16 views
6

ho spesso bisogno di inserire il testo (composto da caratteri ripetuti) in questo modo:Compagno di testo: Come inserisco una sequenza di caratteri ripetuta?

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

in Emacs, posso fare un

C-u 60 - 

che è un Ctrl + U seguito da un "60" seguito con un "-", che rende facile l'immissione di una sequenza ripetuta di caratteri.

C'è un modo per fare qualcosa di simile in TextMate?

+0

Per chi ha votato questo in giù, mi piacerebbe sapere perché. – PlagueHammer

risposta

4

In TextMate, apri l'editor di bundle e seleziona la lingua in cui desideri eseguire questa operazione. (Se desideri avere questa funzionalità in tutte le lingue, utilizza il pacchetto Source) Fai clic sul simbolo più in basso a sinistra e scegli "Nuovo comando". Scegliere "Nothing" per il campo Save e "Selected Text o Line" per i due campi di input. Poi incolla questo nel campo Comandi:

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

È quindi possibile scegliere una scorciatoia da tastiera per attivare questo con nel campo di attivazione. Il modo in cui funziona è molto simile al comando emacs: scrivi il numero di caratteri che vuoi seguire dal personaggio. Quindi selezionare entrambi (questo passaggio non è necessario se sono l'unico testo sulla linea) e premere il tasto di scelta rapida. Il mio script ti permette di specificare più caratteri da stampare, delimitati da spazi. Quindi, se avete digitato

10 - = 

e premere il tasto di scelta rapida, si otterrebbe

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

Edit: Dopo averci pensato ... ecco un'altra versione. Questo stamperà la stringa dopo il numero. Così, per esempio

6 -= (space) 

stampe

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

Ecco quella versione:

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

Per l'esempio specifico che hai fornito, puoi digitare Ctrl-Maiusc-B, "TODO" per creare un banner di testo.

Problemi correlati