Estou escrevendo o arquivo ~/.bashrc .
Quero vincular Alt-c a Ctrl-u.
Então, quando eu pressiono Alt-c. A funcionalidade do Ctrl-u deve acontecer.
Ctrl-u limpa o texto no terminal. Então Alt-c agora deve fazer isso.
Tenho o seguinte texto:
# Avoids default mapping.
# set bind-tty-special-chars off
# Solves error: 'bind editing not enabled.'
# But prevented me from using Control-p/n.
set -o vi;
# Up Directory (Alt-j)
bind '"\ej": "cd ..;\r"';
Que liga alt-j com sucesso ao código "cd ..;"
Mas não sei como mapear alt para um mapeamento Ctrl.
Provavelmente tem algo a ver com o " set -o vi ". Mas não consigo removê-lo sem receber o erro de ligação. Além disso, a desativação de " set -o vi " causa efeitos colaterais tais que não consigo mais pressionar tab no terminal. Eles também dizem que é apenas uma escolha entre o emacs e o vi, então acho que para o meu futuro seria melhor se eu pudesse simplesmente ativar -o vi, pois estou completamente no Vim.
Eu também tentei fazer o seguinte antes do set -o vi, não funciona.
# Clear Text (Alt-c)
bind '"\ec": "Control-u:"';
Mas de qualquer maneira.
Como mapeio Alt-c para Ctrl-u?
Você deve usar
bind
para vincular uma chave a uma função readline.bind -p
lista todas as ligações atuais e deve incluir:então se você quiser chamar a mesma função, use
Ctrl+ uinvoca o
unix-line-discard
widget nosvi
modos de comando e inserção:Você ligaria Alt+ cpara fazer o mesmo, fazendo com que ele invocasse o mesmo widget:
Ou fazendo com que se traduza no
^U
personagem: