你可以在崇高文本中突出一定长度的角色吗?

时间:2016-06-16 09:28:46

标签: sublimetext2 sublimetext3 sublimetext sublime-text-plugin

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

Highlight column on VIM

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

3 个答案:

答案 0 :(得分:2)

  

javiervd

     

可以在Sublime Text 2或3中完成吗?

Demo

保存以下脚本@:
/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个位置后的所有字符都将突出显示。

答案 1 :(得分:1)

您可以搜索此正则表达式:

(?<=.{80}).+

它可以导航和点播。

答案 2 :(得分:-1)

您可以扩展(复制 - 重命名和使用)语法高亮显示并添加具有此特定情况的规则!

你可以添加一个与此类似的正则表达式:

    <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是要突出显示的位置