jwkvam / jupyterlab-vim

:neckbeard: Vim notebook cell bindings for JupyterLab
MIT License
973 stars 73 forks source link

Support emacs keybindings for insert mode #109

Open amosbird opened 4 years ago

amosbird commented 4 years ago

It would be nice to have alt-f,b,d,BS, ctrl-f,b,a,e,d,p,n defined in insert mode

benlindsay commented 4 years ago

I know emacs keybindings are really great too, but I'm not sure a vim emulator is the place to ask for emacs keybindings. Maybe you should check out https://github.com/kpe/jupyterlab-emacskeys ?

amosbird commented 4 years ago

Well. Modal editing is a must. Keybindings come after. I tried enabling both extensions and both stop working

benlindsay commented 4 years ago

I agree that being able to switch between editing modes would be ideal, especially in a multiple-user setup. It would be nice if Jupyter Lab had a better story regarding turning extensions on and off like VSCode and friends. Without that, as a user I wouldn't have a problem with enabling emacs keybindings as long as it doesn't make it more difficult to maintain vim keybindings. I haven't dug into the code though so I have no idea whether it would

amosbird commented 4 years ago

hmm, I tried adding these mappings

            lvim.map('<C-i>', '<C-t>', 'insert');
            lvim.map('<C-a>', '<Home>', 'insert');
            lvim.map('<C-e>', '<End>', 'insert');
            lvim.map('<C-f>', '<Right>', 'insert');
            lvim.map('<C-b>', '<Left>', 'insert');
            lvim.map('<C-j>', '<Down>', 'insert');
            lvim.map('<C-k>', '<Up>', 'insert');
            lvim.map('<C-d>', '<Del>', 'insert');

However they didn't have any effect.