ふるきのガベージコレクション2

脳内を通り過ぎたイメージの残骸の記録

Skkeleton+Vimをtmux上で使ってみる

現在はデスクトップPCでUbuntu、ノートPCでWSLという環境でVim+Skkeletonを使って日誌を書いている。両PC間のデータ移動はBitbucketへのgit push/pullでやり取りしているのだが、push/pullを忘れることが多くやや面倒なことになっている。若い頃なら今どちらのデータ最新かは完全に記憶で管理できていたが、もう絶対に無理なのでどこに置いているかを考えなくても良い運用ができないかを考えてみた。

データをデスクトップPCに置き、デスクトップPCではtmux上で、ノートPCからはSSH経由でデスクトップPC側のtmuxセッションにつないで編集することでファイルを一元化し、Bitbucket経由のやり取りを廃止する案を試行してみた。

最初にノートPCのWSLからSSH接続してtmuxを立ち上げてVimを起動してみる。使い勝手は普通で表示の乱れもなくVim+Skelletonが使えている。そのままtmux上のセッションを維持しながら、デスクトップPCからtmux aして接続して編集を続ける。デスクトップPC側からの入力がノートPC側にも自動で反映されていき、Office Onlineのようだ。入力自体は問題なくできているが、Skkeletonの表示が少し乱れる。変換中文字列の頭に空白が入ったり、変換中文字が欠落したり、かな入力中のローマ字が画面上に残ったりする。表示を見ているとGNOME TerminalとWindows Terminalでの"▽"記号の扱いの差が影響しているように見える。表示の乱れは致命的ではないものの、状況によってはかなり混乱させられるもので、この環境を常用するのは難しそう。

今度はtmuxをデタッチしながら使ってみた。同じセッションに同時接続していることに表示異常の原因があるのではないかという仮説に基くもの。結論としては、状況に変化はない。デスクトップPC側でのみ表示が乱れている。

デスクトップPC側のtmuxの問題の様なのでノートPCからのSSH接続をやめて、デスクトップPCでtmuxを起動しその上でVimを使ってみる。結果として表示乱れは発生。GNOME terminalとtmuxとVim+Skkeletonの相性問題であることが判明した。

思い付くGNOME TerminalとWindowsTerminalの違いはGNOME Terminalは設定でAmbiguous-width CharactersをWideに設定しているがWindowsTerminalにはAmbiguous-widthの設定がなくNallowがデフォルトになっていること。GNOME Terminalの設定をNallowに変更してみると表示が正常になった。背反としては、ファイル名などに記号が含まれている場合にlsコマンドでの表示が乱れることになるが、WSLではどうしようもない問題として許容しているのだから、Ubuntu環境でも許容してやれば問題は一旦は解決する。後は、ファイル名に含まれる記号をなくしていくことで完全な対応ができていくはず。そもそもCLI環境で操作する範囲にはファイル名に記号を入れておらず、実質的に問題にならないはず。

まだ気付いていない問題が出てくる可能性はあるが、まずはこの環境を運用してみることにした。そう書いたら、emacs -nwではAmbiguous-widthはWideにする必要があることを思い出した。VimEmacsの同時運用は混乱するために実施しないし、どうしても使いたかったらGUI版のEmacsを使えば問題はなくなるはず。