Equivalente terminale OS X di Ctrl + Sinistra / Ctrl + Destra


19

In Windows e Linux ho sempre potuto premere ctrl+ ←o ctrl+ →per saltare una parola a sinistra o a destra nel terminale. Negli editor di testo sembra che ⌥+ ←/ funzioni →, ma nessun dado nel terminale. Ho cercato su Google e non ho trovato nulla tranne una pagina di Wikipedia che afferma ⌥+ B/ Ffa il lavoro, ma tutto ciò che fa è stampare caratteri ∫ e ƒ sul mio terminale (o ı e Ï se tengo ⇧). Qualche idea?

Risposte:



12

Anche questo mi stava facendo impazzire, tuttavia non volevo una correzione specifica per Terminale poiché non uso Terminale, e potendo accedere a SSH nella mia casella OSX dovevo usare anche le combinazioni di tasti corrette.

Inoltre, personalmente, non mi importava della ⌥chiave come discusso in precedenza; Volevo mantenere la combinazione ctrl+ ←/ a →cui sono abituato su Linux.

Per risolvere questo problema, ho aggiunto quanto segue al mio ~/.profile:

bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Nota i primi due si applicano a bash nel Terminale ; le ultime due si applicano a bash in iTerm2 e connessioni SSH in entrata . Non chiedermi perché l'emulazione della tastiera è diversa;)

Per la cronaca, sono stato in grado di trovare quali fossero i codici chiave in realtà grazie a un suggerimento da questa risposta di StackOverflow : è possibile eseguire cat > /dev/nullper monitorare gli esatti codici chiave inviati durante una combinazione di tasti.

(Nota che per me quando corro cat > /dev/nulle premo ctrl+ ←produce ^[[1;5D. Il tuo codice chiave esatto può essere diverso , ma il primo ^[è rappresentato come \e, come mostrato nel mio codice di esempio.)

A proposito, se vuoi vedere tutte le combinazioni di tasti bash attive, esegui bind -p.


Mi piace usare xxdper esaminare l'input da tastiera. Puoi vedere il carattere visualizzato mentre lo digiti, quindi xxdemette il valore in esadecimale quando digiti return.
— Chris Page

Perfetto! Proprio quello che stavo cercando :) Non ho mai avuto la fortuna di configurare le impostazioni "App-specific" sopra, ma questo funziona e basta!
— bisko,

Assicurati che control + left / right non siano mappati su "cambia spazio" nei tuoi sysprefs> tastiera> scorciatoie> exposé. Non avevo altri spazi aperti, quindi sembrava che il mio input da tastiera non funzionasse.
— sudo,

6

A partire da Mac OS X Lion 10.7, Terminal esegue la mappatura da ⌥- ←/ →a esc+ B/ Fper impostazione predefinita, quindi ora è integrato per bash e altri programmi che utilizzano questi tasti di scelta rapida compatibili con emacs.


5

se sai come usare vi puoi anche attivare la modalità di modifica della linea vi usando set -o vinella tua .bash_profileo in qualsiasi momento dalla riga di comando. Quindi è possibile alternare tra il comando vi e le modalità di inserimento. Quindi potresti premere Esc, quindi usare i comandi vi per navigare sulla linea:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

Una volta raggiunta la posizione corretta, è possibile utilizzare gli altri comandi vi per accedere alle modalità di inserimento o aggiunta o rimuovere i caratteri uno a uno, ecc.


Non ho mai saputo che avresti potuto usare 0 per l'inizio della linea, ho sempre usato ^
— Jason Salaz il

1
@vxjasonxv: ya, ^ si sposta sul primo carattere non bianco, 0 si sposta sulla prima colonna (cosa che probabilmente hai già notato ma ho pensato che avrei buttato lì per gli altri: P)
— Robert S Ciaccio

1
OH WOW, ANCORA MEGLIO, non me ne ero ancora accorto! Oh amico, quella funzionalità (il primo spazio non bianco) di ^ mi ha sempre fatto incazzare. Grazie.
— Jason Salaz,

Certo, ESC ^è fantastico quando ne hai bisogno, è fastidioso solo quando volevi fare qualcos'altro del tutto :)
— ocodo

3

Apri terminale, vai a preferenze, tastiera. Nell'elenco troverai "cursore ctrl a destra" e "cursore ctrl a sinistra".
Cambia le azioni assegnate rispettivamente a "\ 033f" e "\ 033b" e potrai usare ctrl+ →e ctrl+ ←per spostarti, senza perdere il tasto alt.


2

Sembra che esc+ Be esc+ Fsiano mappati di default per andare all'inizio e alla fine delle parole. escTuttavia , per il mio sistema non è possibile tenere premuto ma è necessario ripremerlo per ogni parola.


1
Esc non è mai un modificatore, entra semplicemente in modalità "Escape" quando lo premi, lo consideri un modo modale di fare le cose, a differenza di shift / ctrl / meta ecc. (Comunque nello schema Readline delle cose.)
— ocodo

0

L'ultima versione del sistema operativo lo associa a Spaces. Anche se Spaces è disattivato, i tasti di scelta rapida possono comunque essere messi in corto circuito in questa posizione nascosta:

Tasti cursore Terminal.app: disabilita Preferenze di Sistema -> Collegamenti -> Controllo missione -> Sposta a sinistra di uno spazio

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.