你能在 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}).+
它将是可导航和按需的。
在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}).+
它将是可导航和按需的。