Vedo che Ctrl+ left/ rightsalta all'inizio / alla fine della riga. Come cambiarlo in Cmd+ left/ right arrow?
Per far funzionare correttamente il Alt+ left/ right arrowper il salto delle parole segui questo articolo .
Vedo che Ctrl+ left/ rightsalta all'inizio / alla fine della riga. Come cambiarlo in Cmd+ left/ right arrow?
Per far funzionare correttamente il Alt+ left/ right arrowper il salto delle parole segui questo articolo .
Risposte:
Aggiungi in iTerm2 i seguenti tasti di scelta rapida del profilo
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
Ecco una visuale per chi ne ha bisogno
⌘← "SEND ESC SEQ" OH
per Home e ⌘→ "SEND ESC SEQ" OF
per End (quelli sono maiuscoli o zeri). Questo simula effettivamente premendo i tasti Home ed End, e come tale funzionerà in bash, vim, ecc.
Per saltare tra le parole e l'inizio / fine delle linee in iTerm2, scegli una delle due soluzioni seguenti.
Se non si desidera utilizzare la preimpostazione "Modifica del testo naturale" di cui sopra, è possibile mappare manualmente i tasti necessari:
[+]
sull'iconaSposta il cursore di una parola a sinistra
0x1b 0x62
Sposta il cursore di una parola a destra
0x1b 0x66
Sposta il cursore all'inizio della riga
0x01
Sposta il cursore alla fine della riga
0x05
Elimina parola
0x1b 0x08
Elimina riga
0x15
Disfare
0x1f
Non dimenticare di rimuovere i collegamenti precedenti :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Sarebbe bello sapere nel caso in cui le persone non volessero rimuovere questo.
Vedo che ci sono già molte buone risposte, ma questo dovrebbe fornire la funzionalità OSX nativa più vicina possibile in più della semplice shell. Ho verificato che questo funziona in sessioni ZSH, Bash, node, python -i, iex e irb / pry (usando gemma rb-readline per readline, ma dovrebbe funzionare per tutti).
Apri le preferenze iTerm ⌘+ ,e vai alla Profiles
scheda (la Keys
scheda può essere utilizzata, ma l'aggiunta di una combinazione di tasti al tuo profilo ti consente di salvare il tuo profilo e sincronizzarlo su più computer) e la keys
sottoscheda e inserisci quanto segue:
Elimina tutti i caratteri a sinistra del cursore
⌘+ ←DeleteInvia codici esadecimali:
0x15
Più compatibile, ma a volte la funzionalità consiste nell'eliminare l'intera riga anziché solo i caratteri a sinistra del cursore. Personalmente lo uso e quindi sovrascrivo il mio bindkey zsh per^U
eliminare solo le cose a sinistra del cursore (vedi sotto).o
0x18 0x7f
Meno compatibile, non funziona nel nodo e non funzionerà in zsh per impostazione predefinita, vedi sotto per correggere zsh (bash / irb / pry dovrebbe andare bene), esegue la funzionalità desiderata quando funziona.
Elimina tutti i caratteri a destra del cursore
⌘+ fn+ ←Deleteo ⌘+ Delete→Invia codici esadecimali:
0x0b
Elimina una parola a sinistra del cursore
⌥+ ←DeleteInvia codici esadecimali:
0x1b 0x08
Le interruzioni di IEX di Elixir sembrano funzionare bene ovunqueo
0x17
Funziona ovunque, ma non si ferma alle normali interruzioni di parole in IRB e verrà invece eliminato fino a quando non vede uno spazio letterale.
Elimina una parola a destra del cursore
⌥+ fn←Deleteo ⌥+ Delete→Invia codici esadecimali:
0x1b 0x64
Sposta il cursore all'inizio della riga
⌘+ ←Invia codici esadecimali:
0x01
Sposta il cursore alla fine della riga
⌘+ →Invia codici esadecimali:
0x05
Sposta il cursore di una parola a sinistra
⌥+ ←Invia codici esadecimali:
0x1b 0x62
Sposta il cursore di una parola a destra
⌥+ →Invia codici esadecimali:
0x1b 0x66
Disfare
⌘+ zInvia codici esadecimali:
0x1f
Ripeti in genere non associato in bash, zsh o readline, quindi possiamo impostarlo su un codice esadecimale inutilizzato che possiamo quindi correggere in zsh
⇧+ ⌘+ Zo ⌘+ yInvia codici esadecimali:
0x18 0x1f
Ora come risolvere quelli che non funzionano
Per zsh, puoi impostare l'associazione per i ⌘+ ←Deletee ⇧+ ⌘+ Z/ ⌘+ non ancora funzionanti yeseguendo:
# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc
# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc
# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc
# reload your .zshrc for changes to take effect
$ source ~/.zshrc
Non riesco a trovare una soluzione per aggiungere redo in bash o readline, quindi se qualcuno conosce una soluzione per uno di questi, commenta di seguito e proverò ad aggiungerli.
Per chiunque cerchi la tabella di ricerca su come convertire le sequenze di tasti in esadecimale, trovo questa tabella molto utile.
$
davanti echo
(basta rimuoverlo?). A parte questo, è perfetto. Grazie.
bindkey | grep "\^\[b"
e ti dirà se qualcos'altro lo sta sovrascrivendo dopo che è stato impostato. Si deve restituire solo #=> "^[b" backward-word
. Se viene sovrascritto, dovrai scoprire dove viene sovrascritto e rimuoverlo. Se ciò non è possibile, puoi eseguirlo echo 'bindkey "^[b" backward-word' >> ~/.zshrc
e aggiungerlo all'ultima riga del tuo .zshrc
, quindi riavviare iTerm e dovrebbe funzionare
keys
scheda nelle preferenze iTerm per vedere se sta anche mappando ⌥
+ ←
su qualcosa. In tal caso rimuoverlo. Puoi verificare se stai b
funzionando correttamente premendo rapidamente esc
rilasciando, quindi premendo b
. Questo dovrebbe saltare una parola a sinistra. In alternativa, puoi mappare ⌥
+ ←
su hex 0x1b 0x42
o 0x1b 0x5b 0x31 0x3b 0x35 0x44
. Ho verificato che entrambi funzionano per me. Penso davvero che tu abbia ⌥
+ ←
sovrascritto in iTerm, sia nella tua profile
keys
scheda che nella tua keys
scheda.
Segui il tutorial che hai elencato sopra per impostare le tue preferenze chiave in iterm2 .
In iTerm 3.0.12 è possibile passare alla Natural Text Editing
preimpostazione:
iTerm → Preferenze → Profili → Chiavi
Avviso Poiché è un preset, può ignorare i tasti associati in precedenza. Quindi è meglio salvare le associazioni dei tasti correnti prima di applicare un predefinito.
Per un rapido riferimento a chiunque voglia andare alla fine della riga o all'inizio della riga in iTerm2, il link sopra http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html osserva che in iTerm2:
Ho usato la risposta di Travis e ho creato un profilo dinamico che puoi importare in base alle sue istruzioni.
GabLeRoux / iterm2-MacOS-dynamic-profilo
Le istruzioni sono nel file Leggimi ed è molto più veloce importarlo che aggiungerle tutte manualmente. Ho reso questa una risposta secondo la richiesta di @ gooli perché era nascosta in un commento. Spero ti piaccia questo 🍻
Solo per aiutare chiunque abbia lo stesso problema, ma in particolare utilizzando la shell Zsh con iTerm 2. Si scopre che Zsh non legge /etc/inputrc
correttamente , quindi non riesce a comprendere i collegamenti chiave impostati attraverso le preferenze!
Per risolvere questo problema, devi aggiungere alcune associazioni di tasti al tuo .zshrc
file, come:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Nota le barre rovesciate nell'esempio sopra prima della "e", l'articolo collegato non le mostra, quindi aggiungile al tuo .zshrc
file quando aggiungi le associazioni.
I vecchi attacchi emacs di moda possono ancora funzionare nei terminali iterm2 e os x:
Preferenze -> Profili -> Chiavi (sottoscheda nei profili)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(simile nel terminale os x)Ciò dovrebbe consentire alt- fe alt- bper spostare parole per parole. (Ancora ctrl- ae ctrl- efunzionano sempre come al solito)
Se impostato come meta
quei vecchi binding funzionerà mentre alcuni binding iterm2 non sono disponibili.
Come spiega qui , puoi farlo con una semplice procedura:
Per impostazione predefinita, i salti di parole (opzione + → o ←) e le eliminazioni di parole (opzione + backspace) non funzionano. Per abilitarli, vai su "iTerm → Preferenze → Profili → Tasti → Carica preimpostazione ... → Modifica testo naturale → Boom! Head esplode"
bind -p
mostrerà un elenco di chiavi con escape associate nella shell, che potrebbero aiutarti a fornire più idee / termini di ricerca.
bind -p
funziona solo nelle shell Bourne (bash, sh) per zsh, csh tcsh, use bindkey
.
spiegato in https://aaronaddleman.com/articles/hexcodes-and-iterm/
puoi usare xxd -psd
per ottenere il codice esadecimale chiave.
Per me, la seguente combinazione ha funzionato:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |