在Sublime Text中,有没有办法可以将选定的文本提取到单独的文件中?
我经常在LaTeX中这样做。请考虑以下文件:
main.tex
\section{Introduction}
...
...
\section{Conclusion}
我希望能够选择从Introduction
开始直到Conclusion
之前一行的文本,右键单击然后说“Extract to file”(有点类似于“Extract method”的方式)适用于Visual Studio)。有没有办法使用任何快捷方式实现这一目标?
奖励:提取完成后,将提取的文本替换为自定义文本,例如\input{introduction}
,其中introduction
是文本提取到的文件的名称
答案 0 :(得分:1)
没有任何内置功能,但使用插件很容易实现。请注意,以下是经过最低限度测试的,并且不会处理ST中的所有内容。话虽如此,它应该是你开始的良好基础。为了安全起见,我将所有东西都扔进了当地的git repo,然后再使用它。讨厌这会导致失去工作。我将要替换的内容复制到剪贴板只是为了安全,但如果您对此有信心,可以删除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"}
]