SublimeText 3 - 动态启用/禁用不可见空白选项

nim*_*emo 1 sublimetext3

除了持久设置之外,是否有一种动态的方式来启用和禁用不可见的空白显示,通过:

"draw_white_space": "all",
Run Code Online (Sandbox Code Playgroud)

Oda*_*urd 6

控制空白显示状态的唯一方法是更改​​您在问题中引用的设置draw_white_space

// Set to "none" to turn off drawing white space, "selection" to draw only the
// white space within the selection, and "all" to draw all white space
"draw_white_space": "selection",
Run Code Online (Sandbox Code Playgroud)

对于许多这样的布尔值设置,您可以将一个键绑定到toggle_setting命令,告诉它您想要在哪个设置之间切换。但是,对于draw_white_space选项的情况,它需要一个字符串参数"all""selection"或者"none",因此标准切换命令将不起作用。

下面是一个简单的插件,它实现了一个toggle_white_space为您执行此操作的命令。要使用它,请Tools > Developer > New Plugin...从菜单中选择,将您看到的存根代码替换为此处的插件代码,然后将其作为.py文件保存在 Sublime 默认所在的位置(您的User包):

import sublime
import sublime_plugin


class ToggleWhiteSpaceCommand(sublime_plugin.TextCommand):
    def run(self, edit, options=["none", "selection", "all"]):
        try:
            current = self.view.settings().get("draw_white_space", "selection")
            index = options.index(current)
        except:
            index = 0

        index = (index + 1) % len(options)
        self.view.settings().set("draw_white_space", options[index])
Run Code Online (Sandbox Code Playgroud)

定义的命令采用名为的可选参数options,它允许您指定要在之间切换的值,默认值是所有可能的选项。

您可以将键直接绑定到命令以在设置的所有可能值之间切换设置状态,或者如果您只想在始终打开和始终关闭之间切换,则使用类似以下内容,例如:

{
    "keys": ["super+s"],
    "command": "toggle_white_space",
    "args": {
        "options": ["all", "none"]
    }
},
Run Code Online (Sandbox Code Playgroud)

请注意,虽然这会更改设置,但它会将设置直接应用于当前聚焦的视图,该视图是持久的,但仅适用于有问题的视图,并且只要该视图处于打开状态。这不会更改已打开的其他文件或您将来可能打开的任何新文件的设置;此类文件的默认设置仍将是您在用户首选项中设置的设置。