在当前的v3中,表情符号似乎占用了两个单元格。 使用箭头键,两个单元格(而不是一个单元格)被跳转。 删除也会清除两个单元格。
我无法在macOS / bash上重现此内容。 我不希望它发生,除非我们尝试调整表情符号的宽度(使其不为1)。 有关复制步骤的更多详细信息将很有用。
复制(OSX,MacOS High Sierra)
因为我在,您已经在MacOS High Sierra上了吗? 也许它也与node-pty有关-我可以看到,在Terminal.app
插入表情符号时,它会在表情符号后自动添加一个空格,甚至更多,我无法选择该空格,就像High Sierra会威胁它是一个全角字符...
MacOS High Sierra上的Terminal.app
这可能是一件大事,他们试图使终端机中的Emojis更好? 我目前无法更新,因为它弄乱了Electron应用程序中的渲染。
我讨厌说我已经升级,现在我在所有这些基于铬的应用程序中都遇到了很多渲染故障😤
是的,在更新之前,我很小心地跟踪反馈,因为我认为与Sierra相似。
我注意到Terminal.app具有很好的表情符号体验,可以将它们视为适当的宽字符,如果他们可以的话,我们可能会做到这一点😄
UAX#11东亚宽度,修订版31更改了表情符号_East Asian Wide_(double-width),wchar.h中的wcswidth
返回字符串的宽度。 我想macOS High Sierra会支持此更新。
xterm.js的wcwidth
中的src/CharWidth.ts
尚不支持。
@ mandel59感谢您的信息!
@ mandel59我认为这个问题是特定于表情符号的,我认为CJK字符应正确地归类为全角字符(某些组件可能会被破坏,例如https://github.com/xtermjs/xterm.js/issues/1387)
参考: https :
VS代码问题: https :
显然,颤振运行证明了这种现象
这是一个小型的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终端中不再有足够的退格(因此,卫星随后向右爬行) !)。
也适用于https://github.com/Microsoft/vscode/issues/60470中提到的希伯来语/阿拉伯语
Ubuntu 18.04上的VSCode 1.31.1遇到此问题。
当您使用箭头键向上或向下滚动命令历史记录时,就会拾取工件,这样,当您找到要运行的命令时,该命令就难以辨认。
另外,在拾取工件后,编辑命令是有问题的,因为显示的内容与xterm中的内存不同。
脚步:
在我的提示中添加了表情符号:
按下箭头一次即可进入命令npm i
请注意已添加到提示中的流氓n
。
从提示中的.bashrc
删除表情符号,然后重新加载该词,该错误将消失。
首先,我要感谢你们所做的出色工作。
macOS Mojave 10.14.3上的VSCode 1.31.1遇到了相同的情况。 @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中重现非常简单。
"Emoji Normal"
"😊1😊2😊3😊4"
"Emoji with Padding Spaces - What it should look like"
"😊 1😊 2😊 3😊 4"
是否有任何资源分配给该项目? 在此问题线程上可以看到,其他程序(Hyper等)中的大量回归。
@Tyriar是的,这只是ppl最有可能面对它的一个示例-emojis:smile_cat:
我猜我们将它们都保持打开状态,因为这很好地描述了问题,并且#1709着眼于解决方案,此外,它还有很多支持。
它可以在Windows 10以下版本中复制:
以上是我在VS代码内置终端中看到的内容,
上面是在VS代码中打开文本文件中的相同文本时看到的内容。
问题已经有将近两年了,有没有更新?
@jerch想要尽快解决,尽管他在atm上有很多东西。 最大的阻碍因素之一是现已发布的新附加系统。
最后赞成https://github.com/xtermjs/xterm.js/issues/1709,因为它们本质上是同一件事,我们希望减少问题的发生。
最有用的评论
Ubuntu 18.04上的VSCode 1.31.1遇到此问题。
当您使用箭头键向上或向下滚动命令历史记录时,就会拾取工件,这样,当您找到要运行的命令时,该命令就难以辨认。
另外,在拾取工件后,编辑命令是有问题的,因为显示的内容与xterm中的内存不同。
脚步:
在我的提示中添加了表情符号:
按下箭头一次即可进入命令
npm i
请注意已添加到提示中的流氓
n
。从提示中的
.bashrc
删除表情符号,然后重新加载该词,该错误将消失。