had*_*i k 5 python sublimetext3 jupyter-notebook
从 sublime 复制这段代码:
# Texts Texts Texts Texts Texts Texts
for i in range(10):
#Idented Texxt
print i
Run Code Online (Sandbox Code Playgroud)
结果如下,带有 jupyter-notebook 中的行选项卡。现在如果我想添加到代码中并在 jupyter 中做进一步的测试,我需要复制这个奇怪的箭头而不是点击选项卡(否则,它会显示缩进错误)。有什么简单的方法可以改变吗?我可以想象我错过了一些非常简单的东西,这可能根本不是问题。我试着寻找,但没有提到这一点。我可以在 sublime 中将所有缩进更改为空格,这可能在复制时起作用,但我更喜欢使用制表符,以使代码可读。
第二张带有双标签的图像,它在笔记本中的样子。
小智 22
将脚本从 sublime 复制到 Jupyter 单元后:
看起来这种情况发生在您身上的原因是由于工具的世界观(即本例中的 Sublime 和 Jupyter)在制表符与空格方面不匹配,这确实是一个长期存在的争议。
特别是在 Sublime 中,您已translate_tabs_to_spaces关闭,因为您想使用物理制表符。因此,按下TabSublime 将插入通过tab_size设置可视化的物理制表符。
另一方面,根据这个问题,Jupyter 不支持Tab按键时通过制表符进行缩进。因此,在 Jupyter 中,尽管您有最好的意图,但当您按下Tab它时,它会插入空格。然而,如果它们被粘贴,它确实支持物理选项卡,这就是为什么它看起来像上面那样,以及为什么你必须手动粘贴物理选项卡才能获得你需要的输入。
在这两个工具中,Sublime 允许您选择使用物理制表符还是空格字符,但 Jupyter 不并且总是需要空格。在这种情况下,最方便的解决方案是不要在 Sublime 中使用选项卡,然后一切都会匹配。
大概这不是您的选择,因此下一个最佳解决方案是通过让 Sublime 以预期的方式向 Jupyter 提供数据来弥合差距,这可以通过一个简单的插件实现。
在 Sublime 中,选择Tools > Developer > New Plugin...并用此代码替换存根,然后将 Sublime 提示您(您的User包)的默认位置保存为可识别的名称,例如copy_with_spaces.py:
import sublime
import sublime_plugin
class CopyWithSpacesCommand(sublime_plugin.TextCommand):
"""
Copy the selected text to the clipboard, replacing all tab characters with
spaces based on the tab size in the current view.
"""
def run(self, edit):
self.view.run_command("copy")
tab_size = self.view.settings().get("tab_size", 4)
text = sublime.get_clipboard().expandtabs(tab_size)
sublime.set_clipboard(text)
Run Code Online (Sandbox Code Playgroud)
这实现了一个新命令copy_with_spaces,该命令将执行复制但在途中修改数据,以便将任何物理制表符替换为适当数量的空白字符。
有了它,您可以添加自定义键绑定,以便在将代码从 Sublime 复制到 Jupyter 以简化事情时使用。一个例子可能是:
{
"keys": ["shift+ctrl+c"],
"command": "copy_with_spaces",
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7148 次 |
| 最近记录: |