Una delle caratteristiche più comode che ho imparato ad apprezzare nel prompt di comando Linux (console) è la caratteristica di completamento automatico dei nomi delle cartelle e/o dei file quando si preme il tasto Tab. Caratteristica molto utile anche in funzione del fatto che per impostazione predefinita il filesystem di Linux fa differenza tra maiuscole e minuscole pertanto potete avere due file o due directory con lo stesso nome ma scritto con maiuscole/minuscole diverse.

Questa caratteristica era presente, per Windows, già da XP ma per motivi che non so individuare, dopo l’installazione di SP2 sul mio Vista, questa caratteristica ha smesso di funzionare (premendo Tab il cursore si spostava ma non veniva completato il nome che avevo iniziato a digitare).

Un po’ di ricerca ed ecco come riattivarlo.

  1. Aprite, con privilegi di amministratore, l’applicazione Regedit
  2. Cercate la chiave HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor
  3. Nel pannello di destra fate doppio click sul valore DWORD CompletionChar ed inserite il valore 9.  Salvate con Ok.
  4. Nel pannello di destra fate doppio click sul valore DWORD PathCompletionChar ed inserite il valore 9.  Salvate con Ok.
  5. Cercate la chiave HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  6. Ripetete il punto 3
  7. Ripetete il punto 4
  8. Chiudete Regedit

Aprite ora un prompt dei comandi e provate a premere Tab dopo aver scritto la parte iniziale di un nome file o di un nome directory. Il nome verrà completato automaticamente e, se contiene degli spazi, verrà racchiuso tra doppi apici.

Alcune note. L’impostazione registrata nella chiave HKEY_CURRENT_USER (punto 5) è prevalente rispetto a quella registrata in HKEY_LOCAL_MACHINE (punto 2). Pertanto potete definire un’impostazione standard che verrà applicata ai nuovi utenti che si iscrivono ad utilizzare il computer e poi personalizzarla a livello di profilo utente. Noterete anche che le chiavi di controllo sono due: CompletionChar che serve ad attivare il completamento automatico per i nomi dei file e PathCompletionChar che serve ad attivare il completamento automatico dei nomi delle directory. Pertanto, a differenza di quanto riportato in questo esempio (dove alla pressione di Tab viene completato indifferentemente il nome di un file o di una cartella), è possibile impostare una combinazione specifica solo per i file o solo per le cartelle.

I valori da inserire (in CompletionChar e/o in PathCompletionChar) sono esadecimali e possono essere :

  1. 0 (zero) che significa Autocompletamento disabilitato
  2. da 1 a 1F che significa che l’Autocompletamento viene eseguito alla pressione del corrispondente tasto abbinato al codice ASCII. Ovviamente non tutti i codici ASCII hanno un tasto associato. Per capire quali siano i codici ASCII da 1 a 1F potete consultare questa tabella. In questo intervallo potrete per esempio inserire il valore 9 (che corrisponde al tasto Tab come indicato in questo esempio), il valore 8 che corrisponde al tasto Backspace (ovviamente non avrebbe senso altrimenti come fate a cancellare i caratteri ?) , il valore D che corrisponde all’enter (anche questo non ha senso altrimenti non potete inviare il comando) … ecc.
  3. il valore 20 che corrisponde al tasto Barra Spazio ma che ha l’effetto di disabilitare il completamento automatico.
  4. il valore 40 che corrisponde al . (punto)

L’impostazione di autocompletamento viene letta dal registro di sistema ogni qualvolta si accede al prompt di comando tramite cmd. E’ comunque possibile personalizzare l’accesso a cmd aggiungendo uno switch che abiliti o disabiliti il completamento automatico. In particolare :

  • cmd /F:ON attiva il completamento automatico per la sessione corrente
  • cmd /F:OFF disattiva il completamento automatico per la sessione corrente