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.