在jupyter实验室中可以缩进自动换行吗?

时间:2019-07-10 11:08:56

标签: python indentation word-wrap jupyter-lab

Jupyterlab正在像这样进行软包装(设置为"lineWrap": "on"):

wrong

但是我更喜欢这样的东西,就像我在所有其他文本编辑器(emacs,intellij,vim ...)中都拥有的一样:

right

这可能吗? :)

2 个答案:

答案 0 :(得分:0)

JupyterLab正在使用CodeMirror,并且有一种用于缩进软包装线的技巧,已发布在https://codemirror.net/demo/indentwrap.html上。

该页面上的代码:

  var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
    lineNumbers: true,
    lineWrapping: true,
    mode: "text/html"
  });
  var charWidth = editor.defaultCharWidth(), basePadding = 4;
  editor.on("renderLine", function(cm, line, elt) {
    var off = CodeMirror.countColumn(line.text, null, cm.getOption("tabSize")) * charWidth;
    elt.style.textIndent = "-" + off + "px";
    elt.style.paddingLeft = (basePadding + off) + "px";
  });
  editor.refresh();

这只是第一步,我不知道如何在JupyterLab内部应用该黑客(因为CodeMirror在该环境中不是全局变量)。我希望有人能够以此为基础...

答案 1 :(得分:-1)

软包装行为似乎是浏览器的属性。由于笔记本代码单元仅包装在<textarea>内,因此没有(简单的)解决方案。

例如,对于我在Safari上的浏览器来说,它根本不是软包装,而是有一个水平滚动条。