Sublime Text 3 手动插入制表符
Sublime Text 3 insert tab character manually
使用 Sublime Text 3 时,我的大部分文件都设置为使用空格缩进。但是有时我希望插入一个文字标签。当我使用 vim 时,我会使用 +v 但这不适用于 Sublime Text 3。
我一直在寻找和寻找,但找不到任何东西。请帮忙!
有一个默认的键绑定 Shift+Tab 用于将原始制表符插入文档,尽管在某些上下文情况下(例如展开片段时)它需要在其他功能上。
但是,Indent Using Spaces
由以下设置控制:
// Set to true to insert spaces when tab is pressed
"translate_tabs_to_spaces": false,
如此处所示,它默认为 false
,但是当您打开 Indent using spaces
时,它会设置为 true
。正如评论所暗示的那样,当此设置设置为 true
时,任何插入原始制表符的尝试都会被转换为一定数量的空格。
因此,在这种情况下,即使是官方键绑定也不会插入原始制表符。
根据您喜欢插入文字选项卡的频率,您可以通过暂时打开和关闭该设置来解决此问题,但这远非理想,即使从状态栏中的菜单切换设置也是如此.
由于 Sublime 是如此可定制,我们可以让它自动为我们完成这项工作。
首先,创建一个包含以下内容的文件并将其作为 literal_tab.sublime-macro
保存在您的 User
包中(使用 Preferences > Browse Packages...
查找您的 User
包,如果你不确定它在哪里):
[
{ "command": "toggle_setting", "args": { "setting": "translate_tabs_to_spaces" } },
{ "command": "insert", "args": { "characters": "\t" } },
{ "command": "toggle_setting", "args": { "setting": "translate_tabs_to_spaces" } }
]
然后,将以下两个键绑定添加到您的用户绑定(菜单中的 Preferences > Key Bindings
;如果有多个选项,请选择 User
而不是 Default
):
{
"keys": ["ctrl+k","tab"],
"command": "insert",
"args": {
"characters": "\t"
},
"context":
[
{ "key": "setting.translate_tabs_to_spaces", "operator": "equal", "operand": false }
]
},
{
"keys": ["ctrl+k","tab"],
"command": "run_macro_file",
"args": {
"file": "Packages/User/literal_tab.sublime-macro"
},
"context":
[
{ "key": "setting.translate_tabs_to_spaces", "operator": "equal", "operand": true }
]
}
两个绑定都包含一个上下文,根据 translate_tabs_to_spaces
设置的值导致它触发或不触发,因此在任何给定时间只有其中一个有效,另一个自动禁用.
第一种绑定是针对关闭设置的情况,这种情况下只需要插入一个制表符就可以了。第二种情况改为从上面运行我们的自定义宏,它关闭设置,插入选项卡,然后再次打开设置。
理论上,如果您始终打开缩进设置,您实际上只需要第二个,但由于最小意外原则,最好将其设置为无论设置如何都可以工作。
当然你可以使用你想要的任何击键(我也习惯了vim的这个),宏文件的名称无关紧要,只要它具有正确的名称即可扩展名,它匹配绑定尝试执行的内容。
注意:虽然您在问题中提到了 Sublime Text 3,但您也标记了 Sublime Text 2,因此为了完整起见,我还会注意到此处提供的信息和解决方案同样适用于两个版本。
使用 Sublime Text 3 时,我的大部分文件都设置为使用空格缩进。但是有时我希望插入一个文字标签。当我使用 vim 时,我会使用
我一直在寻找和寻找,但找不到任何东西。请帮忙!
有一个默认的键绑定 Shift+Tab 用于将原始制表符插入文档,尽管在某些上下文情况下(例如展开片段时)它需要在其他功能上。
但是,Indent Using Spaces
由以下设置控制:
// Set to true to insert spaces when tab is pressed
"translate_tabs_to_spaces": false,
如此处所示,它默认为 false
,但是当您打开 Indent using spaces
时,它会设置为 true
。正如评论所暗示的那样,当此设置设置为 true
时,任何插入原始制表符的尝试都会被转换为一定数量的空格。
因此,在这种情况下,即使是官方键绑定也不会插入原始制表符。
根据您喜欢插入文字选项卡的频率,您可以通过暂时打开和关闭该设置来解决此问题,但这远非理想,即使从状态栏中的菜单切换设置也是如此.
由于 Sublime 是如此可定制,我们可以让它自动为我们完成这项工作。
首先,创建一个包含以下内容的文件并将其作为 literal_tab.sublime-macro
保存在您的 User
包中(使用 Preferences > Browse Packages...
查找您的 User
包,如果你不确定它在哪里):
[
{ "command": "toggle_setting", "args": { "setting": "translate_tabs_to_spaces" } },
{ "command": "insert", "args": { "characters": "\t" } },
{ "command": "toggle_setting", "args": { "setting": "translate_tabs_to_spaces" } }
]
然后,将以下两个键绑定添加到您的用户绑定(菜单中的 Preferences > Key Bindings
;如果有多个选项,请选择 User
而不是 Default
):
{
"keys": ["ctrl+k","tab"],
"command": "insert",
"args": {
"characters": "\t"
},
"context":
[
{ "key": "setting.translate_tabs_to_spaces", "operator": "equal", "operand": false }
]
},
{
"keys": ["ctrl+k","tab"],
"command": "run_macro_file",
"args": {
"file": "Packages/User/literal_tab.sublime-macro"
},
"context":
[
{ "key": "setting.translate_tabs_to_spaces", "operator": "equal", "operand": true }
]
}
两个绑定都包含一个上下文,根据 translate_tabs_to_spaces
设置的值导致它触发或不触发,因此在任何给定时间只有其中一个有效,另一个自动禁用.
第一种绑定是针对关闭设置的情况,这种情况下只需要插入一个制表符就可以了。第二种情况改为从上面运行我们的自定义宏,它关闭设置,插入选项卡,然后再次打开设置。
理论上,如果您始终打开缩进设置,您实际上只需要第二个,但由于最小意外原则,最好将其设置为无论设置如何都可以工作。
当然你可以使用你想要的任何击键(我也习惯了vim的这个),宏文件的名称无关紧要,只要它具有正确的名称即可扩展名,它匹配绑定尝试执行的内容。
注意:虽然您在问题中提到了 Sublime Text 3,但您也标记了 Sublime Text 2,因此为了完整起见,我还会注意到此处提供的信息和解决方案同样适用于两个版本。