2

Sublime Text で、選択したテキストを別のファイルに抽出する方法はありますか?

私はこれをLaTeXでよく行います。次のファイルを検討してください。

main.tex

\section{Introduction}
...
...

\section{Conclusion}

Introductionから1 行前までのテキストを選択しConclusion、右クリックして「ファイルに抽出」と言うことができるようにしたい(「抽出方法」が Visual Studio で機能する方法と多少似ています)。ショートカットを使用してこれを達成する方法はありますか?

ボーナス: 抽出が完了したら、抽出されたテキストを、テキストが抽出されたファイルの名前が\input{introduction}どこにあるかなどのカスタム テキストに置き換えます。introduction

4

1 に答える 1

1

何も組み込まれていませんが、プラグインで簡単に実行できます。以下は最小限のテストであり、ST のすべてを適切に処理できないことに注意してください。そうは言っても、それはあなたが始めるための良いベースになるはずです. 安全のために、これをあまり使用する前に、すべてをローカルの git リポジトリに投入します。これが仕事の損失につながることを嫌います。安全のために、差し替えられる内容をクリップボードにコピーしますが、自信がある場合は削除できますsublime.set_clipboard(content)

import sublime
import sublime_plugin
import os
import re

class ExtractAndInput(sublime_plugin.TextCommand):
    def run(self, edit):
        view = self.view
        self.region = view.sel()[0]
        content = view.substr(self.region)
        sublime.set_clipboard(content)
        match = re.search(r"\\section{(.+?)}", content)
        if match:
            replace = "\\input{%s}" % match.group(1)
            view.replace(edit, view.sel()[0], replace)
            current = view.file_name()
            new_file = "%s.tex" % match.group(1)
            path = os.path.normpath(os.path.join(current, "..", new_file))
            with open(path, "a") as file_obj:
                file_obj.write("% Generated using ExtractAndInput Plugin\n")
                file_obj.write(content)

プラグインを保存したら、 へのキー バインディングを作成できますextract_and_input。次の内容Context.sublime-menuでを作成することにより、コンテキスト メニューを追加することもできます。Packages/User

[
    { "caption": "Extract to File", "command": "extract_and_input"}
]
于 2013-09-12T02:42:08.673 に答える