Di v3 saat ini, Emoji tampaknya menggunakan dua sel. Dengan menggunakan tombol panah, dua sel akan dilompati, bukan satu. Menghapus juga menghapus dua sel.
Saya tidak dapat mereproduksi ini di macOS / bash. Saya tidak berharap itu terjadi kecuali kami mencoba menyesuaikan dengan lebar emoji (menjadikannya non-1). Rincian lebih lanjut tentang langkah-langkah repro akan berguna.
Reproduksi (OSX, MacOS High Sierra)
Apakah Anda sudah menggunakan MacOS High Sierra, karena saya? Mungkin juga terkait dengan node-pty - Saya dapat melihat bahwa ketika memasukkan emoji di Terminal.app
secara otomatis menambahkan spasi setelah emoji, dan bahkan lebih, saya tidak dapat memilih spasi itu, itu seperti High Sierra akan mengancam itu sebagai karakter berukuran ganda ...
Terminal.app di MacOS High Sierra
Ini mungkin hal sierra tinggi di mana mereka mencoba membuat Emoji lebih baik di terminal? Saya tidak dapat memperbarui saat ini karena mengacaukan rendering di aplikasi Electron.
Saya benci mengatakan bahwa saya telah meningkatkan dan sekarang saya terjebak dengan banyak gangguan rendering di semua aplikasi berbasis kromium itu 😤
Ya, saya berhati-hati untuk melacak umpan balik sebelum memperbarui karena hal serupa terjadi dengan Sierra menurut saya.
Saya perhatikan bahwa Terminal.app memiliki pengalaman emoji yang bagus di mana mereka diperlakukan sebagai karakter lebar yang tepat, kita mungkin bisa melakukannya jika mereka bisa 😄
UAX # 11 East Asian Width, Revisi 31 mengubah emoji _East Asian Wide_ (double-width), dan wcswidth
in wchar.h mengembalikan lebar string. Saya kira macOS High Sierra akan mendukung pembaruan.
xterm.js wcwidth
di src/CharWidth.ts
belum mendukungnya.
@ mandel59 terima kasih atas infonya!
@ mandel59 Saya pikir masalah ini khusus untuk emoji, saya pikir karakter CJK harus dikategorikan dengan benar sebagai karakter lebar ganda (beberapa komponen mungkin rusak meskipun seperti https://github.com/xtermjs/xterm.js/issues/1387)
Referensi: https://github.com/gnachman/iTerm2/blob/master/sources/NSCharacterSet+iTerm.m juga memiliki beberapa solusi pemetaan.
Masalah VS Code: https://github.com/Microsoft/vscode/issues/59145
Rupanya lari bergetar menunjukkan perilaku ini
Berikut adalah repro Dart kecil untuk apa yang kami lihat yang tidak memerlukan Flutter (memang membutuhkan 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);
}
Simpan sebagai file .dart
dan kemudian jalankan dengan dart xxx.dart
. Kode ini di sini mengeluarkan dua ruang belakang untuk karakter ini, yang di terminal macOS standar menghapus karakter dengan benar. Namun, di terminal VS Code itu akan memundurkan emoji dan karakter lain. Jika emoji berada di awal baris, ini tidak melakukan apa-apa, tetapi jika tidak, rendering perlahan-lahan merayap ke kiri oleh karakter (dan meninggalkan bagian kanan ikon setelahnya).
Jika saya Anda menghapus * _animation[0].length
dari backspace sehingga selalu melakukan satu backspace, itu berfungsi dengan baik di terminal VS Code, tetapi tidak lagi cukup ruang belakang di Terminal macOS (jadi bulan kemudian merayap ke kanan !).
Juga berlaku untuk bahasa Ibrani / Arab seperti yang disebutkan di https://github.com/Microsoft/vscode/issues/60470
VSCode 1.31.1 di Ubuntu 18.04 mengalami masalah ini.
Saat Anda menggulir ke atas atau ke bawah riwayat perintah Anda dengan tombol panah, artefak diambil sedemikian rupa sehingga ketika Anda mendapatkan perintah yang ingin Anda jalankan, kemungkinannya tidak terbaca.
Selain itu, setelah Anda mengambil artefak, mengedit perintah menjadi bermasalah, karena apa yang ditampilkan berbeda dari apa yang ada di memori di xterm.
Langkah:
Menambahkan emoji ke prompt saya:
Tekan panah ke atas sekali untuk mendapatkan perintah npm i
Perhatikan bajingan n
yang telah ditambahkan ke prompt.
Hapus emoji dari prompt di .bashrc
dan muat ulang istilah tersebut dan bug hilang.
Hal pertama yang pertama, saya ingin berterima kasih kepada kalian atas pekerjaan luar biasa Anda.
VSCode 1.31.1 di macOS Mojave 10.14.3 mengalami hal yang sama. Hal n
yang disebutkan oleh @juliusecker terjadi pada saya juga, persis seperti yang dia jelaskan.
Saya memiliki bug yang sama seperti yang disebutkan oleh @juliusecker.
VSCode Versi 1.33.1 (1.33.1) 51b0b28134d51361cf996d2f0a1c698247aeabd8 2019-04-11T08: 14: 39.158Z
Versi Sistem: macOS 10.14.4 (18E226)
zsh 5.7.1 (x86_64-apple-darwin17.7.0)
Sangat mudah untuk direproduksi di VSCode dan Powershell.
"Emoji Normal"
"😊1😊2😊3😊4"
"Emoji with Padding Spaces - What it should look like"
"😊 1😊 2😊 3😊 4"
Apakah ada sumber daya yang ditugaskan untuk item ini? Sepertinya banyak regresi di program lain (Hyper, dll.) Seperti yang terlihat di utas masalah ini.
@jerch apakah ini duplikat dari https://github.com/xtermjs/xterm.js/issues/1709?
@Tyriar Ya agak, itu hanya contoh di mana ppl kemungkinan besar akan menghadapinya - emoji: smile_cat:
Saya kira kami akan membiarkan keduanya terbuka karena ini menjelaskan masalah dengan baik dan # 1709 lebih melihat solusinya, ditambah yang ini memiliki banyak suara positif.
Ini dapat direplikasi di Windows 10, versi berikut:
Di atas adalah apa yang saya lihat di terminal build-in kode VS,
di atas adalah apa yang saya lihat ketika teks yang sama dalam file teks dibuka dalam kode VS.
Masalahnya sudah sekitar hampir dua tahun, ada pembaruan?
@jerch ingin segera melakukannya, dia memiliki banyak hal yang sedang berlangsung di atm. Salah satu pemblokir besar untuk ini adalah sistem addon baru yang sekarang dirilis.
Menutup demi https://github.com/xtermjs/xterm.js/issues/1709 karena mereka pada dasarnya adalah hal yang sama dan kami ingin agar masalah kami tetap dihitung.
Komentar yang paling membantu
VSCode 1.31.1 di Ubuntu 18.04 mengalami masalah ini.
Saat Anda menggulir ke atas atau ke bawah riwayat perintah Anda dengan tombol panah, artefak diambil sedemikian rupa sehingga ketika Anda mendapatkan perintah yang ingin Anda jalankan, kemungkinannya tidak terbaca.
Selain itu, setelah Anda mengambil artefak, mengedit perintah menjadi bermasalah, karena apa yang ditampilkan berbeda dari apa yang ada di memori di xterm.
Langkah:
Menambahkan emoji ke prompt saya:
Tekan panah ke atas sekali untuk mendapatkan perintah
npm i
Perhatikan bajingan
n
yang telah ditambahkan ke prompt.Hapus emoji dari prompt di
.bashrc
dan muat ulang istilah tersebut dan bug hilang.