في الإصدار 3 الحالي ، يبدو أن Emojis يشغل خليتين. باستخدام مفاتيح الأسهم ، يتم القفز على خليتين بدلاً من خلية واحدة. يؤدي الحذف أيضًا إلى مسح خليتين.
لا يمكنني إعادة إنتاج هذا على macOS / bash. لا أتوقع حدوث ذلك ما لم نحاول تعديل عرض الرموز التعبيرية (اجعله غير 1). أي مزيد من التفاصيل حول خطوات repro ستكون مفيدة.
إعادة إنتاج (OSX ، MacOS High Sierra)
هل أنت بالفعل على MacOS High Sierra ، لأنني كذلك؟ ربما يكون مرتبطًا أيضًا بـ node-pty - أستطيع أن أرى أنه عند إدراج رمز تعبيري في Terminal.app
فإنه يضيف تلقائيًا مسافة بعد الرمز التعبيري ، وحتى أكثر من ذلك ، لا يمكنني تحديد هذه المساحة ، يبدو الأمر كما لو أن High Sierra قد يهدد إنها كحرف مزدوج العرض ...
Terminal.app على MacOS High Sierra
قد يكون هذا شيئًا مرتفعًا في سييرا حيث حاولوا جعل Emojis أفضل في المحطة؟ لا يمكنني التحديث حاليًا لأنه يفسد العرض في تطبيقات Electron.
أكره أن أقول إنني قمت بالترقية وأنا الآن عالق مع الكثير من مواطن الخلل في العرض في كل تلك التطبيقات القائمة على الكروم 😤
نعم كنت حريصًا على تتبع التعليقات قبل التحديث حيث حدثت أشياء مماثلة مع Sierra على ما أعتقد.
لاحظت أن تطبيق Terminal.app يتمتع بتجربة إيموجي لطيفة حيث يتم التعامل معهم على أنهم شخصيات عريضة مناسبة ، وربما يمكننا فعل ذلك إذا كان بإمكانهم ذلك 😄
عرض UAX # 11 شرق آسيا ، والمراجعة wcswidth
في wchar.h ترجع عرض السلاسل. أعتقد أن macOS High Sierra كان سيدعم التحديث.
xterm.js's wcwidth
in src/CharWidth.ts
لم يدعمه حتى الآن.
@ mandel59 شكرا على المعلومات!
@ mandel59 أعتقد أن هذه المشكلة خاصة
المرجع: https://github.com/gnachman/iTerm2/blob/master/sources/NSCharacterSet+iTerm.m لديه بعض حلول الخرائط أيضًا.
مشكلة رمز VS: https://github.com/Microsoft/vscode/issues/59145
يبدو أن الركض الرفرفة يدل على هذا السلوك
في ما يلي نموذج Dart صغير لما نراه لا يتطلب Flutter (لا يتطلب Dart على الرغم من ذلك):
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 القياسية يزيل الحرف بشكل صحيح. ومع ذلك ، في محطة VS Code ، ستعمل على الضغط للخلف على الرموز التعبيرية ثم حرف آخر. إذا كان الرمز التعبيري في بداية السطر ، فلن يفعل ذلك شيئًا ، ولكن إذا لم يكن كذلك ، فإن العرض يزحف ببطء إلى اليسار بواسطة حرف (ويترك النصف الأيمن من الرمز بعده).
إذا قمت بإزالة * _animation[0].length
من مسافة للخلف بحيث تقوم دائمًا بعمل مسافة للخلف واحدة ، فإنها تعمل بشكل جيد في محطة VS Code ، ولكن لم تعد مسافات للخلف كافية في macOS Terminal (لذلك تزحف الأقمار إلى اليمين !).
ينطبق أيضًا على العبرية / العربية كما هو مذكور في https://github.com/Microsoft/vscode/issues/60470
يواجه VSCode 1.31.1 على Ubuntu 18.04 هذه المشكلة.
عندما تقوم بالتمرير لأعلى أو لأسفل في سجل الأوامر الخاص بك باستخدام مفاتيح الأسهم ، يتم التقاط العناصر الأثرية بحيث عندما تصل إلى أمر تريد تشغيله ، فمن المحتمل أن تكون غير مقروءة.
أيضًا ، بعد التقاط قطعة أثرية ، يعد تحرير الأمر عربات التي تجرها الدواب ، نظرًا لأن ما يتم عرضه يختلف عما هو موجود في الذاكرة في xterm.
خطوات:
تمت إضافة رمز تعبيري إلى موجه الأوامر الخاص بي:
ضرب السهم لأعلى مرة واحدة للحصول على الأمر npm i
لاحظ المارقة n
التي تمت إضافتها إلى الموجه.
أزل الرموز التعبيرية من المطالبة في .bashrc
وأعد تحميل المصطلح وسيختفي الخطأ.
أول الأشياء أولاً ، أردت أن أشكركم يا رفاق على عملكم الرائع.
يواجه VSCode 1.31.1 على macOS Mojave 10.14.3 نفس التجربة. الشيء n
الذي ذكره @ Juliusecker يحدث لي أيضًا ، تمامًا كما وصفه.
لدي نفس الخطأ كما ذكرهjuliusecker.
إصدار VSCode 1.33.1 (1.33.1) 51b0b28134d51361cf996d2f0a1c698247aea definitely 2019-04-11T08: 14: 39.158Z
إصدار النظام: macOS 10.14.4 (18E226)
zsh 5.7.1 (x86_64-apple-darwin17.7.0)
من السهل جدًا إعادة إنتاجه في VSCode و Powershell.
"Emoji Normal"
"😊1😊2😊3😊4"
"Emoji with Padding Spaces - What it should look like"
"😊 1😊 2😊 3😊 4"
هل هناك أي موارد مخصصة لهذا العنصر؟ يبدو أن هناك الكثير من الانحدارات في البرامج الأخرى (Hyper ، إلخ) كما هو موضح في سلسلة المحادثات هذه.
jerch هل هذه نسخة مكررة من https://github.com/xtermjs/xterm.js/issues/1709؟
Tyriar نعم كيندا ، هذا مجرد مثال حيث من المرجح أن يواجهه ppl - Emojis: smile_cat:
أعتقد أننا سنبقيهما مفتوحين لأن هذا يصف المشكلة جيدًا وأن رقم 1709 ينظر أكثر إلى الحل ، بالإضافة إلى أن هذا واحد لديه مجموعة من الأصوات المؤيدة.
يمكن نسخه في نظام التشغيل Windows 10 ، الإصدار التالي:
ما ورد أعلاه هو ما أراه في محطة بناء كود VS ،
ما ورد أعلاه هو ما أراه عند فتح نفس النص في ملف نصي في رمز VS.
كانت القضية حوالي عامين ، أي تحديث؟
يريد jerch الوصول إليه قريبًا ، إلا أنه يمتلك مجموعة من أجهزة الصراف الآلي الجارية. كان أحد أكبر حاصرات هذا النظام هو النظام الإضافي الجديد الذي تم إصداره الآن.
الإغلاق لصالح https://github.com/xtermjs/xterm.js/issues/1709 لأنهما في الأساس نفس الشيء ونريد إبقاء مشكلتنا في العد التنازلي.
التعليق الأكثر فائدة
يواجه VSCode 1.31.1 على Ubuntu 18.04 هذه المشكلة.
عندما تقوم بالتمرير لأعلى أو لأسفل في سجل الأوامر الخاص بك باستخدام مفاتيح الأسهم ، يتم التقاط العناصر الأثرية بحيث عندما تصل إلى أمر تريد تشغيله ، فمن المحتمل أن تكون غير مقروءة.
أيضًا ، بعد التقاط قطعة أثرية ، يعد تحرير الأمر عربات التي تجرها الدواب ، نظرًا لأن ما يتم عرضه يختلف عما هو موجود في الذاكرة في xterm.
خطوات:
تمت إضافة رمز تعبيري إلى موجه الأوامر الخاص بي:
ضرب السهم لأعلى مرة واحدة للحصول على الأمر
npm i
لاحظ المارقة
n
التي تمت إضافتها إلى الموجه.أزل الرموز التعبيرية من المطالبة في
.bashrc
وأعد تحميل المصطلح وسيختفي الخطأ.