рдореБрдЭреЗ рдХреБрдЫ VT100 рдПрд╕реНрдХреЗрдк рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ:
рдЖрдорддреМрд░ рдкрд░, рдПрдХ VT100 рдЯрд░реНрдорд┐рдирд▓ рдХреЛ рдХрд░реНрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП ,
рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХрд░реНрд╕рд░ рд▓рд┐рдЦрддреЗ рд╕рдордп рд╡рд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рдереЗ, рдореИрдВрдиреЗ рдЕрдиреНрдп VT100 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╕реЗрд╡/рд░рд┐рд╕реНрдЯреЛрд░ рдПрд╕реНрдХреЗрдк рд╕реАрдХреНрд╡реЗрдВрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ:
рдореИрдВ рдиреАрдЪреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛, рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЛ!
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ VT100 рдПрд╕реНрдХреЗрдк рдЕрдиреБрдХреНрд░рдо рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:
\x1b[0m (attributes off)
\x1b[1;1f (reset origin)
\x1b[2J (clear)
\x1b7 (save cursor state)
\x1b[7m (set negative color)
<colored> (just some output)
\x1b8 (restore cursor state)
<should not be colored>\n\r (another output - will be printed in negative color in xtermjs)
xtermjs рдХреЗ рд╕рд╛рде, "рд░рдВрдЧреАрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рд░рдВрдЧреАрди рд╣реИ
xterm.write('\x1b[0m\x1b[1;1f\x1b[2J\x1b7\x1b[7m <colored>\x1b8<should not be colored>\n\r');
// will print:
// "<should not be colored> <colored>"
рдПрдХ рдмреИрд╢ рдореЗрдВ, "рд░рдВрдЧреАрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" рд░рдВрдЧреАрди рдирд╣реАрдВ рд╣реЛрдЧрд╛
printf '\x1b[0m\x1b[1;1f\x1b[2J\x1b7\x1b[7m <colored>\x1b8<should not be colored>\n\r'
# will print
# "<should not be colored> <colored>"
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬрд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ hterm рдХрд░реНрд╕рд░ рдХреЛ рд╕реЗрд╡/рд░рд┐рд╕реНрдЯреЛрд░ рдХреИрд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИ
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ :
рд╕рднреА рд╡рд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ (fg рд░рдВрдЧ, bg рд░рдВрдЧ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдореЛрдб: рдмреЛрд▓реНрдб, рдЗрдЯреИрд▓рд┐рдХ, рдирдХрд╛рд░рд╛рддреНрдордХ, ..) 'рдЯрд░реНрдорд┐рдирд▓' рд╡рд░реНрдЧ рдХреА 'curAttr' рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╕рд╣реЗрдЬрдирд╛ рд╕рднреА рд╡рд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡реАрдЯреАрдИ рднреА рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рд╣реБрдЖ рдХрд░рддреА рдереА; рд╢рд╛рдпрдж рдЖрдкрдХреЛ VTE 731205 рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдЯреНрд╕
@ 7PH рдЪреВрдВрдХрд┐ рдЖрдк рд╡реИрд╕реЗ рднреА DECSC рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЖрдк https://vt100.net/docs/vt510-rm/DECSC.html рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЕрднреА рднреА рдЧрд╛рдпрдм рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рднреА рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдирд╣реАрдВ рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреАрдЬреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рднреА рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рд╢рд╛рдпрдж ICursorState
рд╕реНрдЯреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреИрд╕реЗ рдХреБрдЫ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреАрдЖрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдФрд░ рдмрд╛рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ https://github.com/xtermjs/xterm.js/issues/1526 рдкрд░ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрджрд┐ рдирд╣реАрдВ рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪреАрдЬреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рднреА рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рд╢рд╛рдпрдж
ICursorState
рд╕реНрдЯреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреИрд╕реЗ рдХреБрдЫ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред