【Vim模式】如何在jupyter notebook中将 jj 映射到 Esc

我想大多数习惯了vim的人使用一个新的编辑器一定会想问这个编辑器能用vim吗,这个编辑器怎么将 jj 映射到 Esc?作为一名vim爱好者,我也有同样的疑问

jupyter notebook默认只能修改命令模式,在编辑模式下无法设置快捷键,这让我很不爽,一度想放弃使用它,直到我知道了下面这个项目

项目地址:lambdalisue/jupyter-vim-binding

这个项目能够让我们在jupyter notebook开启vim模式,大大提升我们的工作效率

安装方法

只要在终端分别运行下面的代码,就可以成功安装插件

# Create required directory in case (optional)
mkdir -p $(jupyter --data-dir)/nbextensions
# Clone the repository
cd $(jupyter --data-dir)/nbextensions
git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding
# Activate the extension
jupyter nbextension enable vim_binding/vim_binding

如果Activate the extension没成功,重启下终端就行了

然后再打开jupyter notebook就可以看到一个绿色的方块,说明已经开启了vim模式
在这里插入图片描述
此时jupyter notebook有三种模式:jupyter 模式、command模式、insert模式
使用:q可以从vim的command的模式切换成jupyter模式

将 jj 映射到 Esc

在~/.jupyter/custom/custom.js处创建一个custom.js(默认没有这个文件)
在这里插入图片描述
然后将下面的代码加到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");
  // 设置Q从command模式切换到jupyter模式
  CodeMirror.Vim.map("Q", ":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');
  });
});

如何还想映射其他vim快捷键,只要按照上面的代码格式修改就行了


写在最后:我的博客主要是对计算机领域所学知识的总结、回顾和思考,把每篇博客写得通俗易懂是我的目标,分享技术和知识是一种快乐 ,非常欢迎大家和我一起交流学习,有任何问题都可以在评论区留言,也期待与您的深入交流(^∀^●)

发布了270 篇原创文章 · 获赞 111 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_43827595/article/details/104454436
JJ