Eu gostaria de ser capaz de copiar e colar texto na linha de comando no Bash usando as mesmas combinações de teclas que o Emacs utiliza por padrão (ou seja, utilizando C-space
para set-mark
, M-w
copiar o texto, C-y
, M-y
para colá-lo, etc.).
A documentação do GNU Bash diz que o Bash vem com algumas dessas ligações de teclas configuradas por padrão.
Por exemplo, yanking ( C-y
) funciona por padrão no meu terminal. No entanto, não pode obter o set-mark
e copy
comandos para o trabalho, e eles não parecem ser vinculado a quaisquer chaves por padrão.
Geralmente, a maneira como um usuário pode definir suas próprias associações de teclas é adicioná-las .inputrc
. Então, procurei e encontrei as seguintes funções bash na documentação que presumo que podem me ajudar a definir o comportamento semelhante ao Emacs que eu quero (ou seja, set-mark
com C-space
e copy
com M-w
).
copy-region-as-kill ()
Copie o texto da região para o buffer de interrupção, para que ele possa ser arrancado imediatamente. Por padrão, este comando é ilimitado.
e
set-mark (C-@)
Coloque a marca no ponto. Se um argumento numérico for fornecido, a marca é definida para essa posição.
Se bem entendi, o acima significa que copy-region-as-kill
não está vinculado a nenhuma sequência de teclado por padrão, enquanto set-mark
está vinculado C-@
por padrão.
Eu tentei C-@
no meu terminal, mas não acho que ele funcione set-mark
porque não vejo nenhum texto destacado quando movo o cursor. De qualquer forma, tentei adicionar ligações de teclado ( M-w
e C-
) às funções copy-region-as-kill
e set-mark
acima no meu .inputrc
e recarregá-lo com isso C-x C-r
, mas isso não funcionou. Eu sei que minhas outras entradas .inputrc
funcionam porque tenho outras combinações de teclas definidas pelo usuário.
Existe algo que estou fazendo de errado? Estou faltando alguma coisa?
fonte
bash
e qual programa do terminal você está usando?Respostas:
Não destaca a seleção, mas, caso contrário, acho que funciona bem.
Tente correr
para garantir que
C-x C-r
realmente funcionou.Deveria dizer:
Depois disso, deve funcionar bem.
Exemplo:
me dá
Se você quiser saber onde
mark
está, apenas façaC-x
C-x
.Exemplo:
colocará o cursor de volta no local em que você definiu a marca (o início da linha).
Além disso, acho que você não precisa adicionar a
set-mark
ligação. Eu não fiz.(observe que a maioria dos terminais envia
C-@
quandoC-Spc
é pressionado. Presumo que o seu também seja enviado .)Se tudo isso falhar:
emacs -nw
no mesmo terminal?fonte
\e
ou\M-
. Consulte a sintaxe do arquivo init do readline .Também vinculo Cw para kill-region . Aqui está o meu .inputrc:
fonte