Skip to content
tmux 2.5 以降において East Asian Ambiguous Character を全角文字の幅で表示する
Branch: master
Clone or download
Latest commit c04184a Jun 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
obsolete Update ChangeLog.md Jun 18, 2019
ChangeLog.md
LICENSE Move Repository Gist -> Github Mar 14, 2019
README.md Fix README.md Mar 15, 2019
tmux-2.3-fix.diff Move obsolete/tmux-2.3-fix.diff -> tmux-2.3-fix.diff Mar 14, 2019
tmux-2.4-fix.diff Update tmux-2.9-fix.diff, tmux-HEAD-85f09f9a-fix.diff, Add tmux-2.4-f… Apr 27, 2019
tmux-2.5-fix.diff Move Repository Gist -> Github Mar 14, 2019
tmux-2.6-fix.diff Move Repository Gist -> Github Mar 14, 2019
tmux-2.7-fix.diff Move Repository Gist -> Github Mar 14, 2019
tmux-2.8-fix.diff
tmux-2.9-fix.diff Update tmux-2.9-fix.diff, tmux-HEAD-85f09f9a-fix.diff, Add tmux-2.4-f… Apr 27, 2019
tmux-2.9a-fix.diff Update tmux-2.9a-fix.diff May 1, 2019
tmux-3.0-rc3-fix.diff
tmux-HEAD-5895f1d9-fix.diff

README.md

tmux 2.5 以降において East Asian Ambiguous Character を全角文字の幅で表示する

概要

tmux 2.5 以降において、 Unicode の規格における東アジア圏の各種文字のうち、いわゆる "◎" や "★" 等の記号文字及び罫線文字等、 East_Asian_Width 特性の値が A (Ambiguous) となる文字 (以下、 East Asian Ambiguous Character) が、日本語環境で文字幅を適切に扱うことが出来ずに表示が乱れる問題が発生しています。

ファイル tmux-x.y-fix.diff (ここに、 x.y は tmux の安定版のバージョン番号。以下同様) 及び tmux-HEAD-xxxxxxxxx-fix.diff (ここに、 xxxxxxxx は tmux の HEAD 版の最新の commit ID 番号。以下同様) は、 tmux 2.5 以降において East Asian Ambiguous Character の幅を漢字や全角カナ文字等と同じ幅 2 で表示するように修正するための差分ファイルです。

この差分には、 waltarix 氏によって作成された tmux の画面分割において、ボーダーラインを罫線文字に代えて ascii 文字を使用するための差分ファイルである pane-border-ascii.patch が含まれています。

https://gist.githubusercontent.com/waltarix/1399751/raw/6c8f54ec8e55823fb99b644a8a5603847cb60882/tmux-pane-border-ascii.patch

差分ファイルの適用とインストール

tmux のソースコードに差分ファイルを適用するには、安定版の tmux には、差分ファイル tmux-x.y-fix.diff を、 github 上の tmux の HEAD のソースコードには、 tmux-HEAD-xxxxxxxx-fix.diff をそれぞれ適用して下さい。

従って、安定版の tmux のソースコードにおける差分ファイルについては、 tmux のソースコードが置かれているディレクトリより、以下のようにして差分ファイル tmux-x.y-fix.diff を適用後、tmux を通常通りにビルドしてインストールすると、 tmux において、 East Asian Ambiguous Character が全角文字の幅と同じ幅で表示されるようになります。

 $ patch -p1 < /path/to/diff/tmux-x.y-fix.diff
 (ここに、/path/to/diff は、 tmux-x.y-fix.diff が置かれたディレクトリのパス名)

また、github 上の tmux の HEAD のソースコードにおける差分ファイルについても、 github 上の tmux の HEAD のソースコードが置かれているディレクトリより、以下のようにして、最近の差分ファイルを適用後、 tmux の HEAD 版を通常通りにビルドしてインストールすると、 tmux において、 East Asian Ambiguous Character が全角文字の幅と同じ幅で表示されるようになります。

 $ patch -p1 < /path/to/diff/tmux-HEAD-xxxxxxxx-fix.diff
 (ここに、 /path/to/diff は、 tmux-HEAD-xxxxxxxx-fix.diff が置かれたディレクトリのパス名)

Linuxbrew を用いた差分ファイルの適用とインストール

Linuxbrew を導入した端末において、East Asian Ambiguous Character 対応の差分ファイルを適用した tmux をインストールする際には、これらの差分ファイルを適用した tmux を導入するための Linuxbrew 向け Tap リポジトリ z80oolong/tmux を使用することを強く御勧め致します。

Tap リポジトリ z80oolong/tmux では、最新の安定版の tmux 及び github 上の最新の tmux の HEAD のインストールの他、旧安定版の tmux のインストールも可能です。

z80oolong/tmux の詳細な使用法につきましては、 z80oolong/tmux の README.md を御覧下さい。

オプションの設定について

ここで、 East Asian Ambiguous Character の文字幅を 2 ではなく 1 として扱う場合は、tmux の設定ファイル .tmux.conf に以下の設定を追記します。

set-option -g utf8-cjk off

なお、オプション utf8-cjk の初期値は、 locale に関する環境変数 LC_CTYPE の値が "ja*", "ko*", "zh*" の場合は on となり、それ以外の場合は off となります。そして、オプション utf8-cjk の値が on の場合は、オプション pane-border-ascii の値に関わらず、 tmux の画面分割のボーダーラインは ascii 文字となります。

謝辞

先ず最初に、tmux の画面分割において、ボーダーラインを罫線文字に代えて ascii 文字を使用するための差分ファイルである pane-border-ascii.patch を作成された waltarix 氏に心より感謝致します。

また、差分ファイル tmux-2.3-fix.diff を作成するに当たっては、下記の URL にある、 Markus Kuhn 氏が作成した East_Asian_Width 特性が A の文字の扱いを考慮した wcwidth(3) 関数の実装を使用しました。 Markus Kuhn 氏には心より感謝いたします。

http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c

最後に、 tmux の作者である Nicholas Marriott 氏を初め、 tmux に関わる全ての人々に心より感謝致します。

使用条件

本差分ファイルは、端末多重化ソフトウェアである tmux に適用する差分ファイルであり、 waltarix 氏Markus Kuhn 氏の両氏及び Z.OOL. (mailto:zool@zool.jpn.org) が著作権を有します。

従って、本スクリプトは tmux のライセンスと同様である ISC License に基づいて配布されるものとします。詳細については、本リポジトリに同梱する LICENSE を参照して下さい。

You can’t perform that action at this time.