💻

nb でCLIベースなメモ管理

2021/10/24に公開

結局巡り巡って Github + CLIツールへ

  • Qiita
  • Zenn
  • Notion
  • Scrapbox
  • HackMD
  • etc...

使いやすさを求めていろいろなMarkdownエディタ(Webベース)を渡り歩くうちに、書いたノートとかメモとかが色んな所に分散してしまった...。
ということで、これからはGithubで一元管理することにしました。

git を使う都合上、メモを書くのもCLIで完結すると良いと思って
iTerm2 + neovim + tmux の環境で書くことにしました。

iTerm2のホットキーでいつでも表示できるのが良い。いつでも書き始められる。
neovimの操作はまだ慣れないけど、慣れると生産性上がるんでしょうね。今の所メモに使うだけで、仕事のコーディングはVSCode使ってますが。

ただ、CLIツールに移行するとそれなりに不便もあって、メモを取るように作られたアプリに比べるとメモ管理がめんどくさかったり。
(特に最近使ってたNotionはかなり良かった)

そんなところに、CLIでのメモ管理に便利な nb を見つけたので紹介します。

nb

リンク、タグ付け、フィルタリング、検索、Gitのバージョン管理と同期、Pandocへの変換などの機能を備えたCLIとローカルウェブのプレーンテキストメモ、ブックマーク、アーカイブを単一のポータブルスクリプトで提供します。

Shell Script で書かれてるっぽい。
Gitでのバージョン管理が出来るCLIメモ管理と、まさに求めていた感じ。

https://github.com/xwmx/nb

Install

brew tap xwmx/taps
brew install nb

Settings

nb settings コマンドで色々変えられます。

  • editor
    • vim とか code とかお好きなものを
  • nb_dir
    • デフォルトだと~/.nb
    • 個人的に変える必要性感じない

Note を作成・編集

nb help # 使い方を表示
nb  # list note
nb add
nb edit <title or id>
nb delete <title or id>

# 内容を指定してadd
nb add "# From String"

nb <動詞> でノートを操作
また、動詞の部分は省略表記が出来るので、覚えれば更に簡単に使えます

nb a
nb e <title or id>
nb d <title or id>

Tag

# My Note

## Tags

#tech #typescript

sample code

\```typescript
console.log("hello")
\```

ノートのmarkdownに、#tag1 のように#のあとに開けずに単語を書くとタグになる。
見出しっぽく見えて紛らわしいが、これを書いておくとタグ検索などに役立つ

Tag検索

nb search --tag typescript

# search = q
nb q --tag tech

nb search --tags tag1,tag2 ... と書くとタグ検索

-t というフラグもあるが、こちらはタイトル検索 --title の短縮形なので間違えないようにしよう

検索

nb search 検索文字列

search コマンドで --tag引数ではなくそのまま文字列を渡すと本文検索する。

nb search console.log

NoteBook

nb には NoteBook 毎にノートをまとめる機能があります。

NoteBook は、どちらかと言うとトピックをまとめる機能というより管理場所や可視性毎にわけるイメージ。後に記述するgit連携でも、NoteBook毎に別々のgitリポジトリをセットする必要があり。

基本的には使わなくてもOK。
Tag機能だけで十分でしょう。

nb notebooks add private
nb private:add "# Private Note"
nb private:edit <title or id>
...


# デフォルト NoteBook を変更する
nb use private
nb add "# Private Note 2"

公開しても良いノートは public NoteBook、非公開なものは private NoteBook のように分けると良いですね。

git 連携

remote リポジトリをセットすることで、nbコマンドでノートの変更を行うたびに
commit, push を行ってくれます。

自動でremoteが更新されるのは便利。
更新し忘れがなくなるので。

nb set remote <https://github.com/remote_url>

# 違うNoteBookには別の remote リポジトリをセットする必要がある。

その他機能

  • nb browse
    • CLIブラウザ(w3m)でノートを見る
  • Wiki Link
    • [[id or title]] の記法で書く
    • browse コマンドと組み合わせて、リンクを移動して閲覧できる
  • BookMark
    • nb add <url> でWeb上のデータ(HTML)などをmarkdownに変換してノートとして保存
    • nb open コマンドでブラウザで開いたり、nb peekコマンドでCLIベースブラウザで見れる

他にも様々な機能が!
CLIだけど多機能っぽい。

※注意 : Zenn のGithub連携との相性

Zenn に公開しようと思っている場合は注意

Zennの記事はメタデータをフロントマターで書いたり、連携するリポジトリのarticles,
booksディレクトリにmarkdownを置かねばならなかったりするので、nbのgit連携のプロジェクト構造と異なるためので相性悪いです。

ちょっとしたメモにnbを使い、Zennに投稿する記事は別のリポジトリとして作るのが良いでしょう。

Zenn CLI を使うのがオススメ。
この記事もnbではなく Zenn CLI 使ってます。
https://zenn.dev/zenn/articles/install-zenn-cli

これがなかなか良い。
iTerm2 で画面下半分にすぐに表示できるターミナルがあって、neovimで編集。
セーブすると zenn-cli でプレビューがすぐ更新される。
Web上のZennで書くより遥かに良い。

感想

  • CLIで管理できるのが便利
    • vim と相性がいい
    • git も相性がいい
      • 書いたら自動pushされるので、クラウド保存/同期されるメモアプリと同じような使い勝手
    • iTerm2 のホットキー起動も便利
      • わざわざブラウザ開いてメモアプリのURL開いて〜などの煩わしさがない
  • CLIの割に多機能
    • まだ使いきれてないところもある
    • とりあえず使うだけなら簡単な操作だけ覚えればOK
  • NoteBook 機能の使い所が難しい
    • NoteBook 毎に git リポジトリが独立している
      • 気づかずに ~/.nbを git root にしてて、commit出来ずに悩んでた
      • その時nbでこの記事書いてて、git操作ミスって1回消えた
    • 百、千、万とノートが増えてくると分割が生きる、のかもしれない?
    • あとは組織毎に分けるとか
  • Zennと相性悪い
    • リポジトリ分けて zenn-cli使いましょう

Discussion