I wrote: >> The right fix might be to simply remove the 'if' check above. > > Actually, it probably won't be that simple. Whereas in emacs mode, we > can probably rely on these bindings being added to the correct keymap, > namely 'emacs_standard_keymap', when in vi mode it's likely that these > bindings would end up in the wrong keymap, namely 'vi_movement_keymap'. > > When in vi mode, these mappings should be added to > 'vi_insertion_keymap', and that probably involves using > 'rl_bind_key_in_map' instead of 'rl_bind_key'.
And I guess 'rl_get_keymap_by_name' is the function we should use to get the keymap. From keymaps.h in readline: /* Return the keymap corresponding to a given name. Names look like `emacs' or `emacs-meta' or `vi-insert'. */ extern Keymap rl_get_keymap_by_name PARAMS((const char *)); Mark