vscodevimで Ctrl- keyは VScodeのものを使うようにする

IdeaVimとか VSVim(Visual Studio)は IDEのキーを優先するのをデフォルトにできるのだけど, vscodevimはデフォルトだとめちゃ VimVScode本来のショートカットキーがほとんど使えない. macOSだと Command keyベースで Ctrlキーのものと衝突しないというのはあるが, Windows, Linuxではコンフリクトする. Vim好きならそれでいいんだろうけど, 個人的には Ctrl-wの画面分割ぐらいしか使わないので, VScode本来のキーを使う方法をようやく調べてみた.

結論としては vim.handleKeys を調整すればよかった. File -> Preferences -> Settingsから handlekeysで検索するとヒットするので以下のように設定した.

    "vim.handleKeys": {
        "<C-a>": false,
        "<C-f>": false,
        "<C-n>": false,
        "<C-c>": false,
        "<C-x>": false,
        "<C-v>": false,
        "<C-b>": false,
        "<C-j>": false,
        "<C-k>": false
    }

しばらくこれで試してみる.

C#で簡素な Scheme処理系を書いてみた

github.com

peter.michaux.ca

C#でやった. C#で書いたのは最近 Unityにふれることがあるのでその影響. C#らしい部分はほとんどない. むしろ書きづらかったさえある. あとこの前に Common Lisp風の処理系を書いていたのでシンボルと値の扱いに 若干混乱した. 処理も無駄に複雑になってしまったと思う. あと C#力が低すぎるというのもあり, クオリティは低い. まだまだ勉強する必要がある.

Linux環境で JetBrains Riderで書いたけど, Visual Studioの出来がいいから(特に C#開発ではすごい), 競合する C#IDEの出来はいいんだなと感心した(言語の性質的なところもあるんだろうけど, CLionもそれぐらい便利だったらなぁと思った)

Goで簡素な Lisp処理系を書いた

github.com

最近 Goに触れていなかったので復習も兼ねて. 内容としては下記の本に載っている Common Lisp風の簡易 Lisp. 本では Common Lispで書いているので read周りとか楽にできる部分があるのだけれど, Lisp系言語以外だとそんなわけにはいかないのでそこは地道に書いた. あとオブジェクト指向というかクラス継承を使って書かれていた部分を Goっぽく(?)落とし込んで書いた. その他の方針などはだいたい本のまま. 以前もっと簡単なものを Cで書いたことはあったけど, それよりは幾分進んだ内容で適度にいい刺激にはなったかと思いました.

対話によるCommon Lisp入門

対話によるCommon Lisp入門

最近読んだ漫画

アニメがすごく面白かったので購入. アニメいいけど, 漫画も良かった. アニメでは省かれているけど, 原作では準備の前の説明とか調理前の説明などが充実しており全く知らない自分にとってもわかりやすかった. 締めるシーンも原作以上にあり, 生き物を食べるということがどういうことかというのもちゃんと描画しているのがよいです. 釣りには一ミリも興味がないけど, とても楽しめた. 作者の方が熊本豪雨で被災して一時休載というのが残念. 再開の見通しはたっているそうなので, 話がまた貯まったら 2期に期待したい

amazonの recommendに出てきてそういえばアニメ見ていたなということで購入. なかなか楽しめた. 今アニメが放送されたら主人公の名前と父親の声優から, 絶対にゴーストオブツシマネタで盛り上がったんだろうなと思った. こちらも 2期があれば是非みたい.

bashでコマンド出力の各行を配列に設定する

bash4 以降は mapfile + プロセス置換を使う方法が標準的(?), スマートっぽい

# git remoteを配列 remotes に設定する
mapfile -t remotes < <(git remote)

echo "${remotes[@]}"

Git commit author, emailの書き換え

stackoverflow.com

意図せず普段使い name, email以外が設定された環境でコミットしてしまった場合の対応

#!/usr/bin/env bash
set -e

NEW_NAME="NEW_NAME"
NEW_EMAIL="new@gmail.com"

git filter-branch -f --env-filter "
    GIT_AUTHOR_NAME='$NEW_NAME'
    GIT_AUTHOR_EMAIL='$NEW_EMAIL'
    GIT_COMMITTER_NAME='$NEW_NAME'
    GIT_COMMITTER_EMAIL='$NEW_EMAIL'
  " HEAD
% git push -f

epub reader for Ubuntu

技術書典マーケットの本を買ったら epub形式しかなくて, デフォルトでアプリが入っていないってことで適当に探すと Thoriumがマシそうだったのでしばらく試す.

www.edrlab.org

インストール方法

  • 上記のサイトから debパッケージをダウンロードして, sudo dpkg -i *.deb でインストール

その他

  • snapで同名のパッケージもあったけど, 天体シミュレータで全然違うものだった
  • fbreaderなるものがはじめ見つかったが日本語文字が表示されず
  • pandocで epubから各種形式にあったので試してみたが, 日本語フォントの設定の問題のためか日本語が表示されず