Terminale Mac OS X: opzione mappa + elimina per "elimina parola all'indietro"


232

Ho provato a mapparlo da Preferenze -> Impostazioni -> Tastiera, ma la casella combinata "chiave" ha solo "inoltra" ma non "elimina". La mia tastiera invece ha solo "elimina" e nessun "elimina in avanti"!

C'è un altro modo per farlo se non dalle preferenze?


Per "parola all'indietro", intendi il tasto backspace? Non sono a conoscenza di alcuna tastiera Apple recente che abbia un tasto Canc.
Sören Kuklau,

Con "cancella parola all'indietro" intendo esattamente questo: cancellare l'intera parola a partire dal cursore all'indietro. :) L'ultimo Macbook ha una chiave etichettata "elimina", ma funge da backspace.
ibz,

sto affrontando lo stesso problema. la tastiera ha una cancellazione all'indietro ma non può essere utilizzata come associazione in Terminal.app.
Knoopx,

Per me, la tua domanda merita milioni di voti. Mi ha aiutato molto. In precedenza, ero Ubuntu. Ora, questo mi ha semplificato la vita anche su Mac OS. Grazie.
doptimusprime

Risposte:


424

Abilita chiave opzione come meta chiave

  1. Vai a Terminal> Preferences> Profiles>Keyboard
  2. Controllare Use option key as meta key.

Immagine

Su macOS High Sierra 10.13.6, catturato il 23 ottobre 2018.

Illustrazione della finestra per attivare / disattivare la chiave opzione come meta chiave

Appunti

Molte applicazioni (tra cui bash e tcsh) trattano Meta-Delete come "backword delete word".


32
È sotto Preferenze terminale> impostazioni> tastiera, proprio in fondo.
Jon,

16
Perché questo non è predefinito ?!
Ross Hambrick,

8
Su Yosemite, questa impostazione è ora in Preferenze -> Profili -> Tastiera. Sembra che tu debba modificarlo / impostarlo per ciascun profilo.
palinsesto

6
Sulle tastiere non statunitensi, è spesso necessario il tasto opzione per ottenere determinati caratteri (ad es. Pipe "|" è piuttosto importante nella shell). In tal caso, <Esc> be <Esc> f menzionati in altre risposte sono probabilmente la soluzione migliore?
Touko,

8
Sfortunatamente, questo è controproducente per i programmatori con tastiere straniere che hanno bisogno di usare il tasto opzione per ottenere simboli speciali come {, perché non funzionerà quando il tasto opzione è usato come tasto meta.
Magne

74

Il terminale di OS X esegue bash, che include il supporto readline. Segui i consigli di Glomek e di 'al terminale di usare l'opzione come meta-chiave (oppure usa Esc) e poi hai un sacco di opzioni utili: Ctrl+ welimina la parola precedente (come fa Meta + cancella come menzionato), ma puoi anche usare Meta + f e Meta + b per camminare avanti e indietro tra le parole, Ctrl+ ae Ctrl+ eall'inizio e alla fine della riga, Ctrl+ kelimina (uccidi) dal cursore alla fine della riga e un altro gruppo.

Vedi http://www.bigsmoke.us/readline/shortcuts per una bella tabella di riferimento.


3
Come è "utile"? Il resto del sistema utilizza i deletequalificatori per eliminare le parole.
idrougge,

È possibile avere anche "elimina riga"?
wenbert,

1
Readline è eccezionale, ma questo non aiuta OP. Ctrl + w cancella una WORD (separata da uno spazio), non una parola (separata da una punteggiatura + uno spazio). Con il cursore alla fine di cat .git/refs/heads, Ctrl-w risulta in cat. Meta + elimina i risultati incat .git/refs/
idbrii,

@nadafigment, 'a' ed 'e' significa?
Pacerier

63

Elimina una parola tornando indietro:

Ctr-w.


2
bene dopo aver letto questo ho scoperto che "elimina la parola in avanti" è ctrl + k (per tentativi ed errori). ora mi chiedo perché ci sia così poca documentazione su tutto questo.
vincitore n.

8
Ctr-k cancella tutto davanti, non solo una parola, no?
Shai,

questo funziona sul mio mac. funziona anche su Ubuntu Linux?
user391339

1
Ctrl + w cancella una WORD (separata da uno spazio), non una parola (separata da una punteggiatura + uno spazio). Con il cursore alla fine di cat .git/refs/heads, Ctrl-w risulta in cat. Meta + elimina i risultati incat .git/refs/
idbrii,

24

Per impostazione predefinita, meta backspace fa uno strattone all'indietro nella maggior parte delle shell. Se premi Esc e poi premi backspace, funziona praticamente ovunque.


3
Fantastico, che non richiede alcuna configurazione aggiuntiva. Noto <Esc> be <Esc> flavoro anche per saltare indietro o avanti di una parola.
Joeytwiddle,

1
Mi piace <ALT> + FRECCIA di più. ESC non consente clic continui su b o f.
Vitali Pom,

1
Ho usato <ALT> + FRECCIA per spostarmi, ma trovo che non c'è modo di eliminare in modo simile. L'approccio CTRL + W sopra menzionato non si ferma ai caratteri non di parole nello stesso modo in cui <ALT> + FRECCIA fa, quindi elimina tutto fino allo spazio bianco. Qualsiasi modo di eliminare utilizzando un rilevamento dei limiti simile a <ALT> + FRECCIA sarebbe apprezzato
Rene Wooller,

18

⌃W(control + W) non è la stessa cosa di meta + delete (ESC + delete se non hai selezionato l'opzione use come meta key) meta + delete tratterà / _come delimitatore di parole dove^W considererà lo spazio come delimitatore.

ad es. usando ESC + Bakcspace on (cursore alla fine)

rm /dira/dirb/file1

rm /dira/dirb/

mentre ^ W sullo stesso darà

rm

Quindi è meglio usare \ 033 \ 177 piuttosto che ^ W quando si definisce la modifica del profilo del terminale. In questo modo stai davvero mappando ⌥⌫ su cosa sta facendo esc⌫ e continui ad avere ^ W per cancellare la parola in base al delimitatore di spazio.

Mi piacerebbe poter pubblicare un'immagine su come farlo, ma come principiante non posso.

fare riferimento al commento bouke per vedere come modificare il profilo del terminale.


5
Per coloro che desiderano farlo in iterm2, è possibile andare su Preferenze> Chiavi> aggiungere la mappatura delle chiavi ⌥⌫per inviare codici esadecimali 0x1B 0x7F. 🍻
qix,

Come hai scoperto che \033\177è quello che vuoi per "cancellare una parte di una parola"?
adiabatico,

infatti devi solo premere la sequenza di tasti desiderata nella finestra di dialogo Preferenze terminale. Preferenze → Profili → scheda Tastiera → pulsante + quindi seleziona il modificatore "opzione" e il tasto "⌫ elimina" quindi seleziona il campo di testo e premi il tasto Esc quindi premi il tasto ⌫ e il gioco è fatto. Esc + ⌫ fa la stessa cosa di ⌥⌫
Stephane Gasparini,

14

Nel profilo del tuo Terminale, puoi associare ⌥⌫ (opzione + elimina) a ⌃ W (controllo + W), quindi funziona in modo simile ad altre app.

Impostazioni tastiera profilo terminale


stty deve avere ^ w mappato su werase (comportamento predefinito) affinché funzioni. Usa stty -a sulla riga di comando per vedere come sono impostati i mapping.
natersoz,

4

Scorciatoie per la modifica dei comandi

Ctrl + a - vai all'inizio della riga di comando

Ctrl + e - vai alla fine della riga di comando

Ctrl + k: elimina dal cursore alla fine della riga di comando

Ctrl + u: elimina dal cursore all'inizio della riga di comando

Ctrl + w - cancella dal cursore all'inizio della parola (cioè cancella indietro di una parola)

Ctrl + y - incolla la parola o il testo che è stato tagliato usando una delle scorciatoie di cancellazione (come quella sopra) dopo il cursore

Ctrl + xx - sposta tra l'inizio della riga di comando e la posizione corrente del cursore (e viceversa)

Alt + b - sposta indietro di una parola (o vai all'inizio della parola il cursore è attualmente attivo)

Alt + f - sposta in avanti di una parola (o vai alla fine della parola il cursore è attualmente attivo)

Alt + d - cancella fino alla fine della parola a partire dal cursore (parola intera se il cursore si trova all'inizio della parola)

Alt + c - maiuscole alla fine della parola che inizia dal cursore (parola intera se il cursore si trova all'inizio della parola)

Alt + u - fa maiuscole dal cursore alla fine della parola

Alt + l - passa in minuscolo dal cursore alla fine della parola

Alt + t - scambia la parola corrente con la precedente

Ctrl + f - sposta in avanti di un carattere

Ctrl + b - sposta indietro di un carattere

Ctrl + d - cancella il carattere sotto il cursore

Ctrl + h: elimina il carattere prima del cursore

Ctrl + t - scambia il carattere sotto il cursore con quello precedente

Scorciatoie per i comandi

Ctrl + r - cerca la cronologia all'indietro

Ctrl + g - evita la modalità di ricerca della cronologia

Ctrl + p - comando precedente nella cronologia (ovvero tornare indietro nella cronologia dei comandi)

Ctrl + n - comando successivo nella cronologia (ad es. Avanzare nella cronologia dei comandi) Alt +. - usa l'ultima parola del comando precedente

Scorciatoie per il controllo dei comandi

Ctrl + l - cancella lo schermo

Ctrl + s - interrompe l'output sullo schermo (per un comando dettagliato di lunga durata)

Ctrl + q - consente l'output sullo schermo (se precedentemente interrotto utilizzando il comando sopra)

Ctrl + c - termina il comando

Ctrl + z - sospende / arresta il comando

Comandi di Bash Bang (!) Bash ha anche alcune utili funzioni che usano il! (bang) per permetterti di fare alcune cose funky con i comandi bash.

!! - esegui l'ultimo comando! Blah - esegui il comando più recente che inizia con 'blah' (es.! Ls)

! blah: p - stampa il comando che! blah verrebbe eseguito (lo aggiunge anche come ultimo comando nella cronologia dei comandi)

! $ - l'ultima parola del comando precedente (uguale a Alt +.)

! $: p - stampa la parola che! $ sostituirà

! * - il comando precedente ad eccezione dell'ultima parola (ad esempio se si digita '_find somefile.txt /', allora! * Ti darebbe '_find somefile.txt')

! : p - stampa cosa! sostituirebbe


2

Con il Natural Text Editingpreset abilitato in Profilo -> Tasti. Puoi semplicemente rimuovere la parola

  • Indietro con alt + delete
  • Avanti con fn + alt + delete
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.