配置好了python的开发环境jupyter,的确很顺手,但是有点让人不爽的就是还是需要不时的动下鼠标,让用了这么就的vimer的我非常不爽,下面开始改造开始:

一、项目地址:lambdalisue/jupyter-vim-binding,该项目能够让vimer在jupyter notebook开启vim模式,大大提升我们的工作效率,二话不说,当然是安装了

  一般人的$(jupyter --data-dir)都是/home/nication/.local/share/jupyter,如果不确定,就在终端下运行:echo $(jupyter --data-dir),如果不想倒腾,就直接用以下的命令吧:

  mkdir -p $(jupyter --data-dir)/nbextensions                //新建插件目录

  cd $(jupyter --data-dir)/nbextensions                  //切换到插件的目录

  git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding  //下载插件

  jupyter nbextension enable vim_binding/vim_binding          //启用插件

二、修改配置文件:

  cd  ~/.jupyter                            //切换到配置文件的目录

  mkdir  custom/                            //新建配置文件夹

  cd custom                              //切换至配置文件夹

  touch custom.js                            //新建配置文件



// Configure CodeMirror Keymap
require([
'nbextensions/vim_binding/vim_binding', // depends your installation
], function() {
// Map jj to <Esc> 这里我加了个l,是为了保证光标在同一个位置
//CodeMirror.Vim.map("jj", "<Esc>l", "insert");

// 我自定义的快捷键
CodeMirror.Vim.map("H", "^", "normal");
CodeMirror.Vim.map("L", "$", "normal");
CodeMirror.Vim.map("dH", "d0", "normal");
CodeMirror.Vim.map("s", ":q", "normal");

// Swap j/k and gj/gk (Note that <Plug> mappings)
CodeMirror.Vim.map("j", "<Plug>(vim-binding-gj)", "normal");
CodeMirror.Vim.map("k", "<Plug>(vim-binding-gk)", "normal");
CodeMirror.Vim.map("gj", "<Plug>(vim-binding-j)", "normal");
CodeMirror.Vim.map("gk", "<Plug>(vim-binding-k)", "normal");
});

// Configure Jupyter Keymap
require([
'nbextensions/vim_binding/vim_binding',
'base/js/namespace',
], function(vim_binding, ns) {
// Add post callback
vim_binding.on_ready_callbacks.push(function(){
var km = ns.keyboard_manager;
// Allow Ctrl-2 to change the cell mode into Markdown in Vim normal mode
km.edit_shortcuts.add_shortcut('ctrl-2', 'vim-binding:change-cell-to-markdown', true);
// Update Help
km.edit_shortcuts.events.trigger('rebuild.QuickHelp');
});
});

// Selecting all
require([
'nbextensions/vim_binding/vim_binding',
], function() {
CodeMirror.Vim.map("<C-a>", "ggVG", "normal");
});

// Use Ctrl + s to save in Vim normal and insert mode
require([
'nbextensions/vim_binding/vim_binding',
'base/js/namespace',
], function(vim_binding, ns) {
// Add post callback
vim_binding.on_ready_callbacks.push(function(){
var km = ns.keyboard_manager;
// Indicate the key combination to run the commands
km.edit_shortcuts.add_shortcut('ctrl-s', 'jupyter-notebook:save-notebook', true);
// Update Help
km.edit_shortcuts.events.trigger('rebuild.QuickHelp');
});
});


  将上边的内容添加到custom.js即可。

三、重新启动yupyter notebook即可,在代码编辑区输入代码,退出插入模式后,依旧可以shift+return输出运行结果,再也不用鼠标,完美收工。


人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。