Eu posso ver que Ctrl+ left/ rightpula para o início / fim da linha. Como mudar isso paraCmd + left/ right arrow?
Para obter Alt+ left/ right arrowfuncionando corretamente para o salto de palavras, siga este artigo .
Eu posso ver que Ctrl+ left/ rightpula para o início / fim da linha. Como mudar isso paraCmd + left/ right arrow?
Para obter Alt+ left/ right arrowfuncionando corretamente para o salto de palavras, siga este artigo .
Respostas:
Adicione no iTerm2 as seguintes teclas de atalho de perfil
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
Aqui está um visual para quem precisa
⌘← "SEND ESC SEQ" OH
para Início e ⌘→ "SEND ESC SEQ" OF
para Fim (são maiúsculas e minúsculas e não zeros). Isso simula realmente pressionando as teclas Home e End, e como tal vai funcionar no bash, vim, etc.
Para pular entre as palavras e o início / fim das linhas no iTerm2, escolha uma das duas soluções abaixo.
Se você não quiser usar a predefinição "Edição de texto natural" mencionada acima, poderá mapear as chaves necessárias manualmente:
[+]
íconeMover o cursor uma palavra para a esquerda
0x1b 0x62
Mover o cursor uma palavra para a direita
0x1b 0x66
Mover o cursor para o início da linha
0x01
Mover o cursor para o final da linha
0x05
Excluir palavra
0x1b 0x08
Excluir linha
0x15
Desfazer
0x1f
Não se esqueça de remover as ligações anteriores :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Seria bom saber caso as pessoas não quisessem remover isso.
Vejo que já existem muitas respostas boas, mas isso deve fornecer a funcionalidade OSX nativa mais próxima possível em mais do que apenas seu shell. Eu verifiquei que isso funciona nas sessões ZSH, Bash, node, python -i, iex e irb / pry (usando rb-readline gem para readline, mas deve funcionar para todos).
Abra as preferências do iTerm ⌘+ ,e navegue até a Profiles
guia (a Keys
guia pode ser usada, mas a adição de teclas ao seu perfil permite salvar o seu perfil e sincronizá-lo com vários computadores) e keys
subguia e digite o seguinte:
Exclua todos os caracteres à esquerda do cursor
⌘+ ←DeleteEnviar códigos hexadecimais:
0x15
Mais compatível, mas a funcionalidade às vezes é excluir a linha inteira, e não apenas os caracteres à esquerda do cursor. Eu pessoalmente uso isso e, em seguida, sobrescrito minha chave de ligação zsh para^U
excluir apenas as coisas à esquerda do cursor (veja abaixo).ou
0x18 0x7f
Menos compatível, não funciona no nó e não funciona no zsh por padrão; veja abaixo para corrigir o zsh (bash / irb / pry deve estar bom), executa a funcionalidade desejada quando funciona.
Exclua todos os caracteres à direita do cursor
⌘+ fn+ ←Deleteou ⌘+ Delete→Enviar códigos hexadecimais:
0x0b
Exclua uma palavra à esquerda do cursor
⌥+ ←DeleteEnviar códigos hexadecimais:
0x1b 0x08
Quebras no IEX do Elixir parecem funcionar bem em qualquer outro lugarou
0x17
Funciona em qualquer lugar, mas não para em quebras de palavras normais no IRB e, em vez disso, é excluído até que ele veja um espaço literal.
Excluir uma palavra à direita do cursor
⌥+ fn←Deleteou ⌥+ Delete→Enviar códigos hexadecimais:
0x1b 0x64
Mova o cursor para a frente da linha
⌘+ ←Enviar códigos hexadecimais:
0x01
Mover o cursor para o final da linha
⌘+ →Enviar códigos hexadecimais:
0x05
Mover o cursor uma palavra para a esquerda
⌥+ ←Enviar códigos hexadecimais:
0x1b 0x62
Mover o cursor uma palavra para a direita
⌥+ →Enviar códigos hexadecimais:
0x1b 0x66
Desfazer
⌘+ zEnviar códigos hexadecimais:
0x1f
Refazer normalmente não está vinculado no bash, zsh ou readline, para que possamos defini-lo como um código hexadecimal não utilizado, que podemos corrigir no zsh
⇧+ ⌘+ Zou ⌘+ yEnviar códigos hexadecimais:
0x18 0x1f
Agora, como consertar qualquer um que não funcione
Para zsh, você pode configurar a ligação para o ⌘+ ←Deletee ⇧+ ⌘+ Z/ ⌘+ ainda não funcional yexecutando:
# 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
Não consigo encontrar uma solução para adicionar refazer no bash ou no readline, por isso, se alguém souber uma solução para qualquer um deles, comente abaixo e tentarei adicioná-los.
Para quem procura a tabela de pesquisa sobre como converter seqüências de teclas em hexadecimal, acho esta tabela muito útil.
$
parte da frente echo
(basta removê-la?). Fora isso, é perfeito. Obrigado.
bindkey | grep "\^\[b"
e isso informará se outra coisa a substituirá depois de configurada. Só deve retornar #=> "^[b" backward-word
. Se ele estiver sendo substituído, você precisará descobrir onde está sendo substituído e removê-lo. Se isso não for possível, você pode executar echo 'bindkey "^[b" backward-word' >> ~/.zshrc
esta será adicionada à última linha do seu .zshrc
, em seguida, reiniciar iTerm e ele deve funcionar
keys
guia nas preferências do iTerm para ver se também está mapeando ⌥
+ ←
para alguma coisa. Se sim, remova-o. Você pode testar se b
está funcionando corretamente, pressionando rapidamente a tecla esc
liberação e, em seguida, pressionando b
. Isso deve pular uma palavra para a esquerda. Como alternativa, você pode mapear ⌥
+ ←
para hexadecimal 0x1b 0x42
ou 0x1b 0x5b 0x31 0x3b 0x35 0x44
. Eu verifiquei que ambos funcionam para mim. Eu realmente acho que você tem ⌥
+ ←
sendo substituído em iTerm porém, quer no seu profile
keys
guia ou keys
guia.
Siga o tutorial listado acima para configurar suas principais preferências no iterm2 .
No iTerm 3.0.12, você pode alternar para Natural Text Editing
predefinição:
iTerm → Preferências → Perfis → Teclas
Aviso Como é uma predefinição, ela pode substituir as teclas que você vinculou antes. Portanto, é melhor salvar suas associações de teclas atuais antes de aplicar uma predefinição.
Para uma referência rápida de quem deseja ir para o final da linha ou o início da linha no iTerm2, no link acima http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html observa que no iTerm2:
Usei a resposta do Travis e criei um perfil dinâmico que você pode importar com base em suas instruções.
GabLeRoux / iterm2-macos-dynamic-profile
As instruções estão no leia-me e é muito mais rápido importá-las do que adicioná-las todas manualmente. Fiz uma resposta conforme a solicitação de @ gooli, porque estava oculta em um comentário. Espero que gostem deste 🍻
Apenas para ajudar alguém que está tendo o mesmo problema, mas usando especificamente o shell Zsh com o iTerm 2. Acontece que o Zsh não lê /etc/inputrc
corretamente e, portanto, falha em entender as ligações de teclas que você configura através das preferências!
Para corrigir isso, você precisa adicionar algumas associações de teclas ao seu .zshrc
arquivo, como:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Observe as barras invertidas no exemplo acima antes do "e", o artigo vinculado não as mostra, portanto, adicione-as ao seu .zshrc
arquivo ao adicionar ligações.
As ligações antigas do emacs ainda podem funcionar no terminal iterm2 e os x:
Preferências -> Perfis -> Chaves (subguia nos perfis)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(semelhante no terminal os x)Isso deve permitir alt- fe alt- bmover palavras por palavras. (Ainda ctrl- ae ctrl- esempre funcionam como de costume)
Se definido como meta
essas ligações antigas, funcionará enquanto algumas ligações iterm2 não estiverem disponíveis.
Como explica aqui , você pode fazer isso com etapas simples:
Por padrão, os saltos de palavras (opção + → ou ←) e as exclusões de palavras (opção + backspace) não funcionam. Para habilitá-las, vá para "iTerm → Preferências → Perfis → Teclas → Carregar predefinição ... → Edição de texto natural → Boom! Head explode"
bind -p
mostrará uma lista de chaves com escape associadas no seu shell, que podem ajudar a fornecer mais idéias / termos de pesquisa.
bind -p
só funciona em shells Bourne (bash, sh) para zsh, csh tcsh, use bindkey
.
explicado em https://aaronaddleman.com/articles/hexcodes-and-iterm/
você pode usar xxd -psd
para obter o código hexadecimal da chave.
Para mim, a seguinte combinação funcionou:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |