Mac OS X Terminal: opção Map + delete para "backward delete word"

232

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?

ibz
fonte
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.
knoopx
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

Respostas:

424

Ativar chave de opção como meta-chave

  1. Ir para Terminal> Preferences> Profiles>Keyboard
  2. Verifique Use option key as meta key.

Imagem

No macOS High Sierra 10.13.6, capturado em 23 de outubro de 2018.

Ilustração da janela para alternar a tecla de opção como meta-chave

Notas

Muitos aplicativos (incluindo bash e tcsh) tratam o Meta-Delete como "palavra de exclusão reversa".

Andru Luvisi
fonte
32
Está em Preferências do terminal> configurações> teclado, na parte inferior.
18713 Jon
16
Por que isso não é o padrão ?!
Ross Hambrick
8
No Yosemite, essa configuração está agora em Preferências -> Perfis -> Teclado. Parece que você precisa alterar / configurá-lo para cada perfil.
palimpsestor
6
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?
Touko
8
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.
Magne
74

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
fonte
3
Como isso é "útil"? O restante do sistema usa deletecom qualificadores para excluir palavras.
Idragge
É possível ter "excluir linha" também?
Wenbert #
1
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?
Pacerier
63

Exclua uma palavra retornando:

Ctr-w.

Shai
fonte
2
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.
victor n.
8
Ctr-k apaga tudo na frente, não apenas uma palavra, não?
Shai
isso funciona no meu mac. também funciona no ubuntu linux?
precisa saber é o seguinte
1
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
24

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.

Dustin
fonte
3
Fantástico, isso não requer configuração extra. Percebo <Esc> be <Esc> ftambém trabalho para voltar ou avançar uma palavra.
Joeytwiddle #
1
Gosto de <ALT> + SETA mais. O ESC não permite cliques contínuos em b ou f.
Vitali Pom
1
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
Rene Wooller
18

⌃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)

rm /dira/dirb/file1

rm /dira/dirb/

enquanto ^ W no mesmo dará

rm

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
fonte
5
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 ⌥⌫
Stephane Gasparini
14

No perfil do seu terminal, você pode vincular ⌥⌫ (opção + excluir) a ⌃W (controle + W), para que funcione de maneira semelhante a outros aplicativos.

Configurações do teclado do perfil do terminal

Bouke
fonte
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.
natersoz
4

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

Ctrl + w - excluir do cursor para o início da palavra (ou seja, excluir uma palavra para trás)

Ctrl + y - cole a palavra ou o texto que foi cortado usando um dos atalhos de exclusão (como o acima) após o cursor

Ctrl + xx - move entre o início da linha de comando e a posição atual do cursor (e vice-versa)

Alt + b - recua uma palavra (ou vá para o início da palavra em que o cursor está ativado)

Alt + f - avança uma palavra (ou vai para o final da palavra em que o cursor está ativado)

Alt + d - excluir para o final da palavra começando no cursor (palavra inteira se o cursor estiver no início da palavra)

Alt + c - coloque em maiúscula no final da palavra começando no cursor (palavra inteira se o cursor estiver no início da palavra)

Alt + u - faz maiúsculas do cursor até o final da palavra

Alt + l - faz minúsculas do cursor até o final da palavra

Alt + t - troca a palavra atual pela anterior

Ctrl + f - avança um caractere

Ctrl + b - retrocede um caractere

Ctrl + d - exclui caracteres sob o cursor

Ctrl + h - exclui o caractere antes do cursor

Ctrl + t - troca o caractere sob o cursor pelo anterior

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
fonte
2

Com a Natural Text Editingpredefinição ativada em Perfil -> Chaves. Você pode simplesmente remover a palavra

  • Para trás com alt + delete
  • Encaminhar com fn + alt + delete
Anthony Artemiev
fonte