Je viens de découvrir les merveilles de set -o vi
, et je suis curieux de savoir s'il est possible de personnaliser ce mode shell vi de la même manière que vous pouvez personnaliser vi ou vim?
Par exemple, créez une liaison de touches personnalisée pour mapper une touche ou un combo de touches plus pratique sur esc
?
Si ce n'est pas actuellement pris en charge, à quel point serait-il difficile de modifier le code source du programme et du code dur dans certaines personnalisations, ou serait-ce une mauvaise idée?
Réponses:
Oui, vous pouvez modifier les mappages de touches (pour le mode de type
bind
vi ou emacs) avec la fonction intégrée. Il s'agit en fait d'une fonction readline (vous pouvez donc avoir des liaisons de type vi dans tous les programmes readline, pas seulement bash).La clé que vous recherchez est appelée
vi-movement-mode
, et par défaut\e
(échapper). Vous pouvez également le lier à (et c'est plutôt idiot) des égaux comme celui-ci. La deuxième ligne se débarrasse de la liaison pour s'échapper:Running
bind -p
vous montrera toutes les clés que vous pouvez lier et leurs liaisons actuelles (le cas échéant).Vous pouvez placer des
bind
commandes dans votre.bashrc
, ou vous pouvez les modifier~/.inputrc
pour les appliquer à tous les programmes de lecture en ligne que vous exécutez. Les documents readline contiennent tous les détails.la source
bind "Control-Space":vi-movement-mode
- cela fonctionne bien. Mais par exemple, dans vim, je dois taper deux caractères consécutifs comme déclencheuresc
, c'est- à -dire que si vous tapez,jj
vous reviendrez au mode normal. Cela n'a pas fonctionné lorsque je l'ai essayé avec bind, existe-t-il un moyen spécial de le faire fonctionner?@
), sinon il ne recevra pas de notification.bind '"jk":vi-movement-mode'