emacs处理中文双引号混乱

macos,iterm2,tmux。

brew 安装的emacs 30.1/30.2 在终端中遇到中文的双引号就操作和显示混乱。比如删除一个引号,它就显示删除了好几个字…但同样用vi,vim编辑同样的文件就没问题。

如果在iterm2中勾选Treat ambiguous-width as double width,就正常。但是tmux显示的分割线就不连续,变成虚线了。

我感觉这应该不是终端的问题,应该是emacs的问题(因为vi vim正常)。有遇到同样情况的么?有什么办法么?

看一下删除按键使用的命令是啥

可参考我办法在emacs里 强制改成英文 的 , 我也是在切换了无数次以后还是感觉难受才这么做的

不止是删除的问题。输入一个“ 它出现成对的,移动光标想到七中间继续输入文字,它并不能到中间。删除一半,它也是乱的。总之各种奇怪混乱的表现。

我试试。

不过我这里不是切换起来麻烦。哪怕麻烦但正确也可以,但中文双引号是混乱的。 如果打开的文件中本来就有中文的双引号,编辑也会出问题。

这个问题是不是只是emacs的问题?我问ai,zi总说和iterm有关。我感觉并没有。

试试这个?

(setopt cjk-ambiguous-chars-are-wide nil)
5 个赞

这个管用!感谢! 刚才我问ai,试了一堆的配置,没找到办法。

原因大概就是 Emacs 默认情况下对 CJK 模糊字符使用全宽,但字体半宽就会有显示问题。

这个问题应该只会在终端环境下存在。

3 个赞

我没装gui的emacs,没试。很奇怪我用了很久很久了,竟然今天才发现这个问题。可能之前也遇到过,但之前的配置改动过程中清理掉了。随后就忘了。

非常感谢。

1 个赞

使用 kitty 终端,cjk-ambiguous-chars-are-wide 为默认值 t,对中文的双引号操作并没有任何的显示和删除异常。

可能我们首先需要知道使用的是中文还是英文环境,比如执行以下表达式:

(list current-language-environment current-locale-environment)

在我的 Windows 系统的 Windows Terminal 中,它的值是 ("Chinese-GBK" "CHS")。我不是很熟悉 Kitty,它应该是 Linux 上的一个终端。

如果你得到的结果并不是中文相关的环境,那么能够正常显示应该是“正常”的,因为这个选项只会在 CJK 环境下起作用。

1 个赞

我这里是:(“Chinese-GBK” “zh_CN.UTF-8”)

应该是和中英文环境有关系。知道为啥我用了很久都没遇到这个问题了,可能是之前的环境是英文的,没出现。

1 个赞