有什么方法、插件、宏或其他东西可以让 Sublime Text 3 自动选择刚刚粘贴的文本吗?
我需要复制和粘贴一些 JSON 数据,但粘贴的文本永远不会与周围的文本一致。粘贴和缩进 - 功能不能正常工作。
起作用的是 reindent 功能,但它需要我选择一个文本 block 并按下热键。因此,在粘贴之后,我将受益于自动选择刚刚粘贴的文本 block ,因此我只需按下 reindent 热键即可正确缩进我粘贴的内容。
此外,如果我可以将整个过程绑定(bind)到一个热键,那就更好了,所以:
*所以基本上我想做一个键绑定(bind),比如 ctrl+shift+b 来执行以下操作:
最佳答案
您可以创建一个插件来执行此操作,并使用键绑定(bind)执行它:
import sublime
import sublime_plugin
class PasteAndReindentCommand(sublime_plugin.TextCommand):
def run(self, edit):
before_selections = [sel for sel in self.view.sel()]
self.view.run_command('paste')
after_selections = [sel for sel in self.view.sel()]
new_selections = list()
delta = 0
for before, after in zip(before_selections, after_selections):
new = sublime.Region(before.begin() + delta, after.end())
delta = after.end() - before.end()
new_selections.append(new)
self.view.sel().clear()
self.view.sel().add_all(new_selections)
self.view.run_command('reindent')
Packages/User/
),例如 paste_and_reindent.py
{ "keys": ["ctrl+shift+b"], "command": "paste_and_reindent" },
请注意,Ctrl+Shift+B 将替换“Build With”的默认绑定(bind)。
这个怎么运作:
reindent
命令 您可以通过在重新缩进之前和之后再次比较选择来让它再次清除选择(通过将文本插入符号重新定位到选择的末尾 - 即粘贴后的默认行为)。
关于macros - 在 Sublime Text 3 中自动选择粘贴的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44278012/