python - Notepad++ 自动检测 Python 制表符或空格

标签 python tabs notepad++

我通常使用制表符编写代码,但许多 python 库使用空格。 Notepad++ 有什么方法可以自动检测文件的格式,并在文件已经格式化后自动切换到使用空格?

顺便说一句,我知道已经有一个 SO question关于如何更改 Notepad++ 的标签格式。但如果它根据当前文件的格式自动更改会更好。

最佳答案

如果您安装了 Notepad++ 的“Python 脚本”插件,您可以编写代码来自动在制表符和空格之间切换。

方法如下:

  1. 在菜单中:Plugins -> Python Script -> Configuration,并将 Initialization 设置为 ATSTARTUP。当 Notepad++ 启动时,startup.py 脚本将运行。

  2. 找到startup.py 并编辑它。在我的电脑上它的路径是c:\Program Files\Notepad++\plugins\PythonScript\scripts\startup.py,在startup.py中添加以下代码。

每次切换标签时都会调用函数buffer_active()guess_tab()会检查文本是否使用标签缩进。您可以显示 Python 控制台来调试代码。

def guess_tab(text):
    count = 0
    for line in text.split("\n"):
        indents = line[:len(line)-len(line.lstrip())]
        if "\t" in indents:
            count += 1
    if count > 5: 
        return True
    else:
        return False

def buffer_active(arg):
    editor.setBackSpaceUnIndents(True)
    use_tab = guess_tab(editor.getText())
    editor.setUseTabs(use_tab)
    sys.stderr.write( "setUseTabs %s\n" % use_tab )

notepad.clearCallbacks([NOTIFICATION.BUFFERACTIVATED])    
notepad.callback(buffer_active, [NOTIFICATION.BUFFERACTIVATED])

这只是一个例子,你可以自己改进guess_tab(),也许可以使用全局字典来缓存结果并加速回调函数。

关于python - Notepad++ 自动检测 Python 制表符或空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986194/

相关文章:

python - 为什么 .strip() 不删除空格?

python - 为什么我的 defaultencoding ‘utf-8’ 使用 python 2.7.2?

tabs - 在Android Studio中启动后不显示运行标签

javascript - 为此选项卡式 angularjs 页面加载 html 页面

notepad++ - 扩展 Notepad++

replace - 防止 Notepad++ 使用选定/相邻文本自动填充搜索值

python - 具有附加值的 Argparse 参数

javascript - jQuery 选项卡 : Disable window location hash

regex - 无法获取第 5 个数字的正则表达式第二行,并且始终位于“序列号”一词之后

python - 进行迁移后,Django 新属性未显示在管理仪表板中