basyura's blog

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

inkdrop-vim v2

プレビューモードでスクロール

v2 にメジャーバージョンアップしてプレビューモードでも j k ctrl-d ctrl-u でのスクロールができるようになって便利。ctrl-d ctrl-u の挙動が半ページスクロールじゃなくて 1 ページスクロールになっていたので通報したらすぐ直してもらえた。嬉しい。

keymap.cson に定義していたキーが効かなくなったのがびっくりしたけど prefix が vim-mode から vim に変わったようだ。

'.CodeMirror.vim-mode:not(.insert-mode):not(.key-buffering) textarea':
    '0': 'vim:move-to-first-character-of-line'
    'ctrl-e': 'vim:move-to-last-character-of-line'

今までは常にエディタモードだったけどプレビューモードも有りかなと思い始めてる。となると、Hit a Hint が欲しくなっちゃう。

リンクを開きたい

normal mode で enter 時に url をブラウザで開くか、note の場合はそれを表示する挙動をしたくて PR を送ったら本体で実装してくれる回答をもらったので楽しみにしている。今のところは以下を定義して待機中。

init.js

inkdrop.commands.add(document.body, "mycmd:open-link", () => {
  const editor = inkdrop.getActiveEditor()
  const { cm } = editor
  const cur = cm.getCursor();
  const token = cm.getTokenAt(cur);
  if (token.type == "url") {
    open(token.string);
  } else if ((token.type = "string url")) {
    const link = token.string.replace("inkdrop://", "");
    inkdrop.commands.dispatch(document.body, "core:open-note", {
      noteId: link
    });
  }
});

keymap.cson

'.CodeMirror.vim-mode:not(.insert-mode):not(.key-buffering) textarea':
    'enter': 'mycmd:open-link'

僕の実装だとカーソルが左端に合って url も左端から記載されてる場合にリンクが判定されないのがちょっともにょる。カーソル行にあるリンクを開くような挙動にしても良さそう。

まとめ

またひとつ便利になった。

プレビューモードで見るとタイポを見つけやすいのはなんなんだろう。 紙に書いてたのを印刷したら間違いが分かりやすいのに似てる。