Risposte:
Conveniente come sarebbe, Terminal non può facilmente fornire la funzionalità richiesta.
Il motivo è che i programmi eseguiti all'interno di Terminal hanno regole diverse per spostare il cursore all'inizio / alla fine della riga, ad esempio:
bash
(e altre shell) usano CtrlAeCtrlEvi
usi 0e $/Shift4Altri programmi possono usare altri tasti. Non esiste una combinazione di tasti universale per posizionare il cursore all'inizio / alla fine della linea.
Naturalmente, Terminal potrebbe mantenere un elenco di combinazioni di tasti per un numero di programmi comuni, controllare cosa è in esecuzione e inviare i tasti corretti per te, oppure potrebbe fornire una voce di menu come Sposta cursore all'inizio della riga all'interno della shell ⌘ ← e quindi invia CtrlAdietro le quinte. Ma immagino che gli ingegneri Apple abbiano pensato che se ti avventuri nel territorio della CLI ne conosci le idiosincrasie.
Come nota a margine, Terminal fornisce Option←e Option→che si comporta bash
come ci si aspetterebbe e sposta il cursore all'inizio della parola precedente / successiva. Questo perché queste combinazioni di tasti sono mappate Escbe Escb( man bash
per ulteriori informazioni, consultare la sezione "Comandi per lo spostamento"). Ad vi
esempio, solo quest'ultimo (tipo di) funziona (alla fine di questa risposta mostrerò come configurare vi
per lavorare con Option←e Option→).
Ma grazie ad Automator, AppleScript e alias bash puoi ottenere ⌘←e ⌘→lavorare con bash
(e possibilmente altre shell) e vi
.
Il primo passo è mappare ⌘←e ⌘→su CtrlAe CtrlE. In un secondo passo, ti mostrerò come configurare vi
onorare CtrlAe CtrlE(che, di conseguenza, renderà vi
compatibile con ⌘←e ⌘→).
Mappa ⌘←e ⌘→a CtrlAeCtrlE
In Terminale, vai su Preferenze ...> Impostazioni> [il tuo profilo attivo]> Tastiera:
Premere +, selezionare "Cursore a sinistra", "Control-Shift" come modificatore e azione "Invia testo:". Quindi premere CtrlA( \001
verrà visualizzato nel campo di testo) e confermare con OK:
(In una versione precedente di questa risposta ho usato "Shift" come modificatore. Ho notato che questa impostazione è in conflitto con ⌘shift←, che mostra la scheda Terminale precedente, se non ti lasci andare ⌘immediatamente. Usando "Control-Shift" risolve quello.)
Ora aggiungi una combinazione di tasti per "Cursore a destra", ma premi CtrlE( \005
apparirà nel campo di testo). Confermare con OK.
Apri Automator (ad esempio, premi ⌘spaceper aprire Spotlight e digita Automator ), seleziona File> Nuovo e scegli Service
:
Trascina Run AppleScript
nel riquadro destro:
Digita il seguente script:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 123 using {shift down, control down}
end tell
end tell
end run
e salva come Move Cursor to Beginning of Line
:
Ripeti i passaggi da 4. a 6. con questo script:
on run {input, parameters}
tell application "System Events"
tell application process "Terminal"
key code 124 using {shift down, control down}
end tell
end tell
end run
e salva come Move Cursor to End of Line
:
Ecco come appare Terminale> Servizi:
Configura vi
per onorare CtrlAeCtrlE
Apri .bashrc
con il tuo editor preferito e aggiungi questa riga:
alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'
I primi due map
comandi indicano vim
di interpretare ControlEe ControlAcome $e 0, che spostano il cursore all'inizio o alla fine della riga, rispettivamente.
Gli ultimi due map
comandi indicano vim
di spostare il cursore di una parola alla volta come ci si aspetterebbe premendo option←e Option→.
Avvertenze
Noterai che c'è un breve ritardo tra il momento in cui premi ⌘←o ⌘→e il momento in cui il cursore si sposta effettivamente.
Tieni presente che funzionerà solo per i programmi che onorano CtrlA/ CtrlE, quindi potresti comunque voler imparare le combinazioni di tasti specifici di ciascun programma che usi in Terminal.
(Testato su macOS Sierra 10.12.4)
⌘
scorciatoia da
vi
quale sia un'applicazione completamente diversa dal terminale.
Certo che è possibile.
Prima di tutto, puoi usare lo strumento gratuito "DoubleCommand" se hai una tastiera Windows con i tasti HOME / END per farli comportare come dovrebbero (inizio / fine della riga).
In secondo luogo, per il terminale in particolare, vai alle preferenze, Tastiera, modifica l'icona / tasto che assomiglia a una freccia che punta in alto a sinistra, seleziona "invia testo" e digita ctrl + a. Fatto!
Lo stesso vale per il pulsante fine.
Se non si dispone di una tastiera per PC, è possibile fare lo stesso con altre combinazioni di tasti.