jupyter中使用熟悉的vim

原文地址: https://blog.csdn.net/qq_43827595/article/details/104454436

 配置好了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输出运行结果,再也不用鼠标,完美收工。

人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
原文地址:https://www.cnblogs.com/guochaoxxl/p/14364507.html