2

当使用文本崇高3,我的大部分文件被设置为使用空格缩进。不过,我有时希望插入一个文字标签。当我使用vim我会使用<按Ctrl > + V <标签>但是,这并不与崇高的文本3崇高的文本3插入制表符手动

我一直在寻找和搜索,并不能找到任何工作。请帮忙!

回答

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任何企图插入原始的制表符被转换到一些数量的空格来代替。

其结果是,即使官方的密钥绑定在这种情况下不插入原始的标签。

取决于你怎么在意也常常要插入文字标签中,您可以通过暂时打开,设置和关闭解决这个问题,但是这是很不理想,即使设置在状态栏上的菜单切换。

由于崇高是如此定制的,我们可以把它自动进入这样做,为我们工作。

首先,创建一个包含以下内容的文件,并在您User包保存为literal_tab.sublime-macro(使用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),和宏文件的名称,只要它具有正确的扩展并不重要,它匹配什么该绑定尝试执行。


注:虽然你在你的问题中提到崇高的文本3,你标记的崇高文字2为好,所以我完整性也将注意到,这里提供的信息和解决方案适用于这两个版本也同样。