【问题标题】:Automatically select pasted text in Sublime Text 3在 Sublime Text 3 中自动选择粘贴的文本
【发布时间】:2017-10-31 20:37:49
【问题描述】:

有什么办法,插件,宏什么的,可以让Sublime Text 3自动选择刚刚粘贴的文字吗?

我需要复制和粘贴一些 JSON 数据,但粘贴的文本与周围的文本始终不一致。粘贴和缩进 - 功能不能正常工作。

有效的是重新缩进功能,但它需要我选择一个文本块并按下热键。所以粘贴后我会受益于自动选择刚刚粘贴的文本块,所以我可以按 reindent 热键正确缩进我粘贴的内容。

另外,如果我可以将整个过程绑定到一个热键,那就更好了,所以:

  • 选择文字
  • 复制
  • 按一些自定义热键运行宏(?)
  • 此宏用于粘贴文本、选择粘贴的文本并运行重新缩进热键 (*)

*所以基本上我想做一个键绑定,比如 ctrl+shift+b 来执行以下操作:

  • ctrl+v
  • 不知何故选择粘贴的文本
  • ctrl+shift+f

【问题讨论】:

    标签: macros editor sublimetext3 sublimetext


    【解决方案1】:

    您可以创建一个插件来执行此操作,并使用键绑定执行它:

    • 从工具菜单 -> 开发人员 -> 新插件...
    • 全选并替换为以下内容
    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')
    
    • 保存它,在 ST 建议的文件夹中 (Packages/User/) 类似于 paste_and_reindent.py
    • 将以下内容添加到您的用户键绑定{ "keys": ["ctrl+shift+b"], "command": "paste_and_reindent" },

    请注意,Ctrl+Shift+B 将替换“Build With”的默认绑定。

    它是如何工作的:

    • 当按键绑定被按下时,它会运行插件中创建的新命令
    • 这会存储当前的文本选择位置
    • 然后它执行粘贴操作
    • 然后它获取新的文本插入符号位置
    • 然后它将旧位置与新位置进行比较,并选择粘贴的文本
    • 然后它运行reindent 命令

    您可以在重新缩进之前和之后对选择进行另一次比较,然后再次清除选择(通过将文本插入符号重新定位到选择的末尾 - 即粘贴后的默认行为)。

    【讨论】:

    • 像魅力一样工作,只需一分钟即可完成您的建议,谢谢!
    【解决方案2】:

    在 MacOS 上,您可以添加:

    "find_selected_text": true

    到 Sublime Text->Preferences->Settings(用户设置视图)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多