^ S dans le terminal ne soit pas envoyé à Vim

1

Je voudrais surcharger Ctrl + S et Cmd + S pour enregistrer un fichier si je modifie quelque chose dans Vim.

Après quelques critiques, je pense avoir découvert que, ^Sdans un terminal, le shell intercepte peut-être un message au processus ou que Vim fait peut-être quelque chose de spécial pour ne pas l'écouter. J'ai un script Perl qui met le terme en mode brut et qui lit parfaitement mes correspondances (l' ^Senvoie hexadécimal 0x13), mais rien ne se passe lorsque je suis en Ctrl+Vmode verbatim de Vim et que je le tape. Dans le shell zsh nu, le mode verbatim me montre que je suis pressant ^S. Cela semble réfuter la proposition selon laquelle un contrôle de flux de programme terminal est lié à cette clé, car je suis capable de faire en sorte que zsh la voie.

Comment puis-je faire en sorte que vim reconnaisse mes touches Ctrl + S?

Steven Lu
la source

Réponses:

2

^Sest le caractère ASCII XOFF. Avec XON ( ^Q), ils constituent les deux signaux de contrôle utilisés pour le contrôle de flux logiciel .

Ils ne sont pas interceptés par le shell, mais par le terminal, qui intercepte ^Spour signifier l'arrêt de la sortie du terminal et ^Qpour le reprendre.

Vous pouvez configurer votre terminal (utiliser stty -ixon -ixoff) pour les ignorer en désactivant le contrôle de flux logiciel, mais cela peut s'avérer inutile: il est déconseillé d'attribuer d'autres fonctions à XON et XOFF, car il se peut qu'il y ait autre chose dans la session de l'utilisateur ( terminal distant, un modem, un autre équipement RS-232) qui les interprète.

Celada
la source
1

stty -ixon(et stty -ixoffpour faire bonne mesure) l’a fait pour Terminal.app, iTerm2.

Steven Lu
la source