^ S no terminal não é enviado para o Vim

1

Eu gostaria de sobrecarregar as teclas Ctrl + S e Cmd + S para salvar um arquivo se eu estiver editando algo no Vim.

Depois de alguns arranhões, acho que descobri que ^S em um terminal talvez esteja sendo capturado pelo shell para enviar um sinal ao processo, ou talvez o Vim esteja fazendo algo especial para não ouvi-lo. Eu tenho um script perl que coloca o termo no modo raw que pode ler meus mapeamentos muito bem (o ^S envia hexadecimal 0x13 ), mas nada acontece quando estou em Vim Ctrl+V verbatim-mode e digitá-lo. No shell zsh, o modo literal mostra que estou pressionando ^S . Isso parece refutar a proposição de que existe algum controle de fluxo do programa terminal ligado a essa chave, já que eu consigo ver o zsh.

Como posso obter o vim para reconhecer meu Ctrl + S?

    
por Steven Lu 28.04.2013 / 04:35

2 respostas

2

^S é o caractere ASCII XOFF. Juntamente com XON ( ^Q ), eles são os dois sinais de controle usados para controle de fluxo de software .

Eles não são interceptados pelo shell, mas pelo terminal, que intercepta ^S para interromper a saída do terminal e ^Q para retomar a execução.

Você pode configurar seu terminal (usando stty -ixon -ixoff ) para ignorá-los, desligando o controle de fluxo de software, mas pode ser fútil: não é aconselhável tentar atribuir outras funções a XON e XOFF porque pode haver algo mais na sessão do usuário (um terminal remoto, um modem, algum outro equipamento RS-232) que os interpreta.

    
por 28.04.2013 / 04:50
1

stty -ixon (e stty -ixoff para boa medida) fez isso para o Terminal.app, iTerm2.

    
por 28.04.2013 / 04:48