你能在 sublime text 中突出显示一定长度后的字符吗?

Can you highlight a character after a certain length in sublime text?

在VIM中,只有当行超过一定长度时才可以突出显示一个字符,例如:

这可以在 Sublime Text 2 或 3 中完成吗?我知道有一个显示标尺的设置,但我发现它们有时会让人分心。

您可以扩展(复制-重命名并使用)语法突出显示并添加针对此特定情况的规则!

您可以添加与此类似的正则表达式:

    <key>charAt</key>
    <dict>
        <key>patterns</key>
        <array>
            <dict>
                <key>match</key>
                <string>(?<=^.{21})(.)</string>
                <key>name</key>
                <string>invalid.illegal.bad-comments-or-CDATA.html</string>
            </dict>
        </array>
    </dict>

其中 21 是要突出显示的位置

javiervd

Can this be done in Sublime Text 2 or 3?



保存以下脚本@:
/Packages/Highlight Long Lines/highlight_long_lines.py

import sublime, sublime_plugin

class highlight_long_lines( sublime_plugin.EventListener ):
    def on_modified_async( self, view ):


        #▒▒▒▒▒▒▒▒  Settings  ▒▒▒▒▒▒▒▒#
        maxLength           = 80
        scope               = "Invalid"
        firstCharacter_Only = False



        view.erase_regions( "LongLines" )

        indentationSize     = view.settings().get( "tab_size" )
        indentation_IsSpace = view.settings().get( "translate_tabs_to_spaces" )

        document    = sublime.Region( 0, view.size() )
        lineRegions = view.lines( document )

        invalidRegions = []

        for region in lineRegions:

            text             = view.substr( region )
            text_WithoutTabs = text.expandtabs( indentationSize )

            if text_WithoutTabs.isspace():
                tabOffset = 0
            else:
                tabCount      = text.count( "   " )
                tabDifference = len( text_WithoutTabs ) - len( text )
                tabOffset     = tabDifference

            lineLength = ( region.end() - region.begin() ) - tabOffset
            if lineLength > maxLength:

                highlightStart = region.begin() + ( maxLength - tabOffset )

                if firstCharacter_Only == True:
                    highlightEnd = highlightStart + 1
                else:
                    highlightEnd = region.end()

                invalidRegion = sublime.Region( highlightStart, highlightEnd )
                invalidRegions.append( invalidRegion )

        if len( invalidRegions ) > 0:
            view.add_regions( "LongLines", invalidRegions, scope )


变量设置:

maxLength 影响行之后突出显示的长度。

scope 影响突出显示区域的颜色。
您可以使用活动 .tmTheme 文件中的任何范围(配色方案)。

firstCharacter_Only 影响突出显示区域的范围。
如果设置为True,则只高亮第81位的字符。
如果设置为False,第80位之后的所有字符将被高亮。

您可以只搜索这个正则表达式:

(?<=.{80}).+

它将是可导航和按需的。