![]() |
Nota: Hotstrings richiede Windows NT/2000/XP o superiori.
Benche’ le hotstring siano usate principalmente per espandere le abreviazioni, tanto che vengono dette auto-replace, possono anche essere usate per lanciare ogni azione di script. In questo contesto, sono simili alle hotkey eccetto che sono tipicamente composte da piu di un carattere (una stringa, appunto).
Per definire un hotstring, racchiudere l' abbreviazione tra un paio di due-punti (:) come nell' esempio:
::btw::by the way
Nell' esempio l' abbreviazione btw sara' automaticamente rimpiazzata con "by the way" ogni volta che viene digitata (comunque, di defoult devi usare un ending character dopo il btw, come ad es. TAB, spazio o invio).
L' esempio “by the way” suddetto e' conosciuto come auto-replace hotstring perche il testo scritto viene automaticamente cancellato e sostituito dal testo scritto dopo il secondo paio di due punti (:). Ma un hotstring puo' essere personalizzata per effettuare un azione qualsiasi, come nell' esempio. Nota che il comando deve essere sotto la hotstring:
::btw::
MsgBox You typed “btw”.
return
:*:]d:: ; Questa Hotstring sostituira' ]d con la data e l'ora del P.C che si sta usando
FormatTime, CurrentDateTime,, M/d/yyyy h:mm tt ; Apparira' cosi' 9/1/2005 3:53 PM
SendInput %CurrentDateTime%
return
L 'abbreviazione che scrivi verra' cancellata automaticamente. Cio' viene ottenuto attraverso automatici backspacing, che possono essere disabilitati con b0 option.
A meno che la asterisk option sia attiva, si deve digitare un ending character dopo una abbreviazione per azionarla. I caratteri di chiusura sono: : -()[]{}':;"/\,.?!`n `t (nota che `n e' Enter, `t e' Tab, e tra i due c'e' anche uno spazio). Questo set di caratteri puo' essere cambiato modificando il seguente esempio, che setta i nuovi caratteri di chiusura per tutte le hotstring:
#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t
Il comportamento di default delle Hotstrings puo' essere cambiato in due modi:
Nota: quando si specificano piu di un opzione dalla lista
sottostante, uno spazio puo essere incluso nel mezzo.
*
(asterisco): Non e' riciesto un carattere di fine (e.s. space, period,
or enter) per richiamare l' hotstring. Per esempio:
:*:j@::jsmith@somedomain.com
Nell'esempio la funzione parte quando viene digitato il carattere @. Quando si usa #Hotstring directive, pr disattivare la funzione digitare *0.
?(Punto interrogativo):La hotstring verra' richiamata anche se la scorciatoia viene digitata all'interno di un'altra parola; cio' accade quando il carattere immediatamente prima e' alfanumerico Per esempio: se :?:al::airline e' una hotstring, scrivendo "practical " otterremo "practicairline ". Usa ?0 per disabilitare questa opzione.
B0 (B seguita da uno zero): non verra' cancellata l' abbreviazione scritta. utilizza B per riattivarla dopo che e' stata disabilitata.
C: Case sensitive: Quando digiti una abbreviazione, deve essere esattamente identica a quella definita nello script. Usa C0 per disattivare il case sensitivity (maiuscole/minuscole).
C1: Case insensitive, utilizza questa opzione per rendere le auto-replace hotstringscase insensitive e renderle percui disponibili indipentemente dalle maiuscole e minuscole. Case-conforming hotstrings (which are the default) produce their replacement text in all caps if you type the abbreviation in all caps. If you type only the first letter in caps, the first letter of the replacement will also be capitalized (if it is a letter). If you type the case in any other way, the replacement is sent exactly as defined. When using the #Hotstring directive, C0 can be used to turn this option back off, which makes hotstrings conform again.
Kn: Key-delay(ritardo): Questa opzione, raramente usata, imposta il ritardo con cui viene attivata la keystroke prodotta da auto-backspacing o auto-replacement. Specificare il nuovo ritardo per n; Per esempio: specificare k10 per avere un ritardo di 10ms e k-1 per non avere ritardo. l'esatto comportamento di questa opzione dipende da quale sending mode si utilizza:
O: Omit : omettere il carattere di chiusura(attivazione) della auto-replace hotstringsquando avviene la sostituzione. cio' e' utile qunado non vuoi che il carattere di chiusura(attivazione) venga mostrato a video, pur volendo che la hotstring abbia un carattere di chiusura(attivazione). Per esempio: se :o:eg::egregi e' una hotstring, scrivendo "eg" seguito da uno spazio otterremo "egregi" con nessuno spazio dopo, cio' consente di aggiungere una desinenza senza dover prima cancellare lo spazio vuoto, e farla passare da plurale a femminile egregia oppure maschile egregio. Con O0 (la lettera O seguita da uno zero) per disattivare l'opzione.
Pn: La priorita'della hotstring (e.s. P1). Questa opzione raramente usata non ha effetto sulle auto-replace hotstrings.
R: Scrive il testo da sostituire in maniera testuale, anziche' interpretare {Enter} nel comando ENTER (keystroke), ^c in Control-C, etc. Questa opzione e' automatica per le hotstring con continuation section. R0 per disattivare l'opzione.
SI o SP o SE [v1.0.43+]: Setta il metodo con cui auto-replace hotstrings invia i suoi keystroke. Queste opzioni sono non sono abbinabili: hanno effetto una alla volta.
Z: Questa opzione riazzera la hotstring recognizer dopo ogni attivazione di una hotstring. In altre parole, lo script aspetta che venga scritta per intero una nuova hotstring, non considerando cio' che era precedentemente digitato. questo previene involontari richiami di hotstrings. Considerare il seguente esempio:
:b0*?:11::
SendInput xx
return
Poiche non e' specificata l'opzione Z, digitando 111 (tre 111 consecutivi) inneschera' due volte l' hotstring, poiche' l'1 di mezzo e' sia l'ultimo del primo richiamo, che il primo del secondo. Aggiungendo la lettera Z prima di b0, bisognera' digitare quattro 1 anziche' tre per attivare due volte la hotstring. Z0 per disattivare l'opzione.
Una Hotstring che produce una grande quantita' di testo puo' essere resa piu' leggibile e aggiornabile utilizzando una continuation section. Per esempio:
::text1::
(
Ogni testo inserito tra le due parentesi vengono riportate letteralmente, compresi i segni particolari.
di default, il ritorno a capo return (Enter) con la linea precedente viene rispettato.
di default, l'indentazione (tab)viene rispettato.
See continuation section per vedere come cambiare queste opzioni predefinite.
)
In presenza di sezioni continuate e' predefinito il modo di invio letterale raw mode. L'unico modo per sovrascrivere questa opzione eì di specificare r0 option in ogni hotstring costituito da una continuation section (e.g. :r0:text1::).
da v1.0.42+, la direttiva #IfWinActive/Existpuo' essere utilizzato per rendere le hotstrings sensibili al contesto. Tali hotstring possono inviare differendi sostituzioni, fare una differente azione, o non fare nulla a seconda di quale finestra e' attiva o esiste. Per esempio:
#IfWinActive ahk_class Notepad
::btw::Il testo sostituito compare solo su notepad.
#IfWinActive
::btw::Questo testo comparira' in tutte le altre finestre.
Il seguente script viene usato per correggere circa 3800 parole Inglesi mentre si scrive. Include anche una hotkey Win+H per facilitare l'inserimento di nuove parole:
Download: wikipedia_autocorrect.ahk (100 KB)
Author: Jim Biancolo and Wikipedia's Lists of Common Misspellings
Riferimenti a variabili come %MyVar% non sono attualmente supportate. Per lavorare con le variabili utilizzare SendInput anziche auto-replace.
:*:btw::
sendinput By the way
return
Per aggiungere uno spazio alla fine di del testo, terminare la linea con uno spazio e un accento (`).
:*:btw::By the way `
Dalla versione v1.0.42.03+, ogni click, sinistro o destro, del mouse resetta l' hotstring recognizer. In altre parole, lo script riiniziera' ad aspettare per una nuova hotstring, non considerando cio che era stato precedentemente digitato (se cio' crea inconvenienti, specificare #Hotstring NoMouse da qualche parte parte nello script). Questa opzione "reset upon mouse click" e' la predefinita poiche' generalmente il mouse sposta il punto di inserimento del testo, in questi casi e' preferibile: 1) lanciare una hotstring anche se difetta dell'opzione punto interrogativo question mark; 2)Prevenire il lancio della hotsting quando qualcosa che viene premuto prima di un click accidentale forma una valida abbreviazione con cio' che viene digitato dopo.
La variabile incorporata A_EndChar contiene l'ultimo carattere premuto per azionare la piu' recente hotstring non-auto-replace. Sen non e' necessario un carattere di chiusura (guarda la * option), la variabile sara' vuota. A_EndChar e' comoda quando si fanno hotstring che utilizzino il comando Send o per quelle il cui risultato dipende molto dall'ultimo carattere premuto. Per inviare in automatico l'ultimo carattere premuto, usa SendRaw %A_EndChar% (SendRaw viene utilizzato poche' caratteri come !{} non vengono inviati correttamente con il comando Send).
Tuttavia la virgola, il segno di percentuale, e i single-colons all'interno delle hotstring definitions non hanno bisogno di essere escaped, backticks e semicolons devono avere uno spazio o un tab alla sinistra. See escape sequences for a complete list.
Benche' il comando Send supporti caratteri speciali quali {Enter} nelle auto-replacement text (e' preferibile usare l'opzione raw ), le abbbreviazioni hotstring da sole non la utilizzano. percui specificare `n per ENTER key e `t (or a literal tab) per TAB (guarda escape sequences per una lista completa). Per esempio: la hotstring :*:ab`t:: verra' richiamata quando digiti "ab" seguita da un tab.
Spazi e tab vengono riportati letteeralmente. Per
esempio le seguenti produrranno effetti diversi:
::btw::by the way
::btw:: by the way
Ogni abbreviazione di una hotstring non puo' essere piu' lunga di 30 caratteri. Il programma vi avvertira' se supererete questo limite. Per contro, il limite dei caratteri che possono essere sostituiti e' limitata a 5000 caratteri quando sending mode e' il predefinito SendInput. Questo limite puo' essere incrementato a 16,383 caratteri cambiando uno degli altri sending modes. Perdippiu', un'illimitata quantita' di testo puo' essere inviata utilizzando SendPlay %MyVariable% nel corpo della hotstring.
L'ordine con cui vengono definite determina l'ordine di precedenza. In altre parole, se piu' di una hotstring viene richiamata da cio' che digiti, solamente la prima andra' in esecuzione. Related topic: context-sensitive hotstrings.
Sebbene backspacing possa essere inserito nella lista dei detecting hotstrings. Tuttavia, l'utilizzo dei tasti freccia, PageUp, PageDown, Home, e End per navigare all'interno dell'editor, riazzereranno il processo di riconoscimento della hotstring. In altre parole,iniziera' ad aspettare per una nuova hotstring.
Una hotstring puo' essere lanciata anche se la finestra attiva sembra non rispondere. In altre parole, la hotstring viene lanciata anche se la sostituzione non e' ancora visibile. Per di piu', puoi ancora spingere il tasto backspace per annullare la sostituzione (anche se ancora non vedi l'effetto).
It is possible to Gosub or Goto a hotstring label by including its first pair of colons (including any option symbols) in front of its name. For example: Gosub ::xyz. However, jumping to a single-line (auto-replace) hotstring will do nothing other than execute a return.
Although hotstrings are not monitored and will not be triggered during the course of an invisible Input command, visible Inputs are capable of triggering them.
Le Hotstring non possono mai essere richiamate dal testo prodotto da un altra AutoHotkey. Cio' impedisce che che si verifichi un loop infinito dove una hotstring ne richiama un'altra e un'altra.
Il comando Input e' piu' flessibile delle hotstrings per alcuni scopi. Per esempio: permette che la tua scorciatoia rimanga nascosta a video (such as a game). Supporta inoltre l'assenza del carattere di innesco come Escape.
Il keyboard hook viene automaticamente usato da uno script che contenga hotstring.
Hotstrings si comporta identicamente a hotkeys nei seguenti casi:
Limitazioni conosciute: Su alcuni sistemi nelle applicazioni Java, le hotstring possono interferire con la normale digitazione(via dead keys). Per aggirare il problema, Suspend puo' disattivarle temporaneamente (disabilitera' tutte le hotstring).
Andreas Borutta suggerisce il seguente script, che puo' esserti utile se sei un forte utilizzatore di hotstring. Premendo Win+H (o un'altra hotkey a tua scelta), e il testo attualmente selezionato puo' essere trasformato in una hotstring. Per esempio: se hai selezionato le parole "by the way" in un text editor, premendo Win+H verra' chiesta l'abbreviazione con cui richiamarla. (e.s. btw) e poi aggiunge la nuova hotstring allo script. Poi ricarica lo script per attivare i cambiamenti.
#h:: ; Win+H hotkey
; Get the text currently selected. The clipboard is used instead of
; "ControlGet Selected" because it works in a greater variety of editors
; (namely word processors). Save the current clipboard contents to be
; restored later. Although this handles only plain text, it seems better
; than nothing:
AutoTrim Off ; Retain any leading and trailing whitespace on the clipboard.
ClipboardOld = %ClipboardAll%
Clipboard = ; Must start off blank for detection to work.
Send ^c
ClipWait 1
if ErrorLevel ; ClipWait timed out.
return
; Replace CRLF and/or LF with `n for use in a "send-raw" hotstring:
; The same is done for any other characters that might otherwise
; be a problem in raw mode:
StringReplace, Hotstring, Clipboard, ``, ````, All ; Do this replacement first to avoid interfering with the others below.
StringReplace, Hotstring, Hotstring, `r`n, ``r, All ; Using `r works better than `n in MS Word, etc.
StringReplace, Hotstring, Hotstring, `n, ``r, All
StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All
StringReplace, Hotstring, Hotstring, `;, ```;, All
Clipboard = %ClipboardOld% ; Restore previous contents of clipboard.
; This will move the InputBox's caret to a more friendly position:
SetTimer, MoveCaret, 10
; Show the InputBox, providing the default hotstring:
InputBox, Hotstring, New Hotstring, Type your abreviation at the indicated insertion point. You can also edit the replacement text if you wish.`n`nExample entry: :R:btw`::by the way,,,,,,,, :R:`::%Hotstring%
if ErrorLevel ; The user pressed Cancel.
return
IfInString, Hotstring, :R`:::
{
MsgBox You didn't provide an abbreviation. The hotstring has not been added.
return
}
; Otherwise, add the hotstring and reload the script:
FileAppend, `n%Hotstring%, %A_ScriptFullPath% ; Put a `n at the beginning in case file lacks a blank line at its end.
Reload
Sleep 200 ; If successful, the reload will close this instance during the Sleep, so the line below will never be reached.
MsgBox, 4,, The hotstring just added appears to be improperly formatted. Would you like to open the script for editing? Note that the bad hotstring is at the bottom of the script.
IfMsgBox, Yes, Edit
return
MoveCaret:
IfWinNotActive, New Hotstring
return
; Otherwise, move the InputBox's insertion point to where the user will type the abbreviation.
Send {Home}{Right 3}
SetTimer, MoveCaret, Off
return
Download | Documentation | Changelog | Support | Forum | X Traduttori