【问题标题】:Shortcut to Highlight Duplicates in Sublime Text 3在 Sublime Text 3 中突出显示重复项的快捷方式
【发布时间】:2014-08-13 07:07:29
【问题描述】:

因此,用于 sublime 文本的 highlighduplicate 插件似乎对我不起作用,所以我想创建自己的。我需要这个来识别重复项,所以它比 Sublime 的“Permute:Unique”更进一步

我创建了一个正则表达式:^(.*)(\r?\n\1)+$,它可以找到重复项,而且它似乎运行良好。

现在,我只需要快速的键盘快捷键来触发它。我尝试录制一个宏(使用 cmd+i),但经过多次尝试似乎也没有完成。

我知道 sublime 包是用 python 编写的,但我并不精通 Python。

我将如何编写这个插件/包?

谢谢,

【问题讨论】:

  • 很久没玩插件了。但至少,这里有一些提示。您可以安装AAAPackageDev,它将提供new plugin 命令,这将为您提供python 中的原始骨架。然后,您可以创建一个快捷方式来触发 python 命令。

标签: tabs sublimetext3


【解决方案1】:

突出显示重复项?我的插件适合你吗?或者我在这里误解了#_#

如果不是很适合你,可以查看代码,很简单~

CursorWordHighlighter

【讨论】:

    【解决方案2】:

    我为你修复了软件包,得到了here 并安装了这个新版本。
    如果您有任何问题,请告诉我,但显然它可以在我的笔记本电脑上运行。

    更详细一点,该文件存在两个问题。首先,ST API 中的更改导致对 add_regions() 的调用失败,python API 中也有关于 defaultDict 实现的更改。
    你可以看看我在 github 上所做的修改,或者这里是一个快速的 diff:

    diff --git a/hightlight_duplicates.py b/highlight_duplicates.py
    similarity index 91%
    rename from hightlight_duplicates.py
    rename to highlight_duplicates.py
    index 8351275..c2e6137 100644
    --- a/hightlight_duplicates.py
    +++ b/highlight_duplicates.py
    @@ -42,7 +42,9 @@ def filter_counts(counts, treshold=1):
         lower or equal to the treshold, which defaults to 1.
         '''
         filtered = dict()
    -    for k, v in counts.iteritems():
    +    # for k, v in counts.iteritems():
    +    for k in counts:
    +        v = counts[k]
             if len(v) > treshold:
                 filtered[k] = v
         return filtered
    @@ -60,11 +62,13 @@ def show_lines(regions, view):
         all_regions = []
         for r in regions:
             all_regions.extend(r)
    -    color_scope_name = settings.get('highlight_duplicates_color',
    +    color_scope_name = settings.get('highlight_duplicates_color', \
                                             DEFAULT_COLOR_SCOPE_NAME)
    -    view.add_regions('DuplicatesHighlightListener',
    -                        all_regions, color_scope_name,
    -                        sublime.DRAW_OUTLINED)
    +    view.add_regions('DuplicatesHighlightListener', \
    +                        all_regions, \
    +                        color_scope_name, \
    +                        "Packages/Theme - Default/dot.png", \
    +                        sublime.DRAW_NO_FILL)
    
    
     def highlight_duplicates(view):
    

    【讨论】:

    • 非常感谢分享这个 Xaelias。我试了一下,好像没用。这是控制台吐出的内容:`文件“/Applications/Sublime Text.app/Contents/MacOS/sublime_plugin.py”,第271行,on_modified callback.on_modified(v)文件“/Users/me/Library/Application Support/ Sublime Text 3/Packages/HighlightDuplicates-master/highlight_duplicates.py”,第 107 行,on_modified highlight_duplicates(view) 文件“/Users/me/Library/Application Support/Sublime Text 3/Packages/HighlightDuplicates-master/highlight_duplicates.py” ,第 81 行,在 highlight_duplicates 中
    • show_lines(duplicates.values(), view) 文件“/Users/me/Library/Application Support/Sublime Text 3/Packages/HighlightDuplicates-master/highlight_duplicates.py”,第 71 行,在 show_lines sublime.DRAW_NO_FILL) 文件“/Applications/Sublime Text.app/Contents/MacOS/sublime.py”,第 861 行,在 add_regions sublime_api.view_add_regions(self.view_id, key, region, scope, icon, flags) TypeError: String required
    • @user2544542 很奇怪,我没有收到此错误...您是否修改了设置文件?如果没有,您是否尝试过使用一个简单的文件(比如同一行的两倍?)。就是尝试找出导致这个问题的原因......我还对 git 存储库进行了轻微修改。试试看,也许就这么简单。
    猜你喜欢
    • 2015-11-27
    • 2014-03-07
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多