Le chiavi home e end possono essere mappate quando si utilizza Terminal?

67

I tasti home e end su un MacBook Pro possono essere emulati con fn + freccia sinistra o fn + freccia destra. O quando alcune impostazioni sono cambiate, con il tasto Comando (Apple) invece di fn.

Nessuno di questi lavori nel terminale.

Come spesso ho bisogno di andare all'inizio o alla fine della riga e vorrei anche saltare avanti o indietro di parola.

Come posso saltare su una linea nel Terminale?

    
posta at01 27.04.2011 - 23:30
fonte

11 risposte

61

Usa controllo + a per HOME e controllo + e per END in Terminale.

Usa anche esc + f per spostarti all'inizio della parola successiva e esc + b per spostarsi all'inizio della parola corrente . (Devi stare attento all'attuale e al prossimo)

    
risposta data 27.04.2011 - 23:33
fonte
58

Per rispondere a quello su come ottenere l'inizio o la fine della linea, sembra che per impostazione predefinita Terminal esegua il mapping di questi tasti:

  • shift + home → inizio della riga, equivalente al tasto "home" nei normali terminali
  • shift + end → fine della riga, equivalente al tasto "end" nei terminali normali

Se vuoi tornare a casa e terminare il lavoro in modo "normale" (senza richiedere il passaggio), vai a [Menu Terminale] → Preferenze → scheda Profili (o impostazioni su alcune versioni di OS X) → Sottoscheda tastiera.

Quindi modifica / aggiungi queste chiavi per essere il seguente "send string to shell"

  • home: 3[H
  • fine: 3[F

È possibile ottenere la parte 3 premendo la chiave di escape all'interno dell'input della finestra di dialogo di modifica, se è necessario aggiungerla.

Quindi casa e fine funzioneranno come di nuovo normali (phew).

Nota anche che "alt + ←" e "alt + →" di default nella mappa terminale a sinistra e parola a destra, un'altra comoda combo da ricordare.

Nelle versioni successive di Mac OS X, se lo schermo del terminale si sposta su o giù quando premi il tasto home / end, potrebbe essere necessario impostare la chiave home su 3[1~ e il tasto finale su 3[4~ per ottenere i risultati che desideri (non è necessario lo spostamento).

Sentiti libero di modificare questa risposta per aggiungere ulteriori associazioni di tasti utili, in quanto è un wiki della comunità.

    
risposta data 02.08.2017 - 18:33
fonte
39

Sembra che tu stia cercando aiuto usando readline e bash, ecco una lista pazzesca di roba per tastiera modificata da: link

Ctrl a Spostati all'inizio della riga.
Ctrl e Vai alla fine della riga.
Esc f Spostare avanti una parola.
Esc b Spostare indietro a parola.
Ctrl l Cancella lo schermo, ristampando la riga corrente in alto.

Ctrl k Elimina il testo dalla posizione corrente del cursore alla fine della riga.
Esc d Uccidi dal cursore alla fine della parola corrente , o se tra parole, alla fine della parola successiva.
Esc Del Elimina dal cursore l'inizio della parola precedente, o se tra le parole, all'inizio della parola precedente.
Ctrl w Uccidi dal cursore allo spazio vuoto precedente. È diverso da Esc Del Ctrl a perché i confini delle parole differiscono.

Ctrl d Elimina il carattere sotto il cursore.
Ctrl _ Annulla l'ultima cosa che hai fatto. È possibile annullare fino a una riga vuota.

Ed ecco come riportare il testo nella riga. Yanking significa copiare il testo ucciso più di recente dal kill buffer.

Ctrl y Annulla il testo ucciso più recentemente nel buffer del cursore.
Esc y Ruota il kill-ring e fai scorrere il nuovo top. Puoi farlo solo se il comando precedente è Ctrl y o Esc y .

    
risposta data 27.04.2011 - 23:48
fonte
6

Per coloro che preferiscono usare i tasti freccia, premendo fn Maiusc + Freccia sinistra ti porterai a casa sulla riga di comando. Allo stesso modo, fn Shift + Freccia destra ti porterà alla fine.

    
risposta data 11.01.2013 - 17:17
fonte
5

Puoi spostare una parola alla volta con l'opzione + sinistra e + destra .

Riguardo all'utilizzo di home e end , i collegamenti predefiniti del terminale sono i seguenti:

  • shift + home → salta all'inizio della riga
  • shift + end → salta alla fine della riga
  • home → scorri all'inizio del buffer scroll-back
  • fine → scorri fino in fondo al buffer di scorrimento indietro

In molte altre applicazioni terminali (su piattaforme multiple), quelle coppie modificate e non modificate sono invertite (cioè nudi home e fine sono usati per saltare intorno alla linea corrente e le versioni modificate (tramite shift o qualcos'altro) vengono utilizzate per navigare nel buffer di scorrimento indietro). Puoi invertire i binding di Terminal in modo che funzionino in questo modo, se lo desideri effettuando le seguenti operazioni:

Vai al menu Terminale → Preferenze → Impostazioni / scheda Profilo → Sottoscheda tastiera.

Quindi modifica le coppie di azioni-chiave come segue:

  • ↖︎: Invia testo: \ 033 [H
  • ⇧↖︎: scorri in alto
  • ↘︎: Invia testo: \ 033 [F
  • ⇧↘︎: scorri fino in fondo

Nota: \ 033 viene inserito nella casella di testo da inviare nella finestra di dialogo Modifica premendo il tasto Esc.

Mentre ci sei, potresti voler scambiare in modo analogo i collegamenti della pagina modificata e non modificata e in basso , per mantenere le cose coerenti: premendo un tasto di navigazione con shift rappresenta un comando al Terminale stesso (per navigare il buffer scroll-back come un documento), mentre si preme uno senza inviare il tasto premuto a qualsiasi cosa stia eseguendo all'interno di (ad esempio bash , less , nano , screen , ecc.). Le coppie chiave-azione per questo sono:

  • ⇞: Invia testo: \ 033 [5 ~
  • ⇧⇞: scorri la pagina in alto
  • ⇟: Invia testo: \ 033 [6 ~
  • ⇧⇟: scorri la pagina in basso
risposta data 19.03.2014 - 02:20
fonte
4

Le altre risposte sono fantastiche e più portabili, ma qui c'è "il modo OS X" per una tastiera normale (che è l'opposto di molti altri terminali). Prova quanto segue:

Maiusc Home - Inizio della linea
Maiusc Fine - Fine della pagina

Da link

    
risposta data 13.06.2013 - 00:24
fonte
2

Mappare i tasti home e end con la funzionalità desiderata risolverà facilmente il problema.

Sono state pubblicate molte risposte, ma nel caso in cui si utilizzi zsh , è possibile impostare home in:

%pre%5
1
5
1

e imposta fine a:

%pre%

facendo clic su preferenza - profilo - tastiera.

    
risposta data 04.02.2017 - 11:10
fonte
1

Questo è il modo più efficace per farlo funzionare anche con Vim. Vai a Terminale - > Preferenze - > Profili - > Tastiera e aggiungi:

Tasto: ↖ Azione: \ 033OH

Tasto: ↗ Azione: \ 033OF

    
risposta data 28.12.2016 - 12:40
fonte
1

Vorrei fornire una soluzione alternativa a questo problema. Funziona benissimo se sei un utente vi. Vim Key Bindings nel Terminal fornisce un modo di usare il tuo terminale in stile vim. Puoi farlo digitando set -o vi nel terminale e sentiti libero di inserirlo in .bash_profile se lo desideri. Dopo questo, il tuo terminale è effettivamente un editor di Vim. Puoi usare esc key per andare in modalità comando e andare in giro in modo vim. Ad esempio, 0 ti riporta all'inizio e $ ti porta alla fine. Puoi anche usare I e A per andare all'inizio e alla fine e andare subito in modalità di modifica. w e b ti permettono di andare avanti e indietro di una parola. E se cerchi di entrare in modalità visuale premendo v , ti verrà dato un editor di vim e il testo che avrai quando lascerai questo editor verrà eseguito nel terminale.

Tieni presente che questa associazione di chiavi vim annulla tutti i tasti di scelta rapida che hai appreso da altre risposte.

    
risposta data 06.01.2017 - 16:55
fonte
0

ecco l'elenco in formato stampabile, come desiderato:)

link

Ho anche corretto un "bug" nella descrizione. Questo è ciò che potresti leggere originariamente nelle istruzioni:

ESC-d Elimina dal cursore l'inizio della parola precedente, o se tra le parole, all'inizio della parola precedente.

Questo ha un cattivo odore come un errore di copia e incolla, poiché entrambe le frasi parziali dicono la stessa cosa. A partire dalla semplice logica, la prima metà deve effettivamente leggere "dal cursore all'inizio della parola corrente".

    
risposta data 03.07.2014 - 15:29
fonte
0

... what about jumping around by word? (ctrl-left and ctrl-right in windows)

# in ~/.inputrc
"3[5C": forward-word
"3[5D": backward-word
    
risposta data 07.11.2014 - 17:11
fonte

Leggi altre domande sui tag