Ank-Pixiv-Toolの履歴を、Pixiv Downloader EXにコピーした時の話
Ank-Pixiv-Toolの履歴を、 Pixiv Downloader EXにコピーしようとした時の話。
要約
- json.toolは便利。
- 検索結果は問題ないのに、それを:globalでレジスタに突っ込もうとすると、意図した値と別のものが入ってきた。
- 仕方ないので、検索結果をQuickFixウィンドウに出力して事なきを得た。
Ank-Pixiv-Toolの履歴を整形する
設定画面から履歴をエクスポートした直後のデータは人間が見るには辛いため、
:%!python -m json.toolを実行して整形します。
こんな感じになります。
[
"NCS",
"im9033024",
"9356419",
1551778748544,
1
],
[
"PXV",
"10575257",
"46052",
1546180090118,
1
],
[
"PXV",
"10628862",
"46052",
1546180094427,
1
],
ここから、"PXV"の下にある数字だけ抽出したい。
上の例だと10575257と10628862の2つ。
vimの\zs, \zeを使う
vimの\zs, \zeを使って、目的の値を検索します。
/"PXV",\n\s\+\"\zs\(\d\+\)"\ze
後は検索結果をレジスタに突っ込めばいいので、:globalでyankします。
:g//yank B
しかし、何故か"PXV"の部分がレジスタに登録されます。
"PXV",
"PXV",
仕方ないのでQuickFixを使う
検索条件を変えても駄目だったので、検索結果をQuickFixに出力して、そこからyankしました。
以下はQuickFixに出力された値の例。
C:/Users/ton/Documents/qfixapp-data/hatena/vim-grey.md|29 col 14| "10575257", C:/Users/ton/Documents/qfixapp-data/hatena/vim-grey.md|36 col 14| "10628862",
これをyankして別バッファにpaste、数字とカンマだけに編集して取り込みました。
参考gif

雑感
多分 jq 使ったほうが楽だと思います。
Tridactylのnative messengerを入れた
Tridactylのnative messengerを入れた
以前から気になっていたけど入れるのが面倒で放置していた、TridactylのNative Messengerを追加した。
随分入れるのが楽になってて助かる。
環境
- Windows10 64bit 1809
- Firefox 64bit 63.0.3
Native Messenger?
https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Native_messaging
WebExtensionsから出来ないことを、Native Messenger App を経由して実行する。
WebExtensionsからは直接ローカルのファイル(~/.config/tridactyl/tridactylrc)を
参照、書き込みできないので、これを経由して処理したりする。
install
:installnativeを実行すると、クリップボードにスクリプトがコピーされる。
Powershellを管理者権限で開き、スクリプトを実行すればインストールされる。
- HKCU配下のレジストリに書き込みも行うみたいなので、管理者権限で実行するのが無難っぽい。
でもHKCUなら一般ユーザ権限でも書き込めたっけ…覚えてない
最後にFirefox上で:nativeを実行し、正常終了のメッセージが表示されればOK。

実際にインストールされるファイル
~/.tridactyl/にあった。
c:\>ls ~/.tridactyl native_main.bat native_main.exe tridactyl.json
トラブルシューティング
たまに失敗する事があるらしい。
githubのissueに解決策が乗ってるかもしれない。
https://github.com/tridactyl/tridactyl/issues?utf8=%E2%9C%93&q=label%3Anativemessenger+
出来たこと
:source <tridactylrcのパス>を実行すると、ローカルの設定ファイルを読み込める。~/.config/tridactyl/tridactylrcを起動時に読み込んでくれる。- テキストエリアで
<C-i>を押すと、gvimで入力、反映できる。- PATHに
gvim.exeを追加して確認。 set editorcmdで任意のエディタに変更できるらしい。
- PATHに
最後に
FirefoxがShadowDOMに対応した*1 事もあって、自分に取って大分使いやすくなってきた感ある。
*1:MylistPocketで必要
Neovimを更新した
Neovimを更新した
久し振りにNeovim周りを更新したのでメモ。
更新した内容とか、思った事とか。
導入記事は これ
パッケージの更新
公式からビルド済みのパッケージを取得して、
そのまま上書きした。
これが正しい更新方法なのかは知らない。
設定ファイルの共有
vimと同じ設定ファイルを使うようにしたので、シンボリックリンクを貼った。
- %USERPROFILE%/dotfiles/vim/_vimrc > %USERPROFILE%/AppData/Local/nvim/init.vim
- %USERPROFILE%/dotfiles/vim/_gvimrc > %USERPROFILE%/AppData/Local/nvim/ginit.vim
insertから抜ける時にIMEをoffにする
上記のパッケージではiminsert=2が使えない。1
そのため、
ここ
を参考に、AutoHotkeyを使った設定を追加した。
#IfWinActive ahk_exe nvim-qt.exe
Esc::
^[::
GoSub, sub_ResetIME
Send {Esc}
return
sub_ResetIME:
getImeMode := IME_GET()
if (getImeMode == 1) {
IME_SET(0)
}
return
#IfWinActive
これでnvim-qtを使用している時にESCとC-[でinsert modeを抜けると、IMEがoffになる。
- 本当は
InsertLeaveイベント発生時にIMEをoffにする処理いれた方がいいと思う。
他、幾つか気になる点。
win32yankが失敗する事がある
クリップボードにコピーした内容が反映されない。結構頻繁に起きる。
vim内部だけで完結する間はどうでもいいけど、外部にテキストをコピーしたくなった時に困る。
SKK日本語入力FEPの補完候補が、ディスプレイの右下に出る
本来は入力中文字列の下に出てくるはずのものが、ディスプレイ右下にしか出ない。

ちなみにnvimだと発生しない。nvim-qtとSKK日本語入力FEPの相性が悪いのかな。
- 正直、慣れてくると補完候補を出す事自体が減ってくるため、そこまで困らない。
タブページにフラグが表示されない
更新がある場合、タブページの左側に出る+マークとかが出ない。
以前のバージョンでは出ていた気がする。
これもnvimなら問題ない。
一部記号が正しく表示されない
→や…等の表示がおかしくなったりする。
フォントの問題もあるかもしれないけど、同じフォントでもgvimでは問題無かったりするので、やっぱり気になる。
あと、これの影響か、カーソルがたまにバグる。<C-l>で再描画すればすぐ直る。
最後に
vimを使う上で「insertから抜ける時にIMEをoffにする」機能は、今の自分にとってほぼ必須なため、
これを擬似的とはいえ実現出来た事は大きい。
お試しとして、vim起動ホットキーを、nvim起動ホットキーに入れ替えてみてる位には。
ただまぁ、正直な所、vim8で困ってないなら、完全に乗り換える必要はないな、とも思ってる。
Neovim固有の機能が使いたい、Neovimでしか動かないプラグインを使いたい等、
明確な理由があるなら使えばいいと思う。
-
+multi_byte_imeを有効にすれば使えるかもしれない。↩
ZenzaWatchのショートカットキーを変更する
ZenzaWatchのショートカットキーを変更する
ZenzaWatchのショートカットや各種設定を変更できる。
更新しても設定が保持されるし、もし消えてもすぐに再設定できるため、便利かもしれない。
設定方法
ZenzaWatchが動作するURL*1に移動した状態で、
開発者ツールからコンソールを開き、次のコマンドを実行して設定する。
ZenzaWatch.config.setValue('設定名', 設定値)
現在の値を取得する事もできる。
ZenzaWatch.config.getValue('設定名')
設定名の一覧
ソースの281行目辺り、defaultConfigに一覧がある。
var defaultConfig = { debug: false, volume: 0.3, forceEnable: false, showComment: true, autoPlay: true, 'autoPlay:ginza': true,
個人的に使いそうな設定は以下。
enablePushStateとKEY_*は、現状コンソールからしか変更できない(はず)。
| 項目名 | 設定値 | 説明 |
|---|---|---|
| autoCloseFullScreen | true | 再生終了時にフルスクリーンを解除する |
| autoZenTube | true | youtubeリンクがある時、自動的に開く |
| enablePushState | true | ブラウザの履歴に残す |
| KEY_* | 任意の仮想キーコード | ショートカットの設定 |
設定例
最初に書いた通りコンソールから1行ずつ実行してもいいし、
Chrome系なら
Snippets
に保存して実行、
Firefoxなら
Scratchpad
から実行、としてもいい。
ZenzaWatch.config.setValue('autoZenTube', true); ZenzaWatch.config.setValue('KEY_CLOSE', 27); // ESC default ZenzaWatch.config.setValue('KEY_RE_OPEN', 82 + 0x1000); // Shift+R ZenzaWatch.config.setValue('KEY_HOME', 54); // 6 ZenzaWatch.config.setValue('KEY_SEEK_LEFT', 37 + 0x1000); // Shift+LEFT default ZenzaWatch.config.setValue('KEY_SEEK_RIGHT', 39 + 0x1000); // Shift+RIGHT default ZenzaWatch.config.setValue('KEY_SEEK_LEFT2', 81); // Q ZenzaWatch.config.setValue('KEY_SEEK_RIGHT2', 87); // W ZenzaWatch.config.setValue('KEY_VOL_UP', 69); // E ZenzaWatch.config.setValue('KEY_VOL_DOWN', 68); // default ZenzaWatch.config.setValue('KEY_INPUT_COMMENT', 67); // C default ZenzaWatch.config.setValue('KEY_FULLSCREEN', 88); // X ZenzaWatch.config.setValue('KEY_MUTE', 77); // M default ZenzaWatch.config.setValue('KEY_TOGGLE_COMMENT', 86); // V default ZenzaWatch.config.setValue('KEY_DEFLIST_ADD', 90); // Z ZenzaWatch.config.setValue('KEY_DEFLIST_REMOVE', 90 + 0x1000); // Shift+Z ZenzaWatch.config.setValue('KEY_TOGGLE_PLAY', 32); // SPACE default ZenzaWatch.config.setValue('KEY_TOGGLE_PLAYLIST', 80); // P default ZenzaWatch.config.setValue('KEY_SCREEN_MODE_1', 112 + 0x1000); // Shift+F1 ZenzaWatch.config.setValue('KEY_SCREEN_MODE_2', 113 + 0x1000); // Shift+F2 ZenzaWatch.config.setValue('KEY_SCREEN_MODE_3', 114 + 0x1000); // Shift+F3 ZenzaWatch.config.setValue('KEY_SCREEN_MODE_4', 115 + 0x1000); // Shift+F4 ZenzaWatch.config.setValue('KEY_SCREEN_MODE_5', 116 + 0x1000); // Shift+F5 ZenzaWatch.config.setValue('KEY_SCREEN_MODE_6', 117 + 0x1000); // Shift+F6 ZenzaWatch.config.setValue('KEY_SHIFT_RESET', 49); // 1 default ZenzaWatch.config.setValue('KEY_SHIFT_DOWN', 52); // 4 ZenzaWatch.config.setValue('KEY_SHIFT_UP', 53); // 5 ZenzaWatch.config.setValue('KEY_NEXT_VIDEO', 51); // 3 ZenzaWatch.config.setValue('KEY_PREV_VIDEO', 50); // 2 ZenzaWatch.config.setValue('KEY_SCREEN_SHOT', 83); // S default ZenzaWatch.config.setValue('KEY_SCREEN_SHOT_WITH_COMMENT', 83 + 0x1000); // Shift+S default
*1:nicovideo.jp配下ならどこでもいい
Firefox(Nightly)の環境を整えた話
Firefox(Nightly)の環境を整えた話
Firefoxはサブブラウザになったけど、色々環境を整えた結果いい感じになったので、まとめる。
現在使っているのは Firefox59.0a1(Nightly)。
Vim操作
Vim vixenを使っている。
見た目がVimperatorっぽくて懐かしさを感じる…
twitter.comVim Vixen入れてみた。このコマンドライン、凄い懐しさを感じますわ… pic.twitter.com/v94wmo6Q2i
— tomimori (@typetonk2) 2017年10月12日
ツリー型タブの導入
タブバーは削除予定のため、ツリー型タブを追加した。
ついでにマルチプルタブハンドラも追加した。主にURLのコピー用。
Stylusの導入
vixenのヒント文字を大きくするために追加。userChrome.cssでは設定出来なかった。WEとFirefox本体で分かれてるからかな。
.vimvixen-hint { font-size: 16px; } .vimvixen-console-frame { ime-mode: inactive !important; }
.vimvixen-console-frame は、何故か反映されず。とりあえず残してる。
UIの変更
本題。過去にもcssを弄ってURLバーを非表示とかしてたけど、Firefox57からはWEになったため、拡張側からUIを弄れなくなった。
そのため、userChrome.cssを使って設定。
色々試行錯誤したけど、 tridactylのREADMEから参照できるuserChrome.cssのおかげで、全てが解決した。
そのままだとまだ少し物足りなかったので少し弄り、現在は以下の感じに落ち着いた。
- 普段はタブバー/URLバーを非表示。
- 非表示中は、元々表示されていた箇所にあるリンク等をクリック出来る。
- 試行錯誤中は、見えない何かが存在してクリック出来なかった。
Alt+DやAlt+F等の、標準のショートカットでURLバーやメニューにフォーカスしたら、表示される。- 画面を全体化した時、画面最上部にカーソルを持っていけば、タブバー等が表示される。
- 試行錯誤中は、見えない何かのせいか、最上部より手前で表示されてしまった。
Vimperator使っていた時のように、とてもスッキリとしたUI。ノートPCだとほんと助かるんだよなぁ。
twitter.comFirefoxのUI、TridactylのuserChrome.cssを参考に弄って、ほぼ理想通りの形になったので、暫くこれでいこ。タブバーは消したり消さなかったりするかも。 pic.twitter.com/Tyxcnb54rh
— tomimori (@typetonk2) 2017年11月20日
css
環境によっては、色々数値を変えないと駄目かもしれない。
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* References. * https://github.com/cmcaine/tridactyl/blob/master/src/static/userChrome-minimal.css * https://support.mozilla.org/ja/questions/1185426 * https://github.com/piroor/treestyletab/wiki/Code-snippets-for-custom-style-rules#for-only-tree-style-tab-sidebar-1397 * chrome://browser/skin/browser.css */ .urlbar { ime-mode: inactive; } /* User config */ #navigator-toolbox { /* The height of the area at the top of the screen that causes the nav-bar to be shown If zero, you can still focus with <C-l> or F6. */ --tridactyl-auto-show-zone: 0; } /* Hide grey container box */ :root:not([customizing]) #navigator-toolbox:not(:hover):not(:focus-within) { max-height: 0; min-height: calc(0px); /* I have no idea why just using 0 or 0px does not work... */ } /* Auto hide tab bar */ :root:not([customizing]) #navigator-toolbox:not(:hover):not(:focus-within) #TabsToolbar { visibility: collapse; } /* Auto hide nav bar */ :root:not([customizing]) #navigator-toolbox:not(:hover):not(:focus-within) #nav-bar { max-height: 0 !important; min-height: 0 !important; /* Use margin-bottom to allow trigger zones that are larger than the nav-bar */ margin-bottom: calc(-1 * var(--tridactyl-auto-show-zone)); /* margin-bottom: 0; */ opacity: 0; transform: translateY(-7px); } /* Avoid transparent background for menubar if nav-toolbox not focussed */ #navigator-toolbox:not(:hover):not(:focus-within) #toolbar-menubar > * { /* Colour matches the grey background of the default firefox theme. Can't see what variable it uses */ background-color: rgb(232, 232, 231); } /* Make top bar more compact */ /* Make nav-bar thinner */ #nav-bar, #TabsToolbar { padding-top: 0px !important; padding-bottom: 0px !important; } /* We need more padding when maximised (maybe just on Windows?) */ #main-window[sizemode="maximized"] #nav-bar { padding-top: 0px !important; } #main-window[sizemode="maximized"] #mainPopupSet { padding-top: 7px !important; } /* Partial removal of black bottom 1px line shown in fullscreen mode */ #navigator-toolbox::after { display: none !important; } /* Kill tab bar */ /* #TabsToolbar { visibility: collapse; } */ /* Compact tab bar */ /* Remove window decorations (Close, Minimize, Fullscreen) */ #titlebar { display: none !important; } #TabsToolbar .titlebar-placeholder { display: none !important; } /* Delete header of Tree Style Tab */ #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header { display: none; } /* Move tab bar to bottom */ #TabsToolbar { -moz-box-ordinal-group: 2; }
AnkPixivToolの復活
つい先日気付いたけれど、 AnkPixivToolがWEに対応していた。開発者の皆様、本当にお疲れ様です。
WE対応の恩恵なのかChromeでも動き、Chromeではbrowser_action(ツールバーボタンのクリック)にショートカットを設定できるため、片手でポンポン画像が保存出来てとても捗る。
どちらかというと、Chromeを使う上でより便利になった感じ。
Firefoxも早くbrowser_actionにショートカット設定できるようになって。なる…よね?
総評
UIがスッキリしたおかげで、調べものは良くFirefoxを使うようになった。 拡張はまだまだ過渡期といった感じだけれど、少しずつ良くなってきた感もある。
引き続き、今後に期待したい。
ZenzaWatchのマニュアルらしきものだったもの
ZenzaWatchのマニュアル欲しいなー、と思ったので、だらだら作ってたやつ。
続きを読む現在のブラウザ環境メモ
現在のブラウザ環境
Firefox + VimFxから移動してそれなりに経つので、今の状況をまとめてみる。
ブラウザ
以前からサブで使用していた CentBrowser をメインにした。
WebExtensionsの仕様上、ページ読込が完了しないと拡張機能が動作しないので、マウスジェスチャがブラウザ標準であるやつを選択。
最近だと
Kinza
もいいな、と思ってる。RSSリーダーが更新を画面上に通知してくれたら使うんだけど。
Vivaldiで頑張ってショートカット設定するのもありかな、と思ったんけど。
面倒すぎて挫折したのと、Altキーと同時押しするとメニューが毎回反応して邪魔なのでやめた。
57 以降のFirefox
Nightlyは入れておくけど、今の所はサブ止まり。
私の環境だとCentBrowserより使用メモリが多かったり、欲しいアドオンが無い/発展途上だったりで、常用はまだ厳しい。
Vim Vixenには期待してる。
拡張機能(Vim系)
cVim を使用。
以前の記事で書いたので詳細はそっち。
機能が豊富だったり、VimperatorやVimFxのように、JavaScriptで機能拡張出来るので便利。
不満点
VimFxの
vが凄く欲しい…欲しくない?(hit-a-hintで要素を選択し、visualモードに入れるやつ)Visualモードのmappingが無い。そのままだとVisualモードで選択して翻訳に渡す、といった事が出来ない。
ドキュメントが少なすぎる。もっとカスタムスクリプトの説明下さい。
ブラックリストに指定したURLは、cVimが常に無効化される。これたまに困る。
ツールバーも操作したいなぁ…WebExtensionsでは仕様上無理なのが残念。幸い、拡張の
manifest.jsonにcommandsが設定できるので、feedlyとかはそっち設定してる。
拡張機能(その他)
以下は、同等の物がChromeにもあるので問題なし。
TabGroupも欲しいけど、同様な物がChromeにないため、変わりに OneTab を使用。マウス必須だけど仕方ない。
他、よく使ってたのが Ank Pixiv Tool。
Ank Pixiv Toolみたいに、1つの拡張機能で全てをカバーしてくれるのは流石に無かったけど、
個別でならあったので、それを使ってる。
ただ、Twitterに関しては、見付けた拡張がいずれも <画像ID>しかファイル名に設定してくれず、
Ank Pixiv Toolみたいに<ユーザー名>-<Tweet>(<画像ID>)をファイル名にしてくれるのが無かった。
毎回手で直してたけど面倒なので、他拡張を参考に、WebExtensionsの勉強しながら自作した。
GitHub - typetonk2/getTwitterImage: Twitterの画像を保存するやつ。
まだ幾つか問題はあるけど、一応実用に耐えてるのでそのまま使ってる。 今後も少しずつ弄る予定。
総評
Vimperatorに続き、VimFxも死亡確定した時は絶望感あったけど、いざ移行してみれば、それなりにやっていけてる。
一旦Firefoxからは離れたけど、WE対応の
Saka Keyや、
Vim Vixenも出てきたし、成熟次第では戻るかも。
他、qutebrowserとかも興味ある。
環境は刻一刻と変わるので、定期的な見直しをして、その時々でもっとも自分にあった環境を選択していきたい。