A questão é simples, não se queixa disso. Eu só quero comentar que geralmente vale muito facilitar as ligações de teclas "padrão" que já existem em muitos aplicativos, em vez de personalizá-las para obter um ganho real e a certeza de nunca ver o comportamento em sistemas externos. Ctrl+wé o que você deve se acostumar, imho.
Daniel Andersson
@ Daniel Andersson: ou alternativamente - Você pode desenvolver uma maneira de transferir suas configurações para uma máquina estrangeira.
Adobe
Compartilhar arquivos de ponto é um problema resolvido, mas não ajuda muito em outros computadores que não sejam mais ou menos locais, onde você tem privilégios bastante abertos. Se você estiver em um sistema estrangeiro, provavelmente não terá a liberdade de reconfigurar coisas assim (pelo menos não sem se deixar levar por colegas que também usam a mesma máquina :-)). Além disso, toda nova aplicação precisará de tratamento especial.
Daniel Andersson
6
Eu tenho o problema inverso, estou acostumado a Ctrl-w"excluir a palavra anterior" no console e fazê-lo por instinto, mesmo no Eclipse ou no Chrome, onde significa fechar a aba / fechar o arquivo atual. Um tanto irritante.
Ezequiel Muns
1
Eu tenho o mesmo problema com o Chrome SShInATab. Como faço para pressionar ctrl-W sem ctrl-W? :)
Riccardo SCE
Respostas:
12
Por que não usar Alt+ Backspaceou Ctrl+ Wque já estão mapeados na maioria dos terminais. Não tenho certeza sobre o console. O Xmodmap (man xmodmap) também pode ser usado para remapear outras chaves personalizadas. (Paradoxalmente, o xmodmap não pode remapear o Backspace muito bem porque o terminal substitui os mapeamentos, mas funciona bem com a maioria das chaves ...).
Porque eu costumava fazer Ctrl-Backspace no meu Emacs. Eu sabia sobre Ctrl-w. Alt-Backspace é novo para mim (+1).
Adobe
1
Bom ponto, @hellork. Você pode interceptar o controle + backspace no servidor X (via xmodmap) e mapeá-lo para algum caractere não utilizado (como alt-backspace).
3
O mais irritante disso é que ctrl + backspace é um mapeamento muito comum para "excluir a palavra para trás" na maioria dos aplicativos de GUI da maioria dos principais sistemas operacionais. Da mesma forma, Ctrl + W é difundido para "fechar janela". Alt + w raramente é usado para qualquer coisa em GUIs, que eu possa pensar. Padronização seria ótimo. Gostaria de saber qual seria a maior interrupção, mudança de terminais ou alteração de GUIs?
naught101
1
@naught, Control-W já é a chave padrão para apagar palavras nos terminais unix. Sim, está em conflito com a convenção do Windows / GUI, mas na verdade veio primeiro - por muitos anos. Culpe a Microsoft!
Alexis7
10
Encontrei este tópico via google, mas a resposta não era o que eu queria ouvir. Então eu brinquei:
No meu terminal, o backspace normal envia ^H, enquanto ctrl + backspace envia ^?. Portanto, deve-se simplificar o processo de ^?exclusão de uma palavra, que por padrão está disponível via Ctrl + W.
Primeiro (tentativa malsucedida):
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Portanto, isso deve funcionar:
$ bind '"\C-?":unix-word-rubout'
No entanto, não ... alguém capaz de explicar?
Segunda tentativa (bem-sucedida):
$ bind '"\C-?":"^W"'
Onde ^Wé literal / bruto ^W(pressione ctrl + V e, em seguida, ctrl + W para fazer com que apareça).
Sua primeira solução funcionou para mim, na verdade! Segundo não.
Drew Hoskins #
6
Existem algumas respostas boas aqui, mas eu o resolvi no Konsole com Configurações-> Editar perfil atual-> Teclado-> Editar e adicionando um mapeamento de Backspace+Controlpara \x17. (Encontrei o código ASCII para Ctrl-w usando showkey --ascii.)
Isso depende do que o bash vê. Na interação regular do terminal, o bash não vê quais modificadores de tecla você pressionou, apenas o caractere resultante. Backspace já é o mesmo que control-H, por exemplo. Manter pressionado o turno ou o controle não faz diferença.
NO ENTANTO, seu aplicativo de terminal (xterm? Cmd? Terminal? Putty? Depende do sistema operacional) pode ver as teclas pressionadas e pode ter uma maneira de mapear a combinação de teclas de controle e backspace para algo que o bash pode diferenciar do backspace.
Eu descobri que meu bash não vê backspace. Mas pode ser que seja possível fazê-lo ver isso.
Adobe
@ adobe, o que você quer dizer? Digite 'stty' no seu terminal e leia o manual sobre ele. Se ^ H estiver definido como seu caractere de apagamento, você poderá configurá-lo para outra coisa ... se tiver um bom motivo.
1
Há um bom exemplo de como fazer isso em github.com/calj/gtconf/blob/master/zsh/zshrc . O Konsole permite fazer isso. Copie um dos arquivos * .keytab de / usr / share / kde4 / apps / konsole / para ~ / .kde / share / apps / konsole e modifique-o com as sugestões no link acima, excluindo a linha "key Backspace" e adicionando: key Backspace-Shift-Control : "\x7f"e key Backspace-Shift+Control : "\E[9;3~"Altere também a linha do título enquanto estiver nela:, keyboard "Xfree4 Modlist"por exemplo. Em seguida, você pode adicionar "\e[9;3~": backward-kill-word"a ~ / .inputrc
Adam
2
Tente o seguinte:
bind '"\C-_":backward-kill-word'
Opcionalmente, adicione o seguinte a ~ / .inputrc para torná-lo permanente:
É improvável que o controle de backspace seja o mesmo que o sublinhado de controle.
Thomas Dickey
1
De todas as coisas que tentei neste segmento, isso funcionou! Usando "GNU bash, versão 4.3.48 (1) -release (x86_64-pc-linux-gnu)" no bash no windows / WSL
Markus Jevring 17/17
Isso funciona muito bem para mim no cygwin, usando GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin).
Zagyi
1
No Konsole:
clique Settings -> Edit current profile
clique na guia 'Teclado' -> [Edit...]
clique no [Add]botão e abaixo do Key Combinationtipo de coluna Backspace+Ctrl. No Outputtipo de coluna 0x08(que é convencionalmente o caractere backspace)
Agora você deve poder mapear essa chave para backward-kill-wordvia
Obrigado. Funciona para mim, pelo menos no xfce4-terminal.
limon
0
Na maioria dos terminais, CTRL + W já deve excluir uma palavra para trás. Isso funciona com o xterm e acho que funciona com o konsole. CTRL + W é uma ligação de tecla padrão em um programa baseado em texto que funcionará com o vim no modo de inserção, emacs e todos os shells.
Eu tenho o Ctrl-w ligado a "fechar a aba" no Emacs, FireFox, Krusader - então eu a configurei para ser uma combinação de aba de fechamento no Konsole também.
Ctrl+w
é o que você deve se acostumar, imho.Ctrl-w
"excluir a palavra anterior" no console e fazê-lo por instinto, mesmo no Eclipse ou no Chrome, onde significa fechar a aba / fechar o arquivo atual. Um tanto irritante.Respostas:
Por que não usar Alt+ Backspaceou Ctrl+ Wque já estão mapeados na maioria dos terminais. Não tenho certeza sobre o console. O Xmodmap (man xmodmap) também pode ser usado para remapear outras chaves personalizadas. (Paradoxalmente, o xmodmap não pode remapear o Backspace muito bem porque o terminal substitui os mapeamentos, mas funciona bem com a maioria das chaves ...).
fonte
Encontrei este tópico via google, mas a resposta não era o que eu queria ouvir. Então eu brinquei:
No meu terminal, o backspace normal envia
^H
, enquanto ctrl + backspace envia^?
. Portanto, deve-se simplificar o processo de^?
exclusão de uma palavra, que por padrão está disponível via Ctrl + W.Primeiro (tentativa malsucedida):
Portanto, isso deve funcionar:
No entanto, não ... alguém capaz de explicar?
Segunda tentativa (bem-sucedida):
Onde
^W
é literal / bruto^W
(pressione ctrl + V e, em seguida, ctrl + W para fazer com que apareça).fonte
Existem algumas respostas boas aqui, mas eu o resolvi no Konsole com Configurações-> Editar perfil atual-> Teclado-> Editar e adicionando um mapeamento de
Backspace+Control
para\x17
. (Encontrei o código ASCII para Ctrl-w usandoshowkey --ascii
.)fonte
showkey
. Assim, descobri queALT+D
para excluir a palavra na frente do cursor corresponderia\x1b\x64
.\x1b\x7f
.Apenas edite
~/.inputrc
(você pode precisar criar um ou copiar o que está/etc/inputrc
lá) para que ele contenha:Isso também Ctrlmapeará + Deletepara excluir a palavra ao lado do cursor.
fonte
Isso depende do que o bash vê. Na interação regular do terminal, o bash não vê quais modificadores de tecla você pressionou, apenas o caractere resultante. Backspace já é o mesmo que control-H, por exemplo. Manter pressionado o turno ou o controle não faz diferença.
NO ENTANTO, seu aplicativo de terminal (xterm? Cmd? Terminal? Putty? Depende do sistema operacional) pode ver as teclas pressionadas e pode ter uma maneira de mapear a combinação de teclas de controle e backspace para algo que o bash pode diferenciar do backspace.
fonte
key Backspace-Shift-Control : "\x7f"
ekey Backspace-Shift+Control : "\E[9;3~"
Altere também a linha do título enquanto estiver nela:,keyboard "Xfree4 Modlist"
por exemplo. Em seguida, você pode adicionar"\e[9;3~": backward-kill-word"
a ~ / .inputrcTente o seguinte:
Opcionalmente, adicione o seguinte a ~ / .inputrc para torná-lo permanente:
Funciona no bash 4.3.11 no Kubuntu 14.04
fonte
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
.No Konsole:
Settings -> Edit current profile
[Edit...]
[Add]
botão e abaixo doKey Combination
tipo de colunaBackspace+Ctrl
. NoOutput
tipo de coluna0x08
(que é convencionalmente o caractere backspace)Agora você deve poder mapear essa chave para
backward-kill-word
viafonte
Na maioria dos terminais, CTRL + W já deve excluir uma palavra para trás. Isso funciona com o xterm e acho que funciona com o konsole. CTRL + W é uma ligação de tecla padrão em um programa baseado em texto que funcionará com o vim no modo de inserção, emacs e todos os shells.
fonte