web-dev-qa-db-ja.com

OpenBSD 6.2のvi / vimでの不正なUTF-8アクセント

FVWMでOpenBSD 6.2をデフォルトでインストールした後、FVWM GUIでxtermを開き、通常のユーザーでテストファイルを作成します。

$ echo 'árvíztűrő tükörfúrógép' > test.txt
$ echo 'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP' >> test.txt
$ 
$ cat test.txt
árvíztűrő tükörfúrógép
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
$ 
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_MESSAGES="C"
LC_ALL=
$ 
$ env | grep -i locale
XTERM_LOCALE=C
$ 

問題は、viでテストファイルを開いた場合です。

enter image description here

そしてvimでは少し良くなりますが、それでも大文字と小文字の問題があります:

enter image description here

すべてのロケール変数を "hu_HU.UTF-8"に設定しようとしましたが、役に立ちませんでした。何が欠けていますか?

昔、afaik、UTF-8をサポートする "uxterm"がありましたが、現在はOpenBSDにはないようです。

6
Hessnov

適切なロケールを使用していることを確認すると、vimnviには正しい文字が表示されますが、viには表示されません。

$ LC_CTYPE=hu_HU.UTF-8 vim test.txt

または、

$ export LC_CTYPE=hu_HU.UTF-8
$ vim test.txt

実際、これはen_US.UTF-8ロケールでも(vim/nviで)機能します。 OpenBSDのviはUTF-8に対応していません。

Vim showing the text file

これは、OpenBSD-current(6.3より前)で、ベースシステムのviとポートからのvimおよびnviを使用してテストされました。写真は、WindowsホストからPuTTYで実行されているOpenBSDポート(vim-8.0.1255p0-no_x11)からのVimを示していますが、OpenBSDのFVWMで標準xtermを使用してテストすることもできました。写真のロケールはhu_HU.UTF-8です。ロケールをCに設定すると、質問で示したのと同じ結果になります。

正しいロケールは.xsessionファイル(またはxenodmからログインするか、コンソールでstartxを使用してX11を起動するかによって、.xinitrc)に設定できます。

export LC_ALL=en_US.UTF-8

fwvm & wmpid=$!
xterm &

wait "$wmpid"

(または類似の何か)

LC_ALLまたはLC_CTYPE変数、あるいはその両方をエクスポートする必要があることに注意してください。


uxtermについて:uxtermはOpenBSD 6.0のリリース後に削除されたようです。

コミットメッセージ(2016年10月24日月曜日13:55:37から)は、単に

Stop providing the uxterm and koi8rxterm Shell scripts.
Requested by schwarze@ agreed naddy@

ただし、urxvtユーティリティを提供する rxvt-unicode というポートがあります。

3
Kusalananda

OpenBSDバージョンのviは、まだUTF-8をサポートしていません。 Vimは問題なく動作しますが、UTF-8と正しいロケールをサポートする端末が必要です。 OpenBSDが含まれているロケールの数を覚えていないので、en_US.UTF-8 なので LC_CTYPE

1
Rufo El Magufo