Isso é difícil, devido às convenções do Unix e à divisão de responsabilidades pelo manuseio de entrada entre terminal, driver de terminal e shell. Mas há algumas coisas que você pode fazer.
Como já foi mencionado, usando o mintty, Ctrl + Insert e Shift + Insert copiam e colam da área de transferência do Windows. O terminal não pode cortar, porque não tem controle sobre o buffer de linha do shell. Esses atalhos vieram do padrão Common User Access (CUA) da IBM. Eles apareceram pela primeira vez nos aplicativos do DOS e estão no Windows desde o início.
Ctrl + X / C / V, entretanto, veio do Mac. Indiscutivelmente mais conveniente, mas o grande problema com o uso de um terminal é que Ctrl + C é a chave de interrupção, com muitos aplicativos que o usam para coisas como o Cancel também. Além disso, Ctrl + V é a chave padrão para 'inserção entre aspas' em um shell, que remove qualquer significado especial do próximo pressionamento de tecla, e Ctrl + X é a primeira chave para muitos atalhos de dois passos.
Eu não acho que haja alguma maneira de usar a tecla Shift + para marcar o texto no bash. Em vez disso, pressione Ctrl + Espaço para definir a "marca" e, em seguida, se você mover o cursor, o texto entre a marca e o cursor será selecionado. Infelizmente você não consegue ver a seleção (chamada "região"), então você tem que lembrar onde você colocou a marca.
(Zsh funciona da mesma forma, mas ao contrário do bash, ele realça a seleção. A questão 84 do Enhancement para mintty solicita a habilidade de selecionar texto usando o teclado no nível do terminal. Tal recurso provavelmente usaria Shift + seta).
Agora, os atalhos padrão para operar na "região" são os do emacs, mas você pode alterá-los para o estilo Mac, colocando o seguinte em um arquivo chamado .inputrc no seu diretório pessoal. (Leia tudo sobre .inputrc em link )
"\C-x": kill-region
"\C-c": copy-region-as-kill
"\C-v": yank
Mas espere, e o significado especial dessas teclas? Bem, você acabou de perder todos os atalhos Ctrl + X em duas etapas, então você teria que revincular os que você realmente precisa. Enquanto isso, a função Ctrl + V pode ir para Ctrl + Q:
"\C-q": quoted-insert
Isso deixa o importantíssimo Ctrl + C. Isso é realmente tratado pelo driver do terminal, então você precisa movê-lo para outro lugar usando 'stty'. O Mintty possui uma seqüência de controle que permite que o código de tecla Escape seja alterado de forma que possa ser usado como a chave de interrupção. Colocar isso no script de inicialização do bash fará isso:
echo $'\e[7728h'
stty intr ^\
Os códigos de tecla do Mintty para várias chaves especiais também permitem que algumas outras configurações stty sejam alteradas para o estilo do Windows:
-
swtch ^] susp ^]
- pausa em vez de Ctrl + Z para dormir um processo
-
eof ^^
- Ctrl + Enter, em vez disso, Ctrl + D para o final do arquivo
-
werase ^_
- Ctrl + Backspace em vez de Ctrl + W para apagar uma palavra
-
lnext ^q
- Ctrl + Q em vez de Ctrl + V para inserção literal do próximo caractere
Você também pode querer remover os atalhos do driver de terminal para parar (^ S) e iniciar (^ Q) a saída, que não são muito úteis, mas que são capazes de causar confusão:
stty start - stop -
De volta a .inputrc, há várias associações de teclas no estilo do Windows:
# Ctrl+Left/Right to move by whole words
"\e[1;5C": forward-word
"\e[1;5D": backward-word
# Ctrl+Backspace/Delete to delete whole words
"\e[3;5~": kill-word
"\C-_": backward-kill-word
# Ctrl+Shift+Backspace/Delete to delete to start/end of the line
"\e[3;6~": kill-line
"\xC2\x9F": backward-kill-line
# Alt-Backspace and Ctrl+Z for undo
"\e\d": undo
"\C-z":undo
Por fim, você pode encontrar os seguintes atalhos úteis também. Eles procuram uma linha na história que comece igual à sua atual:
# Ctrl-Up/Down for searching command history
"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward