我只是试图清理包含字符 'ſ' (U+017F) 的旧德语文本。我想用 's' 替换它,但是当我使用 :%s/ſ/s/g 时,不仅该字符被替换,而且所有出现的 's' 后跟任意字符都被替换,就好像我使用了命令 :%s/s./s/g 一样。
例如,文本:
Die Gleichheit **) fordert das Nachdenken heraus durch Fragen, die ſich daran knüpfen und nicht ganz leicht zu beantworten ſind.
将被我的命令替换为:
Die Gleichheit **) fordert dasNachdenken herausdurch Fragen, die sich daran knüpfen und nicht ganz leicht zu beantworten sind.
我认为这可能与 'ſ' UTF-8 表示为两个字节序列 ( 0xC5 0xBF ) 的事实有关。这不是一个错误吗?如果没有,有没有办法只是替换而不是也? 'ſ' 's'
我正在使用 fileencoding=utf-8 和:
vim --version
VIM - Vi IMproved 9.1 (2024 Jan 02)
Included patches: 1-151
echo $LANG
de_DE.UTF-8
这是一张截 :set hlsearch 图:
更新:我在 Windows 10 上安装了高达 586 的 vim 8.0 版补丁,对我的命令和 %u 命令版本都表现出相同的行为。