【问题标题】:Is there a way to display and search all configured keyboard shortcuts in sublime 3?有没有办法在 sublime 3 中显示和搜索所有配置的键盘快捷键?
【发布时间】:2016-03-21 12:31:45
【问题描述】:

sublime text 3 中确实缺少两个功能:

  • 功能齐全的集成终端 - 就像在 geany 中一样(是的,我知道 Glue,但它的功能不像普通终端)
  • 可搜索显示所有包所有当前活动的、已配置的键盘快捷键,并带有简短描述和包名称。

虽然我可以不用前者(但很想在这个方向上发表评论),但我怀疑有一些功能或用户脚本/插件可以完成后者。我只是找不到任何东西。我真的厌倦了查看许多数据包的相当神秘的文本配置文件,只是为了找出捷径被另一个包的捷径覆盖。愿意帮忙吗?

【问题讨论】:

    标签: search keyboard-shortcuts sublimetext3 text-editor


    【解决方案1】:

    虽然 Keith Hall 的 answer 运行良好,但 Package Control 中已经有一个具有许多功能的插件:FindKeyConflicts by skuroda。您可以搜索所有键映射、所有冲突、直接冲突、重叠冲突、单个包冲突(都在一个包中),还有一个非常有用的:多个包冲突,您可以在其中选择您怀疑有冲突的包并仅测试他们。当您安装了 LaTeXToolsEmmet 之类的软件包并安装了大约一百万个键组合(这对他们没有冒犯,我喜欢这些软件包)并且您知道问题不存在时,这非常有用。

    【讨论】:

      【解决方案2】:

      关于所有当前活动键盘快捷键的可搜索显示,您可以轻松创建一个插件来执行此操作:

      • Tools 菜单 -> Developer -> New Plugin
      • 将模板的内容替换为以下内容:

        import sublime, sublime_plugin
        
        class ShowMappedKeysCommand(sublime_plugin.TextCommand):
            def run(self, edit):
                files = sublime.find_resources('*.sublime-keymap')
        
                items = []
                for file in files:
                    contents = sublime.load_resource(file)
                    mapped = sublime.decode_value(contents)
        
                    for mapping in mapped:
                        items.append((file, mapping['keys'], mapping['command']))
        
                self.view.window().run_command('new_file')
                view = self.view.window().active_view()
                view.insert(edit, 0, '\n'.join(repr(item) for item in items))
        
      • 将其保存在默认文件夹中,将其命名为show_mapped_keys.py

      然后你可以将一个键映射到新创建的show_mapped_keys 命令,或者直接从 Sublime 控制台执行它(View 菜单 -> Show Console -> sublime.active_window().active_view().run_command('show_mapped_keys')

      这将创建一个新选项卡,其中包含所有活动的已配置键盘绑定列表,显示它的定义位置(即它所属的包或您的用户键绑定文件)、键是什么以及名称键绑定将执行的命令。然后可以正常搜索。

      显然,如果有冲突,这不会告诉你哪个优先。找出这一点的一种方法是在尝试相关键绑定之前在控制台中执行sublime.log_commands(True),然后查看执行了哪个命令。

      【讨论】:

      • 请注意,Tools->Developer 菜单目前仅在开发版本中可用。
      • 老兄,这是金子!我正计划这样做,但它被其他一些项目积压了。知道在输出中包含 args 的任何方法吗?我尝试添加mapping['args'],但它删除了KeyError
      • @Enteleform 我猜不是所有的键映射都有参数,所以你可以做mapping.get('args', None),如果args键不存在,它将输出None,否则@987654338 @ :)
      • 太棒了,谢谢!在我整理完一些东西后,可能会尝试解决这个问题。拥有一个带有子 QuickPanel 每个 sublime-keymap 的 QuickPanel 真是太棒了,这样您就可以快速了解您的绑定
      • @Enteleform from MattDMo's answer,听起来 FindKeyConflicts 包值得一看,也许它已经可以显示该格式的绑定了 :)
      猜你喜欢
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      相关资源
      最近更新 更多