basyura's blog

あしたになったらほんきだす。

bash で複合キー

できるとは思わなかった。知らないことばかり。
peco と組み合わせていい感じに。

peco-select-history() {
    declare l=$(HISTTIMEFORMAT= history | sort -k1,1nr | perl -ne 'BEGIN { my @lines = (); } s/^\s*\d+\s*//; $in=$_; if (!(grep {$in eq $_} @lines)) { push(@lines, $in); print $in; }' | peco --query "$READLINE_LINE")
    READLINE_LINE="$l"
    READLINE_POINT=${#l}
}
bind -x '"\C-r": peco-select-history'
 
peco-select-branch() {
    declare l=$(git branch -a | peco --query "$READLINE_LINE")
    READLINE_LINE="$l"
    READLINE_POINT=0
}
bind -x '"\C-x\C-a": peco-select-branch'
 
peco-select-local-branch() {
    declare l=$(git branch | peco --query "$READLINE_LINE")
    READLINE_LINE="$l"
    READLINE_POINT=0
}
bind -x '"\C-x\C-b": peco-select-local-branch'
 
peco-select-local-status() {
    declare l=$(git status -sb | sed 's/ M //' | sed '/^#.*/d' | sed 's/?? //' | peco --query "$READLINE_LINE" | tr "\n" "    ")
    READLINE_LINE="$l"
    READLINE_POINT=0
}
bind -x '"\C-x\C-l": peco-select-local-status'

もうちょっとスムーズに使えるように改善したいなぁ。

Windows 10 Fall Creators Update 1709

はじめてのWindows10 基本編 Fall Creators Update対応 (BASIC MASTER SERIES)

はじめてのWindows10 基本編 Fall Creators Update対応 (BASIC MASTER SERIES)

VMware に入れてる Windows 10 にアップデートがこないのはなんでだろうと思っていたら設定だった。

なんとなくオプションを見たらアップデートの方式に

  • Current Branch
  • Current Branch for Business

があって Business から一般向け?の Current Branch に変えたらアップデートできた。

1709 のリリースにともなって 1511 のサポートが切れている。

うちの会社だと更新データがでかすぎるから個別にダウンロードしてインストールしろとなってるようだ。Windows 10 にサポート切れがあるのを認識してなかったし、2 年ほど前にリリースされている OS を使ってて切れてると思う方が少数なんじゃないだろうか。今後も Windows 10 が続くんだから Windows Update しとけばいいんでしょぐらいの認識の方が多そう。 実際に突然サポート切れてるからネットワークから遮断するねってあったし。罠だ。

Windows Subsystem for Linux

Insider Program に入らなくても使えるようになったのでさっそくインストール。 起動すると・・・エラーメッセージ。

The WSL optional component is not enabled.

Windows の機能で Windows Subsystem for Linux を有効にして OS を再起動するお約束。 あらためて ubuntu を起動すると必要なコンポーネントのインストールが始まる。コマンドプロンプトの黒背景色を明るめに変えて・・・無事に起動。とりあえず最新化。

sudo apt-get update
sudo apt-get upgrade

試しに ubuntu から windows 側 (/mnt/c 配下) にディレクトリを作り適当な ruby ファイルを作って ubuntu 側で実行。特に問題なし。Windows 側でファイルを編集して ubuntu から再実行。特に問題なし。 試しに Dir.pwd を出力してみると ubuntu 側のパス (/mnt/c/)が出力される (当たり前)。

VMware 上で ConEmu を起動してると何もして無くても cpu 使用率が妙に上がるのだけど、WSL だとそういうことが無いのでいい感じ。

Git for Windows を投げ捨てられるのかなぁ。tail できるし。zsh と peco が使えるといいんだけど。試してみる。

Keyhac for Mac - 一旦中止

喜び勇んで乗り換えをしてみたものの・・・cpu を 2 % 常時消費する。ウインドウ切替時には 15% ぐらい一時的にはねあがる。キー連打すると 40% ぐらいいく・・・・気になる。かなり。エネルギー消費が著しいアプリケーションに上がってくるし。キー判定を待つために短時間ループしつつ待機してるとか?Firefox もだけど Windows 版は問題ないのに Mac 版だと微妙に CPU を食うアプリが有るのは Mac 特有のなにかなのか。ウインドウ切り替えを激しくしなければ・・・というのは無理だしな。激しくするし。

とはいえ、便利だし IME のキーを変に潰してしまうことを軽減できそうだから様子見しつつ使う・・・と思ったけどキー入力してると激しく CPU 使うから無しかなぁ (今のところ)

Ctrl-UCmd-Z に当てているのだけど、Ctrl を押しっぱなしにしてると認識しなくなって u が入力され続けてしまうことがしばし。Ctrl を押しながら別に割り当ててるキー (例えば Ctrl+Y ) を使うとダメかなと思ったけど再現性がよく分からない。

コードがあるんだから実装を読め言われればその通りなのだけど・・・cpp か・・・。

デフォルトのキー設定に慣れろとは言うけれど、変えたほうが効率いいから悩ましい。

Keyhac for Mac

f:id:basyura:20171111225933p:plain:w200

Keyhac - Pythonによる柔軟なキーカスタマイズツール - craftware

Win10 な新端末に乗り換えなタイミングで autohotkey から乗り換えた Keyhac の Mac 版に Karabiner に乗り換えてみる。理由は C-x C-k のような複合キー(?) の挙動も変えたいから。

Bear や Evernote のようなモードの無いエディタを使っていると入力しつつ編集も行いたいケースがまま多い。キー操作のバリエーションを増やすためには C-x のようなプレフィックスキーが欲しくなる。

とはいえ IME のキー操作とかなりバッティングするからで・・・日本語入力中 (IME) が発動してる際にキー操作を実行しないでくれれば複合キーにしなくて済むんだけど、いろいろツールを試しても判定できるものは無さそうなのであきらめ。

設定ファイルは python コードそのもの。

def configure(keymap):

    # --------------------------------------------------------------------
    # Text editer setting for editting config.py file

    # Setting with program file path (Simple usage)
    if 1:
        keymap.editor = "MacVim"
        #keymap.editor = "Sublime Text 2"

    # Setting with callable object (Advanced usage)
    if 0:
        def editor(path):
            subprocess.call([ "open", "-a", "TextEdit", path ])
        keymap.editor = editor


    # --------------------------------------------------------------------
    # Customizing the display

    # Font
    keymap.setFont( "Osaka-Mono", 16 )

    # Theme
    keymap.setTheme("black")

    bear = keymap.defineWindowKeymap( app_name="net.shinyfrog.bear" )
    bear[ "Ctrl-X" ] = keymap.defineMultiStrokeKeymap("Ctrl-X")
    bear[ "Ctrl-X" ][ "Ctrl-K" ] = "Ctrl-Shift-E","Ctrl-C","Ctrl-H"
    bear[ "Ctrl-U" ] = "Cmd-Z"
    bear[ "Ctrl-Y" ] = "Cmd-Shift-Z"

(下書きを Bear で書いているんだけど python のシンタックスハイライトが怪しい)

そんなことしてないで Vim で書けばいいよと言われればそうなんだけど、文章を書いたり読み返したりするのがしっくりこず今に至る。いろいろ試した結果 Bear や Evernote のような専用の UI や操作がある (できる) ものの方があうようだ。

Keyhac の端末表示で出力内容を見てると winsound が無いっていうエラーが出るんだけど、windows 用のコードが発動してるんだろうか。

Traceback (most recent call last):
  File "/Users/tom/Project/keyhac/keyhac_keymap.py", line 1037, in _onKeyDown
  File "/Users/tom/Project/keyhac/keyhac_keymap.py", line 943, in _keyAction
NameError: name 'winsound' is not defined

ドラクエ Ⅺ - クリアしてからのほうが長くね?

【3DS】ドラゴンクエストXI 過ぎ去りし時を求めて

【3DS】ドラゴンクエストXI 過ぎ去りし時を求めて

クエストの数が一気に増えて、敵も強くなってストーリーも長い感じする。 最初からそうしとけよと思わないでもないのだけど、ライトユーザーとヘビーユーザーの両方を取り込むための措置なんだろう。縛りモードがあるぐらいだし。縛りモードを使って最初からやりたいかと言われるとそうでもないし、敵が強くなって戦闘しまくってるのはいいんだけど無意味に長い気がしてゲンナリしてきてる感は否めないので僕はライトユーザよりなんだろう。

とか言いながらちょいちょい時間を見つけては現実逃避気味に継続中。

VimExcel 1.2.4

長らく 0.7.8 (VimXls) をカスタマイズして使っていたのだけど、win10 マシンに乗り換えたのを機に最新化。キー設定は特に変えずいきたいと思っているけど様子見。

yy とか dd の最初のキーを押した時に別の Excel にフォーカスが当たることがあるのが気になる。office 2016 に変えたので 0.7.8 でも発生していたのだけどその時は別の Excel にフォーカスがいったっきりだった。コードを見るとこの辺りの考慮が最新版だと入っているようだけどうまく動かないケースがある。

他の Excel AddIn とか Excel を吐き出すツールの挙動も怪しいと思っていたのだけど、Excel 2013 で MDI から SDI に変わったことが原因っぽい。

以前は Excel ごとにプロセスが作られていたけど、2013 以降は既存のプロセスが使用されてしまう。undo、redo が複数のブックをまたがっても共有されてしまい、undo し続けると別ブックの undo までされてしまう。VimExcel のフォームを出す際に別のブックがアクティブになってしまうのもこのあたりに起因してそう。

excel.exe /x で起動すれば別プロセスになるけど、エクスプローラからダブルクリックで起動するとオプションが効かない (渡せない) ので既存プロセスになる。ガッカリ。/x つきで Excel を起動するプログラムを作って関連付ければいける・・・か?

SDI 化によるメリットがメリットに感じられないので、常に新規プロセスで起動するモードが欲しいけど無理な願いだろうなぁ。プログラム側でなんとか頑張るしかないのか・・・ OfficeTab も気に入ってたのにツールを併用すると邪魔になってしまって消してしまった。

日頃仕様 (挙動) が変わるとギャーギャー言われて萎えまくっているのだけど、慣れて自分なりに編み出した効率的な使い方が使えなくなるとツライんだよなぁ、確かに。