Associazioni di tasti personalizzate per la modalità shell vi, ovvero "set -o vi"?


18

Ho appena scoperto le meraviglie di set -o vi, e sono curioso di sapere se è possibile personalizzare questa modalità shell vi in ​​alcuni modi in cui è possibile personalizzare vi o vim?

Ad esempio, creare un'associazione chiave personalizzata per mappare una chiave o una combinazione di tasti più conveniente su esc?

Se al momento non è supportato, quanto sarebbe difficile modificare il codice sorgente del programma e il codice fisso in alcune personalizzazioni, o sarebbe una cattiva idea?


Risposte:


17

Sì, puoi modificare i mapping dei tasti (per la modalità vi- o emacs-like) con bind built-in. Questa è in realtà una funzione readline (quindi puoi avere associazioni simili a vi in ​​tutti i programmi readline, non solo bash).

La chiave che stai cercando viene chiamata vi-movement-modee per impostazione predefinita è \e(escape). Potresti anche associarlo a (e questo è piuttosto sciocco) uguale a questo. La seconda riga elimina l'associazione per fuggire:

$ bind "=":vi-movement-mode 
$ bind -r "\e"

In esecuzione bind -p ti mostrerà tutte le chiavi che puoi associare e le loro associazioni attuali (se presenti).

Puoi inserire bindcomandi nel tuo .bashrc, oppure puoi modificarlo ~/.inputrcper farlo applicare a tutti i programmi readline che esegui. I documenti readline contengono dettagli completi.


1
Questo e spettacolare. Grazie mille. Sono stato in grado di capire come legare le combinazioni di tasti come bind "Control-Space":vi-movement-mode- funziona benissimo. Ma per esempio in Vim devo digitare due caratteri di seguito come trigger esc, ovvero se digiti jjtornerai alla modalità normale. Questo non ha funzionato quando l'ho provato con bind, c'è un modo speciale per farlo funzionare?
Giona,

@Jonah non che conosco di mano, ma non ho letto di recente i documenti readline ...
derobert

@chishaku devi aggiungere il prefisso al nome di Jonah con un segno ( @), altrimenti non riceverà una notifica.
derobert,

2
@Jonah Ho appena provato a fare la stessa cosa. L'hai mai capito?
Chishaku,

1
unix.stackexchange.com/questions/303282/… Hai bisogno di preventivi per qualche motivobind '"jk":vi-movement-mode'
Hielke Walinga,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.