2019/12/21

tmux 3.0a の window 分割線を ascii character にする

2019/12/01 に tmux  の version 3.0a がリリースされました
いつも通りに分割線を multibyte character から ascii にする作業をします。
過去の作業ログは 2.9a や 2.8 や 2.7 など。そもそもの問題についてはこの記事にあります。


環境



インストール方法

  • $ brew install --HEAD atton/customs/tmux
でインストールできます。


今回の変更

tmux は window や pane を表示するための文字情報を tty-acs.c に持っています。
なので、毎度この定義を修正する事で対応しています。
2.9a の時等は tty-acs.c に変更が無かった為、過去の commit の cherry-pick のみで目的が達成できました。
が、今回は修正が入っているので cherry-pick をすると conflict します。
conflict を解消する形で対応しても良いのですが、今回は新しく修正用の commit を作ることにしました。

過去のパッチ を参考にすると、置換が必要な文字とその対応関係は
  • j,k,l,m,n,t,u,v,w が "+"
  • x が "|"
  • q が "-"
  • ~ が "*"
のようです。これらを元に tty-acs.c を修正。make すると今まで通り動きました。
もちろん後から何か踏む可能性はありますが、今の所問題は発生していません。
ということで tmux のソースコードの更新は以上。
あとは branch 名を homebrew の atton/customs 用に付けてあげればおしまいです。

formula の更新は本家 tmux の --HEAD 版の定義を借りて、branch 名を指定すればOK。

と、いうことで tmux 3.0a-border-ascii の更新ログでした。


おまけ

分割線の定義を間違えると、分割した瞬間に tmux が crash します。こわい。
きちんと定義できれば以下のように割りたい放題しても動きます。


2019/12/15

AquaSKK で Sticky Shift を使う

私は普段、mac で日本語入力をする時は AquaSKK を使っています。
AquaSKK は version 4.7.0 から Stickey Shift が実装されたようなので設定してみました。


環境

  • OS: macOS Mojave 10.14.6
  • Homebrew: 2.1.15-63-g090259b
  • Homebrew/homebrew-cask: (git revision ec6b9; last commit 2019-10-26)
  • AquaSKK: 4.7.0
  • neovim: 0.4.2
  • eskk.vim: 207d05cd


AquaSKK の install

homebrew-cask に formula があるので
  • $ brew cask install aquaskk
で Install できます。


SKK とは

日本語のかな漢字変換プログラムの一つです。
形態素解析を行なわず、漢字に変換、もしくは送り仮名付きの漢字の変換箇所をユーザが指定して入力します。
何を言っているのかさっぱりな感じもあるので、具体的な例を見ていきましょう。


漢字変換

例えば『漢字』と入力したい場合、「ことえり」や「Google 日本語入力」では
  • kanzi<space> または kanji<space>
と入力します。
そして SKK では、変換を開始する入力を大文字のアルファベットで指定します。よって
  • Kanzi<space> または Kanji<space>
と入力します。


送り仮名付き漢字変換

さて、次は『感じ』と入力したい場合を想定します。
「ことえり」や「Google 日本語入力」では変わらずに
  • kanzi<space> または kanji<space>
と入力します。また、その時の変換候補に『漢字』が出ることもあるでしょう。
SKK では送り仮名付きの漢字変換の時の変換箇所も大文字アルファベットで指定します。つまり
  • KanZi<space> または KanJi<space>
と入力します。そうすると、「感じ」「観じ」といった送り仮名付きの変換候補しか出ません。

さらに言えば、先程の『漢字』の入力について
  • Kanzi<space> または Kanji<space>
と入力した場合の変換候補は「漢字」「幹事」「監事」といった、送り仮名無しの候補しか出ません。
これが結構便利で、「送り仮名あり、送り仮名無し」の入力に関しては誤字が少なくなります。


横道: 形態素解析をしない、ということ

例に上げたように、漢字入力の際や送り仮名付きの漢字入力では SKK にはメリットがあります。
しかし、変換のポイントを自分で指定するため
  • これは漢字の入力のテストです
といった入力は一度にはできません。

「ことえり」や「Google 日本語入力」では全てのアルファベットを入力した後、先頭から少しずつ変換することができます。
なので、それぞれ得手不得手がある、と思った方が良いかと思われます。


Sticky Shift とは

さて、ここまで来ると Sticky Shift のお話ができます。
Sticky Shift とは、変換の指定ポイントを大文字のアルファベットでは無く、特定の文字で指定する方法です。

例えば、';' を設定した場合、先程の「漢字と感じ」は
  • ;kanji<space>to;kan;ji
と入力できます。
一見冗長ですが、慣れると便利です。

加えて、大文字入力が必要無いので Shift Key を使わずに入力を完結させることができます。
なお、eskk.vim では default で ';' Key が Sticky Shift 用の文字として実装されています


Sticky Shift の設定

ので設定してみましょう。大元の設定をコピーして追記します。

なお、コピー先の ~/Library/Application\ Support/AquaSKK については、AquaSKK を install した時に作られています。
なので
  • $ cp /Library/Input\ Methods/AquaSKK.app/Contents/Resources/keymap.conf ~/Library/Application\ Support/AquaSKK
を実行してコピー。

そして ~/Library/Application\ Support/AquaSKK/keymap.conf に
  • StickyKey ;

その後、AquaSKK のプロセスを殺すか、reboot 等で AquaSKK が再起動すれば、Sticky Shift が有効になっているはずです。
めでたしめでたし。


参考