【问题标题】:Is there a way to use Vim keybindings in Google Colaboratory?有没有办法在 Google Colaboratory 中使用 Vim 键绑定?
【发布时间】:2018-07-18 08:44:30
【问题描述】:

Google colaboratory 是一个了不起的工具,唯一让我无法更频繁地使用它的是没有 vim 键绑定。有没有办法像 jupyter notebooks 和 jupyter lab 一样启用它?

【问题讨论】:

    标签: google-colaboratory


    【解决方案1】:

    现在默认情况下可在 google colab 中使用。 您可以从工具 > 设置 > 编辑器中选择 Vim 键绑定,或者键入 Ctrl+M H

    【讨论】:

    • 只是想为该答案添加后续内容(顺便说一句,现在应该是唯一接受的答案):现在在任何 Colab 笔记本上都启用了此功能。不需要“实验性”编辑器。
    【解决方案2】:

    这是通过 JavaScript 控制台启用 Vim 模式的小技巧。烦人的是,每次执行单元格时都需要重新运行它,所以我绑定了 ctrl/cmd-entershift-enter 来做到这一点:

    function enable_vim() { document.querySelectorAll(".CodeMirror").forEach(function (e) { e.CodeMirror.setOption("vimMode", true); }); }
    document.addEventListener('keydown', function(e) {
      if (e.keyCode == 13 && e.metaKey || e.keyCode == 13 && e.shiftKey) {
        for (var i = 0; i < 10; i++) setTimeout(enable_vim, 1000 * i);
      }
    });
    enable_vim();
    

    运行单元格时请注意处于普通模式(而不是输入模式)。否则,该单元格的 Vim 模式将永久禁用,需要重新加载整个 Web 应用程序才能重新启用它。

    【讨论】:

    • 谢谢!他们什么时候将其添加为合作的设置?你是我真正的救星。 ;)
    • 这实际上对于 Chrome 插件来说似乎是一项非常容易的任务。激活时,检查网站是否存在 .CodeMirror 类并默认在它们上启用 vimMode?​​span>
    • 再次对我自己的 cmets 进行头脑风暴。每当用户单击 Jupyter 代码窗口时,肯定会发出一个事件吗?上面的脚本可以修改为只为该事件添加一个监听器,并在任何时候单击单元格时启用 vimMode。
    【解决方案3】:

    由于之前在此帖子中的对话,我已将 autovim 发布到 Chrome 扩展程序商店。就我发现的永久可见的CodeMirror 元素而言,它可以完美地工作,但对于隐藏和显示的CodeMirror 元素仍然很不稳定,就像 Jupyter 中的 Markdown 一样。

    https://chrome.google.com/webstore/detail/autovim/licohjbphilmljmjonhiifkldfahnmja

    如果你愿意,你可以在这里贡献:

    https://github.com/thomcom/autovim

    【讨论】:

    • 你能不能也为 Firefox 发布同样的扩展?
    【解决方案4】:

    现在不行;随时在https://github.com/googlecolab/colabtools 提出问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-24
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多