macros - 在 Sublime Text 3 中自动选择粘贴的文本

标签 macros editor sublimetext3 sublimetext

有什么方法、插件、宏或其他东西可以让 Sublime Text 3 自动选择刚刚粘贴的文本吗?

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

起作用的是 reindent 功能,但它需要我选择一个文本 block 并按下热键。因此,在粘贴之后,我将受益于自动选择刚刚粘贴的文本 block ,因此我只需按下 reindent 热键即可正确缩进我粘贴的内容。

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

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

  • *所以基本上我想做一个键绑定(bind),比如 ctrl+shift+b 来执行以下操作:
  • ctrl+v
  • 不知何故选择粘贴的文本
  • ctrl+shift+f
  • 最佳答案

    您可以创建一个插件来执行此操作,并使用键绑定(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')
    
  • 将其保存在 ST 建议的文件夹中( Packages/User/ ),例如 paste_and_reindent.py
  • 将以下内容添加到您的用户键绑定(bind) { "keys": ["ctrl+shift+b"], "command": "paste_and_reindent" },

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

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

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

    关于macros - 在 Sublime Text 3 中自动选择粘贴的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44278012/

    相关文章:

    c - 错误: expected statement before ‘)’ token in C macro

    c++ - c/c++编译时 "compatibility"检查

    php - php 开发理想的 vim 配置是什么?

    c# - 创建 'Custom Designer' Visual Studio 2010 加载项

    replace - 如何删除 Sublime Text 3 中的 <0x00> 字符?

    emacs - emacs 上的自定义评论框

    c++ - 这是在我的程序中嵌入调试消息的好方法吗? (宏)

    c++ - C++中文本编辑器的链接列表

    visual-studio-code - 在 vscode 中仅查看打开的文件而不是选项卡

    sublimetext3 - Sublime Text 3,如何添加右键?