zoukankan      html  css  js  c++  java
  • 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输出运行结果,再也不用鼠标,完美收工。

    人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
  • 相关阅读:
    经验光照模型整理
    桥接模式下主机ping不通虚拟机,虚拟机能ping主机?kdump failed
    Vue项目目录结构分析
    interface{} 指针 bool 取值
    mac read-only file
    01Prism WPF 入门实战
    C#实现约瑟夫环数学问题
    SqlServer根据某列来分组后,再依据另一列来排序,选取第一行,后再依据另一列进行筛选,之后再统计数量
    2.算法分析-时间复杂度和空间复杂度
    1.数据结构和算法概述
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/14364507.html
Copyright © 2011-2022 走看看