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爲好,所以我完整性也將注意到,這裏提供的信息和解決方案適用於這兩個版本也同樣。