在 Sublime Text 3 中更改编辑模式:使用命令或宏切换多个设置
Changing editing mode in Sublime Text 3: toggle multiple settings with a command or macro
我想在 ST3 中引入一种类似于 Distraction-Free Mode 的新编辑模式,无需修改其设置。
我可以通过设置一些设置来达到我想要的结果,即draw_centered=true
、word_wrap=true
、wrap_width=90
等
但是,我希望能够一次切换所有这些设置(使用快捷方式或从命令面板)。当我退出此模式时,设置应该恢复到之前的状态(不一定是默认设置)。
以下是我在宏中设置的方法:
[
{ "command": "set_setting", "args": {"setting": "word_wrap", "value": true } },
{ "command": "set_setting", "args": {"setting": "wrap_width", "value": 80 } },
{ "command": "set_setting", "args": {"setting": "draw_centered", "value": true } },
{ "command": "set_setting", "args": {"setting": "line_padding_top", "value": 1 } },
{ "command": "set_setting", "args": {"setting": "line_padding_bottom", "value": 1 } }
]
但是,这会将设置设置为特定值。我希望能够将它们切换回之前的状态。
我该怎么做,在宏中还是作为命令?
保存以下脚本@:
/Packages/Toggle Custom View/toggle_custom_view.py
import sublime, sublime_plugin
STORED_SETTINGS = {}
class toggle_custom_view( sublime_plugin.TextCommand ):
def run( self, edit ):
view = self.view
settings = view.settings()
if settings.get( "is_widget" ):
return
if view.file_name():
viewID = view.file_name()
else:
viewID = str( view )
global STORED_SETTINGS
if not viewID in STORED_SETTINGS:
STORED_SETTINGS[ viewID ] = {
"custom_view_enabled": True,
"word_wrap": settings.get( "word_wrap" ),
"wrap_width": settings.get( "wrap_width" ),
"draw_centered": settings.get( "draw_centered" ),
"line_padding_top": settings.get( "line_padding_top" ),
"line_padding_bottom": settings.get( "line_padding_bottom" ),
}
storedSettings = STORED_SETTINGS[ viewID ]
if storedSettings[ "custom_view_enabled" ]:
settings.set( "word_wrap", True )
settings.set( "wrap_width", 80 )
settings.set( "draw_centered", True )
settings.set( "line_padding_top", 1 )
settings.set( "line_padding_bottom", 1 )
else:
settings.set( "word_wrap", storedSettings[ "word_wrap" ] )
settings.set( "wrap_width", storedSettings[ "wrap_width" ] )
settings.set( "draw_centered", storedSettings[ "draw_centered" ] )
settings.set( "line_padding_top", storedSettings[ "line_padding_top" ] )
settings.set( "line_padding_bottom", storedSettings[ "line_padding_bottom" ] )
storedSettings[ "custom_view_enabled" ] = not storedSettings[ "custom_view_enabled" ]
要通过Command Palette > Toggle Custom View
执行,保存以下代码@:
/Packages/Toggle Custom View/Default.sublime-commands
[
{
"caption": "Toggle Custom View",
"command": "toggle_custom_view",
},
]
通过Ctrl + Super + Alt + V执行,保存以下代码@:
/Packages/Toggle Custom View/Default.sublime-keymap
[
{
"keys": ["ctrl+super+alt+v"],
"command": "toggle_custom_view",
},
]
我想在 ST3 中引入一种类似于 Distraction-Free Mode 的新编辑模式,无需修改其设置。
我可以通过设置一些设置来达到我想要的结果,即draw_centered=true
、word_wrap=true
、wrap_width=90
等
但是,我希望能够一次切换所有这些设置(使用快捷方式或从命令面板)。当我退出此模式时,设置应该恢复到之前的状态(不一定是默认设置)。
以下是我在宏中设置的方法:
[
{ "command": "set_setting", "args": {"setting": "word_wrap", "value": true } },
{ "command": "set_setting", "args": {"setting": "wrap_width", "value": 80 } },
{ "command": "set_setting", "args": {"setting": "draw_centered", "value": true } },
{ "command": "set_setting", "args": {"setting": "line_padding_top", "value": 1 } },
{ "command": "set_setting", "args": {"setting": "line_padding_bottom", "value": 1 } }
]
但是,这会将设置设置为特定值。我希望能够将它们切换回之前的状态。
我该怎么做,在宏中还是作为命令?
保存以下脚本@:
/Packages/Toggle Custom View/toggle_custom_view.py
import sublime, sublime_plugin
STORED_SETTINGS = {}
class toggle_custom_view( sublime_plugin.TextCommand ):
def run( self, edit ):
view = self.view
settings = view.settings()
if settings.get( "is_widget" ):
return
if view.file_name():
viewID = view.file_name()
else:
viewID = str( view )
global STORED_SETTINGS
if not viewID in STORED_SETTINGS:
STORED_SETTINGS[ viewID ] = {
"custom_view_enabled": True,
"word_wrap": settings.get( "word_wrap" ),
"wrap_width": settings.get( "wrap_width" ),
"draw_centered": settings.get( "draw_centered" ),
"line_padding_top": settings.get( "line_padding_top" ),
"line_padding_bottom": settings.get( "line_padding_bottom" ),
}
storedSettings = STORED_SETTINGS[ viewID ]
if storedSettings[ "custom_view_enabled" ]:
settings.set( "word_wrap", True )
settings.set( "wrap_width", 80 )
settings.set( "draw_centered", True )
settings.set( "line_padding_top", 1 )
settings.set( "line_padding_bottom", 1 )
else:
settings.set( "word_wrap", storedSettings[ "word_wrap" ] )
settings.set( "wrap_width", storedSettings[ "wrap_width" ] )
settings.set( "draw_centered", storedSettings[ "draw_centered" ] )
settings.set( "line_padding_top", storedSettings[ "line_padding_top" ] )
settings.set( "line_padding_bottom", storedSettings[ "line_padding_bottom" ] )
storedSettings[ "custom_view_enabled" ] = not storedSettings[ "custom_view_enabled" ]
要通过Command Palette > Toggle Custom View
执行,保存以下代码@:
/Packages/Toggle Custom View/Default.sublime-commands
[
{
"caption": "Toggle Custom View",
"command": "toggle_custom_view",
},
]
通过Ctrl + Super + Alt + V执行,保存以下代码@:
/Packages/Toggle Custom View/Default.sublime-keymap
[
{
"keys": ["ctrl+super+alt+v"],
"command": "toggle_custom_view",
},
]