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でテストファイルを開いた場合です。
そしてvimでは少し良くなりますが、それでも大文字と小文字の問題があります:
すべてのロケール変数を "hu_HU.UTF-8"に設定しようとしましたが、役に立ちませんでした。何が欠けていますか?
昔、afaik、UTF-8をサポートする "uxterm"がありましたが、現在はOpenBSDにはないようです。
適切なロケールを使用していることを確認すると、vim
とnvi
には正しい文字が表示されますが、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に対応していません。
これは、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
というポートがあります。
OpenBSDバージョンのviは、まだUTF-8をサポートしていません。 Vimは問題なく動作しますが、UTF-8と正しいロケールをサポートする端末が必要です。 OpenBSDが含まれているロケールの数を覚えていないので、en_US.UTF-8
なので LC_CTYPE
。