Xterm.js: рдЗрдореЛрдЬреАрд╕/рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ (рджреЛрдЧреБрдиреА рдЪреМрдбрд╝рд╛рдИ рдорд╛рдиреА рдЧрдИ?)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдЕрдХреНрддреВре░ 2017  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: xtermjs/xterm.js

рд╡рд░реНрддрдорд╛рди v3 рдореЗрдВ, рдЗрдореЛрдЬреА рджреЛ рд╕реЗрд▓ рд▓реЗрддреЗ рд╣реИрдВред рддреАрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдПрдХ рдХреЗ рдмрдЬрд╛рдп рджреЛ рдХрдХреНрд╖реЛрдВ рдХреЛ рдЬрдВрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд┐рд▓реАрдЯ рдХрд░рдиреЗ рд╕реЗ рджреЛ рд╕реЗрд▓ рднреА рд╕рд╛рдл рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

kapture 2017-10-12 at 18 34 05

arerenderer duplicate typbug

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

Ubuntu 18.04 рдкрд░ VSCode 1.31.1 рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдЖрдк рддреАрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред

рд╕рд╛рде рд╣реА, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ xterm рдХреА рдореЗрдореЛрд░реА рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдХрджрдо:

рдореЗрд░реЗ рд╕рдВрдХреЗрдд рдореЗрдВ рдПрдХ рдЗрдореЛрдЬреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
screenshot from 2019-02-21 11-10-15
npm i рдЖрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдКрдкрд░ рддреАрд░ рджрдмрд╛рдПрдВ
screenshot from 2019-02-21 11-10-55

рдЙрд╕ рджреБрд╖реНрдЯ n рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрдореЛрдЬреА рдХреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ .bashrc рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЯрд░реНрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдмрдЧ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕рднреА 24 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕реЗ macOS/bash рдкрд░ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореИрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЗрдореЛрдЬреА рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ (рдЗрд╕реЗ рдЧреИрд░ -1 рдмрдирд╛ рджреЗрдВ)ред рд░реЗрдкреНрд░реЛ рдЪрд░рдгреЛрдВ рдкрд░ рдХреЛрдИ рдФрд░ рд╡рд┐рд╡рд░рдг рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдкреБрдирд░реБрддреНрдкрд╛рджрди (рдУрдПрд╕рдПрдХреНрд╕, рдореИрдХреЛрдЬрд╝ рд╣рд╛рдИ рд╕рд┐рдПрд░рд╛)

  • v3 рдбреЗрдореЛ рд╢реБрд░реВ рдХрд░реЗрдВ
  • рдкреЗрд╕реНрдЯ ЁЯША рдХрдИ рдмрд╛рд░
  • рдмрд╛рдПрдВ рддреАрд░ рдХреБрдВрдЬреА рдХреЛ рдХрдИ рдмрд╛рд░ рд╣рд┐рдЯ рдХрд░реЗрдВ, рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╣рд░ рдмрд╛рд░ рджреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдХреВрджрддрд╛ рд╣реИ рдФрд░ рд╕реЗрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА MacOS High Sierra рдкрд░ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣реВрдВ? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреЛрдб-рдкреАрдЯреАрдЖрдИ рд╕реЗ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ - рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ Terminal.app рдореЗрдВ рдЗрдореЛрдЬреА рдбрд╛рд▓рдиреЗ рдкрд░ рдпрд╣ рдЗрдореЛрдЬреА рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдерд╛рди рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рдореИрдВ рдЙрд╕ рд╕реНрдерд╛рди рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдпрд╣ рд╣рд╛рдИ рд╕рд┐рдПрд░рд╛ рдХреА рддрд░рд╣ рдЦрддрд░рд╛ рд╣реЛрдЧрд╛ рдЗрд╕реЗ рдбрдмрд▓-рдЪреМрдбрд╝рд╛рдИ рд╡рд╛рд▓реЗ рд╡рд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ...

MacOS рд╣рд╛рдИ рд╕рд┐рдПрд░рд╛ рдкрд░ Terminal.app
kapture 2017-10-13 at 22 55 32

рдпрд╣ рдПрдХ рдЙрдЪреНрдЪ рд╕рд┐рдПрд░рд╛ рдЪреАрдЬ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдореЛрдЬрд┐рд╕ рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА? рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдРрдкреНрд╕ рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдХрд╣рдиреЗ рд╕реЗ рдирдлрд░рдд рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдореИрдВ рдЙрди рд╕рднреА рдХреНрд░реЛрдорд┐рдпрдо рдЖрдзрд╛рд░рд┐рдд рдРрдкреНрд╕ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЧреНрд▓рд┐рдЪ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ

рд╣рд╛рдБ, рдореИрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреАрдбрдмреИрдХ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдПрд░рд╛ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реБрдЖ рдерд╛ред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ Terminal.app рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЗрдореЛрдЬреА рдЕрдиреБрднрд╡ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рд╡рд┐рд╕реНрддреГрдд рд╡рд░реНрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рд╢рд╛рдпрдж рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

UAX #11 рдкреВрд░реНрд╡ рдПрд╢рд┐рдпрд╛рдИ рдЪреМрдбрд╝рд╛рдИ, рд╕рдВрд╢реЛрдзрди 31 рдиреЗ рдЗрдореЛрдЬреА _рдИрд╕реНрдЯ рдПрд╢рд┐рдпрди рд╡рд╛рдЗрдб_ (рджреЛрд╣рд░реА-рдЪреМрдбрд╝рд╛рдИ) рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдФрд░ wcswidth wchar.h рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЪреМрдбрд╝рд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ macOS рд╣рд╛рдИ рд╕рд┐рдПрд░рд╛ рдиреЗ рдЕрдкрдбреЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред
xterm.js рдХреЗ wcwidth рдореЗрдВ src/CharWidth.ts рдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

@ mandel59 рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@ mandel59 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЗрдореЛрдЬреА рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрдЬреЗрдХреЗ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдбрдмрд▓ рдЪреМрдбрд╝рд╛рдИ рд╡рд░реНрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ https://github.com/xtermjs/xterm.js/issues/1387)

рд╕рдВрджрд░реНрдн: https://github.com/gnachman/iTerm2/blob/master/sources/NSCharacterSet+iTerm.m рдореЗрдВ рдХреБрдЫ рдореИрдкрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рднреА рд╣реИрдВред

рд╡реАрдПрд╕ рдХреЛрдб рдореБрджреНрджрд╛: https://github.com/Microsoft/vscode/issues/59145

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрдВрджрди рд░рди рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ

рд╣рдо рдЬреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рдбрд╛рд░реНрдЯ рд░реЗрдкреНрд░реЛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрдВрджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбрд╛рд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ):

import 'dart:async';

import 'dart:io';

// Windows console font has a limited set of Unicode characters.
final _animation = Platform.isWindows
    ? <String>[r'-', r'\', r'|', r'/']
    : <String>['ЁЯМХ', 'ЁЯМЦ', 'ЁЯМЧ', 'ЁЯМШ', 'ЁЯМС', 'ЁЯМТ', 'ЁЯМУ', 'ЁЯМФ'];
final _backspace = '\b' * _animation[0].length;

main() {
  int ticks = 0;
  void update(Timer timer) {
    if (ticks % 50 == 0) {
      stdout.write('\nDoing thing... ');
    }
    stdout.write('$_backspace${_animation[ticks++ % _animation.length]}');
  }

  new Timer.periodic(const Duration(milliseconds: 100), update);
}

.dart рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ dart xxx.dart рд╕рд╛рде рдЪрд▓рд╛рдПрдВред рдпрд╣ рдХреЛрдб рдпрд╣рд╛рдВ рдЗрд╕ рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП рджреЛ рдмреИрдХрд╕реНрдкреЗрд╕ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдорд╛рдирдХ macOS рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╡рд░реНрдг рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реАрдПрд╕ рдХреЛрдб рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдпрд╣ рдЗрдореЛрдЬреА рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ рдмреИрдХрд╕реНрдкреЗрд╕ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЗрдореЛрдЬреА рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдерд╛ рддреЛ рдпрд╣ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рдЪрд░рд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдИрдВ рдУрд░ рд░реЗрдВрдЧрддрд╛ рд╣реИ (рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдЗрдХрди рдХрд╛ рджрд╛рдпрд╛рдВ-рдЖрдзрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ)ред

рдЕрдЧрд░ рдореИрдВ рдмреИрдХрд╕реНрдкреЗрд╕ рд╕реЗ * _animation[0].length рд╣рдЯрд╛ рджреВрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдмреИрдХрд╕реНрдкреЗрд╕ рдХрд░реЗ, рддреЛ рдпрд╣ рд╡реАрдПрд╕ рдХреЛрдб рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдХреЛрдЬрд╝ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдмреИрдХрд╕реНрдкреЗрд╕ рдирд╣реАрдВ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЪрдВрджреНрд░рдорд╛ рджрд╛рдИрдВ рдУрд░ рд░реЗрдВрдЧрддреЗ рд╣реИрдВ !).

https://github.com/Microsoft/vscode/issues/60470 рдореЗрдВ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╣рд┐рдмреНрд░реВ/рдЕрд░рдмреА рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ

Ubuntu 18.04 рдкрд░ VSCode 1.31.1 рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдЖрдк рддреАрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдХрдорд╛рдВрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред

рд╕рд╛рде рд╣реА, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреЛрдИ рдЖрд░реНрдЯрд┐рдлрд╝реИрдХреНрдЯ рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ xterm рдХреА рдореЗрдореЛрд░реА рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдХрджрдо:

рдореЗрд░реЗ рд╕рдВрдХреЗрдд рдореЗрдВ рдПрдХ рдЗрдореЛрдЬреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
screenshot from 2019-02-21 11-10-15
npm i рдЖрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдКрдкрд░ рддреАрд░ рджрдмрд╛рдПрдВ
screenshot from 2019-02-21 11-10-55

рдЙрд╕ рджреБрд╖реНрдЯ n рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред

рдЗрдореЛрдЬреА рдХреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реЗ .bashrc рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЯрд░реНрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдмрдЧ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЪреАрдЬрд╝реЗрдВ, рдореИрдВ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдЕрджреНрднреБрдд рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

macOS Mojave рдкрд░ VSCode 1.31.1 10.14.3 рдРрд╕рд╛ рд╣реА рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИред @juliusecker рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд n рдЪреАрдЬ рдореЗрд░реЗ рд╕рд╛рде рднреА рд╣реЛрддреА рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕рд╛ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣реА рдмрдЧ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ @juliusecker рдиреЗ рдХрд┐рдпрд╛ рд╣реИред
VSCode рд╕рдВрд╕реНрдХрд░рдг 1.33.1 (1.33.1) 51b0b28134d51361cf996d2f0a1c698247aeabd8 2019-04-11T08:14:39.158Z
рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг: macOS 10.14.4 (18E226)
zsh 5.7.1 (x86_64-apple-darwin17.7.0)

VSCode рдФрд░ Powershell рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдЗрдореЛрдЬреАрдЯрд░реНрдорд┐рдирд▓рдЯреЗрд╕реНрдЯ.ps1

"Emoji Normal"
"ЁЯШК1ЁЯШК2ЁЯШК3ЁЯШК4"
"Emoji with Padding Spaces - What it should look like"
"ЁЯШК  1ЁЯШК  2ЁЯШК  3ЁЯШК  4"

image

рдХреНрдпрд╛ рдЗрд╕ рдордж рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрд╕рд╛рдзрди рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ (рд╣рд╛рдЗрдкрд░, рдЖрджрд┐) рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдЧрдорди рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИред

@jerch рдХреНрдпрд╛ рдпрд╣ https://github.com/xtermjs/xterm.js/issues/1709 рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ

@Tyriar рд╣рд╛рдБ рдереЛрдбрд╝реЗ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдБ рдкреАрдкреАрдПрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛ - рдЗрдореЛрдЬреАрд╕: рд╕реНрдорд╛рдЗрд▓_рдХреИрдЯ:

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрди рджреЛрдиреЛрдВ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдФрд░ #1709 рд╕рдорд╛рдзрд╛рди рдкрд░ рдЕрдзрд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдпрд╣ рдЕрдкрд╡реЛрдЯ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ 10, рдирд┐рдореНрди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рдпреЛрдЧреНрдп рд╣реИ:
image

image
рдЙрдкрд░реЛрдХреНрдд рд╡рд╣ рд╣реИ рдЬреЛ рдореИрдВ рд╡реАрдПрд╕ рдХреЛрдб рдмрд┐рд▓реНрдб-рдЗрди рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ,
image
рдЙрдкрд░реЛрдХреНрдд рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬрдм рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╣реА рдЯреЗрдХреНрд╕реНрдЯ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

@jerch рдЬрд▓реНрдж рд╣реА рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЪрд▓ рд░рд╣реЗ рдПрдЯреАрдПрдо рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рдирдпрд╛ рдПрдбрдСрди рд╕рд┐рд╕реНрдЯрдо рдерд╛ рдЬреЛ рдЕрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

https://github.com/xtermjs/xterm.js/issues/1709 рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЪреАрдЬ рд╣реИрдВ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдореБрджреНрджреЗ рдХреЛ рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕