Você sabe qual é o código / sequência do Command + Delete? (limpar o prompt)
Steven Lu
10
Eu respondi meu primeiro comentário em outro lugar, basicamente o código hexadecimal 0x15 fornece Ctrl + U, o que limpa a linha. No entanto, estou encontrando 0x01 Ctrl + A para interferir no uso do Tmux. Portanto, pretendo mapeá-lo para a tecla Home (mesma funcionalidade que Fn + Esquerda em um teclado Mac).
Steven Lu
7
A sequência de escape para Início é [1 ~ e a sequência de escape para Fim é [4 ~
Steven Lu
3
Funciona como um encanto, incrível!
Juto 3/09/2013
25
A ligação correta é ⌘← "SEND ESC SEQ" OHpara Início e ⌘→ "SEND ESC SEQ" OFpara 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.
Timothy Zorn
433
Para pular entre as palavras e o início / fim das linhas no iTerm2, escolha uma das duas soluções abaixo.
1. Solução simples (recomendada)
Abrir Preferências
Clique na guia "Perfil"
Selecione um perfil na lista à esquerda (por exemplo, "Padrão") e clique na guia "Chaves"
Clique na janela suspensa "Predefinições" e selecione "Edição de texto natural"
2. Mapear teclas manualmente (Avançado)
Se você não quiser usar a predefinição "Edição de texto natural" mencionada acima, poderá mapear as chaves necessárias manualmente:
Abrir Preferências
Clique na guia "Chaves"
Clique no [+]ícone
Agora você pode adicionar os seguintes atalhos de teclado:
Mover o cursor uma palavra para a esquerda
Tecla de atalho: ⌥+←
Ação: Enviar código hexadecimal
Código: 0x1b 0x62
Mover o cursor uma palavra para a direita
Combinação de teclado: ⌥+→
Ação: Enviar código hexadecimal
Código: 0x1b 0x66
Mover o cursor para o início da linha
Combinação de teclado: ⌘+←
Ação: Enviar código hexadecimal
Código: 0x01
Mover o cursor para o final da linha
Combinação de teclado: ⌘+→
Ação: Enviar código hexadecimal
Código: 0x05
Excluir palavra
Combinação de teclado: ⌥+←Delete
Ação: Enviar código hexadecimal
Código: 0x1b 0x08
Excluir linha
Combinação de teclado: ⌘+←Delete
Ação: Enviar código hexadecimal
Código: 0x15
Desfazer
Combinação de teclado: ⌘+z
Ação: Enviar código hexadecimal
Código: 0x1f
Não se esqueça de remover as ligações anteriores :
Abra a guia "Perfis"
Clique na subguia "Chaves"
Remova os mapeamentos para combinações de teclas ⌥+ ←e ⌥+→
Isso funcionou bem para mim no iTerm2 e foi muito fácil de seguir, obrigado!
Natetronn 9/04
3
Apenas esclarecendo o que as ligações originais para ⌥ ← fazem? Eu vejo isso Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. Seria bom saber caso as pessoas não quisessem remover isso.
Aug
5
Ir para o início e o fim da linha não funcionou para mim usando o zsh. Usando "Código Hex" "0x01" / "0x05", conforme sugerido pela resposta principal, funcionou para mim.
Virar
2
Ir para o início e o fim da linha também não funcionou para mim. A melhor resposta funcionou.
hisabimbola
3
O iTerm tem uma maneira de agrupá-los em uma predefinição que podemos carregar? Parece chato digitar manualmente, mas isso funcionou para mim e foi incrível. Graças a lto!
agosto
259
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 Profilesguia (a Keysguia 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 keyssubguia e digite o seguinte:
Exclua todos os caracteres à esquerda do cursor
⌘+ ←DeleteEnviar códigos hexadecimais:
0x15Mais 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 ^Uexcluir apenas as coisas à esquerda do cursor (veja abaixo).
ou
0x18 0x7fMenos 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.
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.
Isso é realmente útil, faz muita diferença! Gostaria de ressaltar que algumas pessoas podem se confundir com a $parte da frente echo(basta removê-la?). Fora isso, é perfeito. Obrigado.
Edmundo 15/12
11
@Christophe Parece que a ligação de chave está como deveria estar. Você cometeu um erro ao adicionar os valores hexadecimais ou pressionar a tecla para que a palavra inversa esteja sendo substituída. Execute 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' >> ~/.zshrcesta será adicionada à última linha do seu .zshrc, em seguida, reiniciar iTerm e ele deve funcionar
Travis
2
@Christophe, verifique a keysguia nas preferências do iTerm para ver se também está mapeando ⌥+ ←para alguma coisa. Se sim, remova-o. Você pode testar se bestá funcionando corretamente, pressionando rapidamente a tecla escliberação e, em seguida, pressionando b. Isso deve pular uma palavra para a esquerda. Como alternativa, você pode mapear ⌥+ ←para hexadecimal 0x1b 0x42ou0x1b 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 profilekeysguia ou keysguia.
Travis
3
Surpreendente! Acabei de aprender sobre as ligações Desfazer e Refazer aqui.
ecbrodie
3
Fiz isso manualmente e pensei por que não consigo importar um perfil para fazer isso? Então eu criei o GabLeRoux / iterm2-macos-dynamic-profile com base nessas instruções. Ele funciona perfeitamente, graças 🍻
GabLeRoux
48
Siga o tutorial listado acima para configurar suas principais preferências no iterm2 .
Crie uma nova tecla de atalho
Escolha "Enviar sequência de escape" como a ação
Em seguida, para definir cmd-left , no texto abaixo:
Amo isso! as outras soluções não funcionaram para mim. Passei horas frustradas por não poder usar ctrl + ae ctrl + e no iterm2. Mas eu não queria desistir de peixe por isso. Isso funciona totalmente obrigado!
FLY
Outras soluções também não funcionaram para mim, mas esta funcionou.
Braham Snyder
42
No iTerm 3.0.12, você pode alternar para Natural Text Editingpredefiniçã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.
Você poderia elaborar mais sua resposta? Como, o que essa predefinição inclui e pode substituir?
Carles Alcolea
Obrigado pela resposta. Além disso, provavelmente é uma boa prática aplicar isso ao seu próprio perfil personalizado, para que você não esteja mexendo com os padrões e possa alternar o perfil como um "modo" de edição de texto natural
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 🍻
Voltei aqui um ano depois e muito feliz em encontrar isso!
Elifiner 17/03/19
9
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/inputrccorretamente 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 .zshrcarquivo, como:
Observe as barras invertidas no exemplo acima antes do "e", o artigo vinculado não as mostra, portanto, adicione-as ao seu .zshrcarquivo ao adicionar ligações.
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"
Para mim, a seguinte combinação funcionou:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |
Respostas:
Adicione no iTerm2 as seguintes teclas de atalho de perfil
Aqui está um visual para quem precisa
fonte
⌘← "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.
1. Solução simples (recomendada)
2. Mapear teclas manualmente (Avançado)
Se você não quiser usar a predefinição "Edição de texto natural" mencionada acima, poderá mapear as chaves necessárias manualmente:
[+]
íconeAgora você pode adicionar os seguintes atalhos de teclado:
Mover 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 :
fonte
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 (aKeys
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) ekeys
subguia e digite o seguinte:Exclua todos os caracteres à esquerda do cursor
Exclua todos os caracteres à direita do cursor
Exclua uma palavra à esquerda do cursor
Excluir uma palavra à direita do cursor
Mova o cursor para a frente da linha
Mover o cursor para o final da linha
Mover o cursor uma palavra para a esquerda
Mover o cursor uma palavra para a direita
Desfazer
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
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:
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.
fonte
$
parte da frenteecho
(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 executarecho 'bindkey "^[b" backward-word' >> ~/.zshrc
esta será adicionada à última linha do seu.zshrc
, em seguida, reiniciar iTerm e ele deve funcionarkeys
guia nas preferências do iTerm para ver se também está mapeando⌥
+←
para alguma coisa. Se sim, remova-o. Você pode testar seb
está funcionando corretamente, pressionando rapidamente a teclaesc
liberação e, em seguida, pressionandob
. Isso deve pular uma palavra para a esquerda. Como alternativa, você pode mapear⌥
+←
para hexadecimal0x1b 0x42
ou0x1b 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 seuprofile
keys
guia oukeys
guia.Siga o tutorial listado acima para configurar suas principais preferências no iterm2 .
OU
fonte
No iTerm 3.0.12, você pode alternar para
Natural Text Editing
predefinição: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.
fonte
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:
fonte
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 🍻
fonte
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: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.fonte
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.fonte
Como explica aqui , você pode fazer isso com etapas simples:
fonte
As únicas coisas que funcionam para passar para o início e o fim da linha são
⌘← "SEND ESC SEQ" OH
- para mover para o início da linha⌘→ "SEND ESC SEQ" OF
- para mover para o fim da linhafonte
bind -p
mostrará uma lista de chaves com escape associadas no seu shell, que podem ajudar a fornecer mais idéias / termos de pesquisa.fonte
bind -p
só funciona em shells Bourne (bash, sh) para zsh, csh tcsh, usebindkey
.explicado em https://aaronaddleman.com/articles/hexcodes-and-iterm/
você pode usar
xxd -psd
para obter o código hexadecimal da chave.fonte
Para mim, a seguinte combinação funcionou:
| Key Action Esc+ End result | |-----------------------------------------------------| | ⌘← Send Escape Sequence a Send ^[ a | | ⌘→ Send Escape Sequence e Send ^[ e |
fonte