停止Jupyter自动缩进新行中大量的非整数制表符?

时间:2019-07-03 15:41:50

标签: python jupyter-notebook

在OSX上运行Jupyter(核心:4.4.0,笔记本:5.7.8)python3笔记本。

笔记本似乎容易混淆如何自动缩进新行。具体来说,我的更复杂的单元格嵌套了defs,ifs和whiles等缩进,使Jupyter锁定到一个怪异的4.5选项卡自动缩进,该缩进不符合我的任何缩进级别,并导致大量按键浪费修复每个缩进。单。新。线。

要清楚一点,我不是在问如何更改默认制表符间距,而是在我问“ return”以换行时,如何将jupyter自动缩进停止为疯狂。

一个潜在的错误来源是我使用f文字字符串,Jupyter有时会搞乱哈希和嵌套引号的语法高亮显示,例如。 print(f"Output for #{myNum} | {myDict['namedItem']}")

欢迎任何可能导致此问题的提示。

1 个答案:

答案 0 :(得分:0)

答案:是的,它是f字符串文字。 f字符串中的嵌套引号会破坏单元格中的缩进,将新行默认设置为f字符串中引号的开头。

例如

print(f"Output for #{myNum} | {myDict['namedItem']}")
                                      # Newline starts here
                                      # and here
# Manual de-indent here for readibility.
x=5 # and manually force python code to an indent where it actually runs
                                      # Default newline is still here though  
                                      # And will stay here for the rest of the cell

f字符串通常会破坏jupyter笔记本底层的CodeMirror语法突出显示器,自Jan 2017起就为人们所熟知。已经进行了一些较小的修复,以使其损坏程度降低,但问题尚未解决-参见recent Git issues