Uso previsto di ctrl + T in bash?


47

Ho notato che bash ha una scorciatoia per ctrl+ Tche scambia gli ultimi due caratteri prima del cursore.

Mi chiedo perché gli ingegneri abbiano deciso di includerlo.

  • È stato ereditato da una precedente convenzione?
  • O c'è uno scopo pratico per cui questo è comunemente usato?

13
Non una risposta, ma questa non è bash, in quanto tale, ma readline(che bash utilizza per l'input al prompt). Il tuo bash sta usando emacsle combinazioni di tasti; è possibile modificare a VI-chiave attacchi se le vostre guerre un Editor di parte;) sanctum.geek.nz/arabesque/vi-mode-in-bash Ci sono un paio di "frode-fogli" per readlinequi: readline.kablamo.org/emacs .html e readline.kablamo.org/vi.html .
John N,

13
Storicamente, la linea di comando di Emacs-style editing caratteristiche sono stati inizialmente sviluppati in Bash, e poi trasformato in una libreria separata - ma quello che è successo prima che la prima versione nel 1989. La prima voce ireadline ChangeLog suggerimenti a questo. Quindi originariamente la scorciatoia era gestita in Bash stessa, anche se brevemente, prima di essere estratta in readline- ma la scorciatoia arrivò a Bash da Emacs (non so se fosse stata inventata in Emacs o provenisse da altrove).
Stephen Kitt,

Risposte:



63

È molto utile per correggere rapidamente i refusi:

sl

diventa

ls

con un singolo CtrlT.

Puoi usare anche AltTper scambiare parole ( ad es. Quando passi da servicee a systemctl...).

Storicamente parlando, la CtrlTfunzionalità è arrivata a Bash da Emacs con ogni probabilità. Probabilmente fu copiato in Emacs da qualche altro editore; era presente nell'editor E di Stanford (vedi Essential E a pagina 13) entro il 1980 ed E ebbe un forte impatto su Richard Stallman (come descritto in Free as in Freedom ). È stato implementato nelle primissime versioni di Bash, prima della sua prima uscita nel 1989, quando è stato estratto nella readlinelibreria dove vive oggi (la prima voce nei readline ChangeLogsuggerimenti a questo).


2
Lo scambio di parole è stato qualcosa di nuovo e molto utile
Mongrel il

Fornendo un argomento numerico Alt + T traspone la parola a (o prima) il cursore con il n parola -esima prima parola. es: Alt + 2 Alt + T modificherà word1 word2 word3a word3 word2 word1se eseguita a word3.
Crw

@crw sarebbe bello ma alt + T non scambia le parole sul mio terminale. Ho appena aperto la voce di menu 'imposta titolo'.
Philip Kirkbride,

@PhilipKirkbride è un peccato, il tuo emulatore di terminale ti sta privando di una scorciatoia molto utile ...
Stephen Kitt,

@PhilipKirkbride dovrebbe esserci un'opzione dell'emulatore di terminale per disabilitare i tasti di accesso al menu
Joril

15

Questa combinazione di tasti, un'associazione ereditata emacsdall'editor, fa sì che gli ultimi 2 caratteri digitati vengano scambiati alla fine della riga, utilizzati al centro di una riga, scambia il carattere a sinistra del cursore e quello sotto il cursore.

Può sembrare vano avere un'associazione per una funzione così raramente utilizzata che può essere facilmente raggiunta con qualche altro tasto. I vecchi timer come me lo usano abbastanza spesso e facevano risparmiare un po 'di tempo di trasmissione ai tempi di 300 modem baud, alla fine degli anni '70, specialmente nel mezzo di lunghe file.

Un comando simile e più utile, associato a Alt+ T, traspone le parole a sinistra e a destra del cursore.

Tè stato scelto perché è la lettera iniziale di trasposizione . Altre associazioni con origine simile includono:

  • Ctrl+ B, per tornare indietro , sposta il cursore a sinistra di una posizione,
    • Alt+ Bsposta il cursore a sinistra di una parola,
  • Ctrl+ F, per l' avanzamento , sposta il cursore a destra di una posizione,
    • Alt+ Fsposta il cursore a destra di una parola,
  • Ctrl+ A, per Anfang o ante , sposta il cursore all'inizio della riga,
  • Ctrl+ E, per fine , sposta il cursore alla fine della linea,
  • Ctrl+ N, per il prossimo , recupera la riga successiva,
  • Ctrl+ P, per precedente , recupera la riga successiva,
  • Ctrl+ D, per eliminare , elimina il carattere sotto il cursore,
    • Alt+ Dcancella la parola sotto il cursore,
  • Ctrl+ K, per uccidere , taglia la fine della linea,
  • Ctrl+ Y, per yank , incolla il contenuto degli appunti,

Questi collegamenti, implementati nel pacchetto readline GNU, sono quindi disponibili in tutti i programmi che lo usano per l'input dell'utente, come bash , ma anche gdb , bc , ...

Alcuni di questi sono disponibili anche in altri ambienti: la riga di input dell'URL di Firefox, i campi di input di testo nell'interfaccia grafica OS / X e molti gestori di finestre basati su X.

gli utenti di vim possono selezionare i collegamenti corrispondenti tramite una variabile di ambiente.


Sì, è fantastico per quelli come noi che a volte dimenticano che stiamo digitando in un terminale piuttosto che in un Emacs; Rimango ancora sorpreso quando utilizzo i widget textarea di Firefox (come questo ora), che mancano di questi importanti collegamenti. :-(
Toby Speight,

Esiste un modo per associare le versioni di caratteri e parole dei comandi correlati nella descrizione? Aiuta davvero la memoria quando riconosci che le versioni Alte Ctrldi quei tasti sono correlate in modo coerente.
Toby Speight,

@TobySpeight GTK + supporta un tema di associazione di tasti in stile Emacs alternativo in modo da poter utilizzare alcune di queste combinazioni di tasti in Firefox. C-ttuttavia sembra non fare nulla. wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
Candy Gumdrop

@TobySpeight hai mai provato It's All Text! ? Ti permette di modificare il contenuto delle textareas nell'editor di tua scelta.
Stephen Kitt,

Grazie @Stephen - Ne ho sentito parlare, ma non l'ho provato (ancora). Lo seguirò ...
Toby Speight,

10

È vrey useufl per correggere tepyos smiple wehre yuo che hai trasdotto accidentalmente piars di lettres.

(Avendo una RSI grave in entrambi i polsi, finisco per usarla molto, personalmente ...)


2
I miei occhi sanguinano
Base

4

Un refuso molto rapido. effettua il blocco correttore immediato 2 prima del cursore.

Se hai digitato ls-e vuoi uno spazio tra ls& trattino, puoi usare Ctrl+T

Funziona se hai uno spazio dopo il trattino e poi fai Ctrl+T

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.