2017-07-19 170 views
2

假設我有一些字符串,X,並且我希望將它包含在其他一些字符串中,例如像這樣:\emph{X}。是否有一些工具可以讓我快速執行此操作,例如,通過選擇文本並按下鍵盤上的快捷鍵?我正在macOS Sierra的Sublime文本中工作。自動將字符串放入另一個字符串中?

+0

如果您使用的是LaTeXTools,您可以按Cl,Ce以'\ emph'包裝所選文本,請參閱https://latextools.readthedocs.io/en/latest/keybindings/#wrapping-existing-text-in -commands-and-environments(我猜LaTeXing和LaTeXBox有類似的鍵綁定)。 –

回答

3

這是直接在Sublime內使用插入片段的鍵綁定的可能性,其中片段正文被告知包括當前選擇的文本。

對於上例中的以下示例,以下按鍵綁定會將所選內容包裝在\emph{}中。我用Super + W進行我自己的測試,但是你可能想爲自己的目的選擇更好的東西。

{ 
    "keys": ["super+w"], 
    "command": "insert_snippet", 
    "args": {"contents": "\\emph{${0:$SELECTION}}"}, 
    "context": [ 
     { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }, 
    ] 
}, 

context此處列入使得鍵綁定唯一有效的,同時至少一個字符選擇的所有光標的都有。如果需要,您可以完全刪除context部分,在這種情況下,鍵綁定將插入代碼段並將光標留在大括號之間,或者根據所選內容的狀態來包裝所選內容。

如果你的代碼片段比這個更復雜並且涉及到了(比如多行),試圖把它的整個主體插入到鍵綁定中可能會帶來一點負擔。在這種情況下,您可能想使用外部代碼片段。

要做到這一點,你可以從菜單中選擇Tools > Developer > New Snippet...,並使用代碼片段,如下面,你應該在的位置保存崇高默認爲:

<snippet> 
    <content><![CDATA[ 
\emph{${0:$SELECTION}} 
]]></content> 
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> 
    <!-- <tabTrigger>hello</tabTrigger> --> 
    <!-- Optional: Set a scope to limit where the snippet will trigger --> 
    <!-- <scope>source.python</scope> --> 
</snippet> 

有了這個到位,從上面的鍵綁定需要修改告訴insert_snippet命令插入與特定文件名的片段,而不是與原始內容:

{ 
    "keys": ["super+w"], 
    "command": "insert_snippet", 
    "args": {"name": "Packages/User/emph.sublime-snippet"}, 
    "context": [ 
     { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }, 
    ] 
}, 

件事需要注意的是,關鍵綁定文件是JSON,等等繼續片段的腳本需要稍微調整以使其有效JSON。在上面的例子中,這意味着使用\\而不是僅僅使用\來指定\emph

片段一般也有它們自己的特殊字符,所以如果您需要插入$您需要引用它作爲\$以便Sublime知道您的意思;無論代碼段是在代碼片段文件還是內聯代碼中,情況都是如此。

有關鍵綁定和片段的更多信息可以在Unofficial Documentation中找到,以獲取有關它們可能的一切的更完整圖片。

+0

很好的答案,謝謝!這兩個鍵綁定和片段對我來說都是未知的功能。我一定會從這裏進一步探索這些! – Speldosa

相關問題