[bash] .inputrc et urxvt, history completion&fast word move (résolu)

Applications, problèmes de configuration réseau
bobo
Elfe
Messages : 593
Inscription : mar. 08 avr. 2014, 22:47

[bash] .inputrc et urxvt, history completion&fast word move (résolu)

Message par bobo »

J'essaie de peaufiner ma config terminal et bash. Après avoir réussi à avoir un urxvt qui me convienne, j'essaie de mettre en place quelque binds sympas pour bash.

Il me manque vraiment une complétion qui prenne en compte l'historique. J'ai aussi trouvé la possibilité de bouger par mot assez séduisante. Lors de mes recherches, je suis tombé sur ce lien hyper intéressant http://www.catonmat.net/blog/bash-emacs ... eat-sheet/ et j'ai appris l'existence d'un mode « vi » pour readline/bash.

J'ai modifié mon ~/.inputrc comme préconisé sur le wiki, sans succès :( :
https://wiki.archlinux.org/index.php/Ba ... completion
https://wiki.archlinux.org/index.php/Ba ... _with_Ctrl

À noter que le "fast forward movement" fonctionne avec lxterminal (pas "history completion"), si bien que je me demande dans quelle mesure la gestion des flèches par urxvt est compatible avec ces astuces.

Auriez-vous une idée pour arriver à faire fonctionner tout ça ?
D'où sortent les chaînes de caractères "\e[A", "\e[1;5D", etc ? (J'ai l'impression qu'elles sont dépendantes de l'émulateur de terminal utilisé…)
Dernière modification par bobo le lun. 20 juil. 2015, 11:36, modifié 1 fois.
dwm — BÉPO — vim — “more is less !”
bobo
Elfe
Messages : 593
Inscription : mar. 08 avr. 2014, 22:47

Re: [bash] .inputrc et urxvt, history completion&fast word move

Message par bobo »

Ça me fait penser à cette section de mon ~/.vimrc

Code : Tout sélectionner

if &term == "xterm"
    set <S-F2>=O1;2Q
    set <S-F4>=O1;2S
"" Hardly working :
"   set <C-F4>=O1;5S
endif

if &term == "rxvt-unicode-256color"
    set <S-Up>=[a
    set <S-Down>=[b
    set <S-F2>=<F12>
    set <S-F3>=[25~
    set <S-F4>=<Undo>
    set <S-F7>=[31~
    set <S-F10>=[34~
    set <C-Left>=Od
    set <C-Right>=Oc
endif

if &term == "st-256color"
    set <S-Up>=[1;2A
    set <S-Down>=[1;2B
    set <S-F2>=[1;2Q
    set <S-F3>=[1;2R
    set <S-F4>=[1;2S
    set <S-F7>=[18;2~
    set <S-F10>=[21;2~
"" Hardly working :
    set <C-Left>=[1;5D
    set <C-Right>=[1;5C
"   set <C-Up>=[1;5A
"   set <C-Down>=[1;5B
"   set <C-F4>=[1;5S
endif
Édition: je viens de m'apercevoir qu'il faudrait sans doute commenter tout ça. Dans mon .vimrc, quand certaines combinaisons ne passent pas, on peut obtenir le « caractère » de la combinaison en faisant <C-K> en mode insertion. On voit que certaines touches Function avec modificateur (Shift ou Control) ont des correspondances différentes selon l'émulateur de terminal utilisé. De même pour les <S-Up|Down> <C-Left|Right>.
dwm — BÉPO — vim — “more is less !”
bobo
Elfe
Messages : 593
Inscription : mar. 08 avr. 2014, 22:47

Re: [bash] .inputrc et urxvt, history completion&fast word move (résolu)

Message par bobo »

J'ai réussi à faire fonctionner tout ça avec ce .inputrc

Code : Tout sélectionner

$ cat .inputrc 
"\e[A": history-search-backward
"\e[B": history-search-forward

"\eOd": backward-word
"\eOc": forward-word
:arrow: history-search-\w+ward
Le soucis venait d'une modification de .bashrc spécifique à st, documentée ici : http://git.suckless.org/st/tree/FAQ

Code : Tout sélectionner

printf '\033[?1h\033=' >/dev/tty
Je ne comprends pas l'intéraction avec mon soucis, mais celà causait aussi des soucis de navigation avec les flèches dans les applications ncurses (comme wifi-menu).

:arrow: \w+ward-word
Il faut utiliser ajouter de lignes "\eOc " "eOd" pour la reconnaissance de ctrl-gauche ctrl-droite par urxvt. Trouvé en tombant sur cette page web : https://snarfed.org/control_arrow_keys_ ... _and_emacs
dwm — BÉPO — vim — “more is less !”
bobo
Elfe
Messages : 593
Inscription : mar. 08 avr. 2014, 22:47

Re: [bash] .inputrc et urxvt, history completion&fast word move (résolu)

Message par bobo »

J'ai ajouté celà à la page bash du wiki en Anglais :
https://wiki.archlinux.org/index.php/Ba ... _with_Ctrl
dwm — BÉPO — vim — “more is less !”
Répondre