Mac OS X Terminal: opção Map + delete para "backward delete word"
Tentei mapeá-lo em Preferências -> Configurações -> Teclado, mas a caixa de combinação "tecla" possui apenas "exclusão direta", mas nenhuma "exclusão". Meu teclado, por outro lado, possui apenas "exclusão" e nenhuma "exclusão direta"!
Existe alguma outra maneira de fazer isso, exceto pelas preferências?
Por "palavra de exclusão para trás", você quer dizer a chave de retrocesso? Não conheço nenhum teclado Apple recente que tenha uma tecla de exclusão.
— Sören Kuklau 29/11/08
Por "palavra de exclusão para trás", quero dizer exatamente isso - para excluir a palavra inteira começando do cursor para trás. :) O último Macbook possui uma tecla chamada "delete", mas atua como backspace.
— ibz 01/12/08
Estou enfrentando o mesmo problema. O teclado possui exclusão reversa, mas não pode ser usado como ligação no Terminal.app.
Para mim, sua pergunta merece milhões de votos. Isto me ajudou bastante. Antes, eu era o Ubuntu. Agora, isso também facilitou minha vida no Mac OS. Obrigado.
— Doptimusprime
Ativar chave de opção como meta-chave
Ir para Terminal> Preferences> Profiles>Keyboard
Verifique Use option key as meta key.
No macOS High Sierra 10.13.6, capturado em 23 de outubro de 2018.
Muitos aplicativos (incluindo bash e tcsh) tratam o Meta-Delete como "palavra de exclusão reversa".
Está em Preferências do terminal> configurações> teclado, na parte inferior.
— 18713 Jon
Por que isso não é o padrão ?!
No Yosemite, essa configuração está agora em Preferências -> Perfis -> Teclado. Parece que você precisa alterar / configurá-lo para cada perfil.
— palimpsestor
Em teclados fora dos EUA, a tecla de opção é frequentemente necessária para obter certos caracteres (por exemplo, o pipe '|' é muito importante no shell). Nesse caso, <Esc> be <Esc> f mencionados em outras respostas provavelmente são a melhor solução?
Infelizmente, isso é contraproducente para programadores com teclados estrangeiros que precisam usar a tecla de opção para obter símbolos especiais como {, porque isso não funcionará quando a tecla de opção for usada como meta-chave.
O terminal do OS X executa o bash, que inclui suporte à linha de leitura. Siga o conselho da Glomek e diga ao terminal para usar a opção como meta-chave (ou então use Esc) e então você terá várias opções úteis: Ctrl+ wexclui a palavra anterior (como o Meta + exclui conforme mencionado), mas você também pode usar o Meta + f e Meta + b para avançar e retroceder através das palavras, Ctrl+ ae Ctrl+ epara o início e o fim da linha, Ctrl+ kexcluir (matar) do cursor até o final da linha e muito mais.
Consulte http://www.bigsmoke.us/readline/shortcuts para obter uma pequena e agradável tabela de referência.
— nadafigment
Como isso é "útil"? O restante do sistema usa deletecom qualificadores para excluir palavras.
É possível ter "excluir linha" também?
— Wenbert #
O Readline é ótimo, mas isso não ajuda no OP. Ctrl + w exclui uma PALAVRA (separada por espaços em branco), não uma palavra (separada por pontuação + espaços em branco). Com o cursor no final de cat .git/refs/heads, Ctrl-w resulta em cat. Meta + excluir resultados emcat .git/refs/
— idbrii 27/02/19
@nadafigment, 'a' e 'e' representam?
Exclua uma palavra retornando:
bem depois de ler isso, descobri que "excluir a palavra encaminhada" é ctrl + k (por tentativa e erro). Agora eu me pergunto por que há tão pouca documentação sobre tudo isso.
Ctr-k apaga tudo na frente, não apenas uma palavra, não?
isso funciona no meu mac. também funciona no ubuntu linux?
Ctrl + w exclui uma PALAVRA (separada por espaços em branco), não uma palavra (separada por pontuação + espaços em branco). Com o cursor no final de cat .git/refs/heads, Ctrl-w resulta em cat. Meta + excluir resultados emcat .git/refs/
Por padrão, o meta backspace faz uma palavra inversa puxar na maioria dos shells. Se você pressionar escape e depois pressionar backspace, isso funcionará praticamente em todos os lugares.
Fantástico, isso não requer configuração extra. Percebo <Esc> be <Esc> ftambém trabalho para voltar ou avançar uma palavra.
Gosto de <ALT> + SETA mais. O ESC não permite cliques contínuos em b ou f.
— Vitali Pom
Estou usando <ALT> + SETA para mover, mas acho que não há como excluir de maneira semelhante. A abordagem CTRL + W mencionada acima não para em caracteres que não sejam palavras, da mesma forma que <ALT> + ARROW, e exclui tudo até o espaço em branco. Qualquer maneira de apagar usando uma detecção de contorno semelhante ao <ALT> + SETA seria apreciada
⌃W(controle + W) não é a mesma coisa que meta + delete (ESC + delete se você não tiver marcado a opção de uso como tecla-meta) meta + delete tratará / _como delimitador de palavras, onde ^Wconsiderará o espaço como delimitador.
por exemplo, usando ESC + Bakcspace (cursor no final)
enquanto ^ W no mesmo dará
Portanto, é melhor usar \ 033 \ 177 em vez de ^ W ao definir a modificação do perfil do terminal. Dessa forma, você está realmente mapeando ⌥⌫ para o que esc⌫ está fazendo e continua tendo ^ W para apagar as palavras com base no delimitador de espaço.
Eu adoraria poder postar uma imagem de como fazer isso, mas como iniciantes não posso.
consulte o comentário bouke para ver como modificar o perfil do terminal.
— Stephane Gasparini
Para aqueles que desejam fazer isso iterm2, você pode ir em Preferências> Chaves> adicionar o Mapeamento de Chaves ⌥⌫para enviar códigos hexadecimais 0x1B 0x7F. Q
— qix 17/05/19
Como você descobriu que \033\177é isso que deseja "excluir parte de uma palavra"?
— adiabatic
na verdade, basta pressionar a sequência de teclas desejada na caixa de diálogo Preferências do terminal. Preferências → Perfis → guia Teclado → botão +, em seguida, escolha o modificador "opção" e a tecla "⌫ excluir", selecione o campo de texto e pressione a tecla Esc, depois pressione a tecla and e pronto. Esc + ⌫ faz o mesmo que ⌥⌫
No perfil do seu terminal, você pode vincular ⌥⌫ (opção + excluir) a ⌃W (controle + W), para que funcione de maneira semelhante a outros aplicativos.
stty deve ter ^ w mapeado para werase (comportamento padrão) para que isso funcione. Use stty -a na linha de comando para ver como os mapeamentos são definidos.
Atalhos de edição de comandos
Ctrl + a - vá para o início da linha de comando
Ctrl + e - vá para o final da linha de comando
Ctrl + k - excluir do cursor até o final da linha de comando
Ctrl + u - exclui do cursor até o início da linha de comando
Atalhos de Recuperação de Comando
Ctrl + r - pesquisa o histórico para trás
Ctrl + g - escape do modo de pesquisa de histórico
Ctrl + p - comando anterior no histórico (ou seja, retornar ao histórico de comandos)
Ctrl + n - próximo comando no histórico (ou seja, avançar no histórico de comandos). - use a última palavra do comando anterior
Atalhos de controle de comando
Ctrl + l - limpa a tela
Ctrl + s - interrompe a saída da tela (para comando detalhado de longa duração)
Ctrl + q - permite saída para a tela (se anteriormente interrompida usando o comando acima)
Ctrl + c - finaliza o comando
Ctrl + z - suspender / parar o comando
Comandos do Bash Bang (!) O Bash também possui alguns recursos úteis que usam o! (bang) para permitir que você faça coisas divertidas com os comandos do bash.
!! - execute o último comando! Blah - execute o comando mais recente que começa com 'blah' (por exemplo! Ls)
! blah: p - imprima o comando que o! blah executaria (também o adiciona como o comando mais recente no histórico de comandos)
! $ - a última palavra do comando anterior (o mesmo que Alt +.)
! $: p - imprima a palavra que! $ substituirá
! * - o comando anterior, exceto a última palavra (por exemplo, se você digitar '_find somefile.txt /', então! * Daria a você '_find somefile.txt')
! : p - imprima o que! substituiria
— Curtis M
Com a Natural Text Editingpredefinição ativada em Perfil -> Chaves. Você pode simplesmente remover a palavra