Colar tem comportamento estranho no shell

1

Estou usando o zsh.

Clico com o botão direito do mouse em copiar algo da janela zsh e, em seguida, clique com o botão direito do mouse e cole-o. Eu sempre perco um pouco de personagens e a capitalização do último personagem vira.

por exemplo,

echo this is a long message

pastas como

(empty line)

this is a long messaG

e

vim hello.txt

torna-se

m hello.tX

O que poderia estar causando isso e como corrigi-lo?

    
por Jeremy 20.07.2017 / 02:17

1 resposta

2

O que está causando isso é duplo:

  • Algo, possivelmente o shell Z, disse ao seu terminal para ativar o colar entre colchetes .
  • O shell Z está usando o mapa de teclado vicmd ou viins .

O que está acontecendo é isso:

  1. O shell Z é iniciado e emite a sequência de controle para ativar a colagem entre colchetes no emulador de terminal. Ou talvez um editor de texto tenha feito isso em algum momento, e algo fez com que ele não emitisse a sequência de controle para desativá-lo novamente.
  2. Você cola algo.
  3. O emulador de terminal envia o início da sequência de controle de pasta entre colchetes, o texto colado e o final da seqüência de controle de colagem entre colchetes.
  4. O primeiro caractere da seqüência de controle de colar entre colchetes é ESC, que cancela o modo de inserção de vi de ZLE e retorna ao modo de comando vi de ZLE.
  5. Os caracteres subsequentes são vi de comandos e não fazem muito, até que você atinja a letra o ou i , que entra no modo de inserção.
  6. O restante do texto é inserido no modo de inserção.
  7. O primeiro caractere da seqüência de controle de colagem entre colchetes é ESC, que cancela o modo de inserção de vi do ZLE e retorna ao modo de comando vi do ZLE.
  8. Caracteres subseqüentes da seqüência de controle não fazem muito.
  9. O caractere final da seqüência de controle de colagem entre colchetes é ~ , que é o comando vi para trocar o caso. Isso faz com que a letra final do texto colado seja trocada entre maiúsculas e minúsculas.

Você conserta isso de duas maneiras:

  • Impede que o shell Z ative a colagem entre colchetes; como claramente não foi configurado para lidar com isso em vicmd / viins keymaps.
  • Faça o trabalho de colar entre colchetes em vicmd / viins keymaps. Como você faz isso depende de como você fez o shell Z reconhecer a pasta entre colchetes em primeiro lugar. O plug-in safe-paste , em vez disso, assume os mapas de teclado do emacs e precisa ser ajustado para funcionar bem com os mapas de teclado do vi. Mas essa não é a única maneira de obter colar entre colchetes no reservatório Z hoje em dia.

Leitura adicional

por 20.07.2017 / 13:10