人生の人生

日常のゴミ捨て場

gnuplotに寄せて

こんにちは,人生です.
メモです.

私はレポート類をなんとなくLuaLaTeXで作成しています.
さらに,挿入するグラフ類の描画 (?) にgnuplot-lua-tikzを使っています.
qiita.com
正直どちゃくそのどちゃくそにどちゃくそを重ねてめんどくさいですが,フォントをサイズ等含めて文書自体のものを利用できたり,TeXの数式をグラフ内に貼りこめたりできるので割と便利だと思っています.
使い方についてはネットの海の諸先輩方にお任せしたいと思います.

そんなgnuplot-lua-tikzくんですが,稀にバグります.
f:id:sktakefumi:20181203155704p:plain
一応出力自体はされるので見てみると,gp pathという,箱か線を描画するコマンドでありえんデカい値が指定されていることがわかります.
f:id:sktakefumi:20181203155809p:plain

実をいうと前々からこのバグには悩まされていましたが,出力サイズをちまちま変えるチキンレースで乗り切っていました.
しかし,今日なんとなくググったらまさにこのバグが報告されていました.
gnuplot / Bugs / #2084 Broken size of tikz output in gnuplot 5.3

よっしゃ早速修正版をコンパイルしてバグともおさらばや~~~!!!
と,思いましたが,私のリテラシーの低さから,Windows上でのgnuplotコンパイルは諦めました.
修正版の配布を首を長くしてお待ちしております.

PowerShellをいじった; PSReadLine,キーバインディング

こんにちは 人生です.
PowerShellのキーバインディング編です.

最近のPowerShellでは構文の色付けやコマンド入力の管理にPSReadLineをデフォルトで使用しているらしい.

1. PSReadLineの基本的な使い方

PSReadLineでの設定にはSet-PSReadlineOptionやSet-PSReadlineKeyHandlerなる関数を使う.
例えば,デフォルトのPowerShellだと行頭でバックスペースを連打するとビープ音が鳴ったり,コマンドの履歴が重複して保存されたりするが,それらを無効化するには以下のように設定する.

Set-PSReadlineOption -BellStyle None -HistoryNoDuplicates

例のごとく,これを$PROFILEとかに書き込めばPowerShellを起動するたびに設定が適用される.
設定可能な変数やその値などはやはり公式ドキュメントが詳しい.正直ググってもあまり出ない.
docs.microsoft.com
github.com
なお,通常はモジュールを有効化するためには

Import-Module PSReadLine

とする必要があるが,PSReadLineに関してはこの行がなくても動く.よくわからん.

例えばキーバインドを指定してあげたいときは

Set-PSReadlineKeyHandler -Chord "Ctrl+h" -Function BackwardDeleteChar

のようにする.-Chordで入力キーを,-Functionで関数 (動作) を指定できる.
これも公式ドキュメントを見るのが幸せ.
docs.microsoft.com
github.com

また,現在の設定やキーバインドを確認するためにはGet-PSReadlineOptionやGet-PSReadlineKeyHandlerを使う.
ぼーっと眺めてるといろんな設定や動作をいじれることがわかるので地味に楽しい.
f:id:sktakefumi:20181025133103p:plain

2. EditModeの変更

キーバインドをちょこちょこ変えて遊んでいたら,そういえばPSReadLineでは操作モードを変更できることを思い出す.
例えば

Set-PSReadLineOption -EditMode Vi

とすると,viのコマンドが使用可能となり,キーバインドもvi仕様にしてくれる.
自分でちょこちょこカスタマイズするよりもこちらのほうが便利.
f:id:sktakefumi:20181025133219p:plain
viでお馴染みの (vimしか使ったことないので嘘) コマンド群が使えるようになる.<>で囲まれたコマンドはノーマルモード時に,無印のコマンドは挿入モード時に有効なようだ.
viモードをちょっと使いやすくするために以下の設定とキーバインドをした.

Set-PSReadLineOption -EditMode vi -ViModeIndicator Cursor
Set-PSReadlineKeyHandler -ViMode Insert -Chord  "Ctrl+h" -Function BackwardDeleteChar
Set-PSReadlineKeyHandler -ViMode Insert -Chord  "Ctrl+[" -Function ViCommandMode
Set-PSReadlineKeyHandler -ViMode Command -Chord  "Ctrl+[" -Function RevertLine

-ViModeIndicator Cursorにより,現在のモードが視認できるようになる.

f:id:sktakefumi:20181025134052p:plainf:id:sktakefumi:20181025134138p:plain
挿入モード時 (左,カーソルが下線になる) と,ノーマルモード時 (右,カーソルがマスクになる).
デフォルトではNoneのため,今どちらのモードなのかがわからず,不便.
このオプションの詳細はgithubのmdのほうが詳しい.
また,-ViMode Commandで,モード別の挙動が設定できる.
今回はCtrl+[に,挿入モード時にはEscを,ノーマルモード時には行削除を割り当てた.
行削除はdを2回でできるけど,なんとなく.
viモードでとてもうれしいキーバインドが,コマンド履歴をノーマルモードのj,kで行き来できること.
Windowsモードのデフォルトだと矢印キーでしかできず,いちいち手を動かすのがしんどかったので画期的に思える.
ただ,モード切替などやはり面倒な点は残るので,使い勝手はこれから判断していくことになると思う.

以上です.やはり公式ドキュメントを読めるようにならないとつらいですね.