nb でCLIベースなメモ管理
結局巡り巡って 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メモ管理と、まさに求めていた感じ。
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 使ってます。
これがなかなか良い。
iTerm2
で画面下半分にすぐに表示できるターミナルがあって、neovim
で編集。
セーブすると zenn-cli
でプレビューがすぐ更新される。
Web上のZennで書くより遥かに良い。
感想
- CLIで管理できるのが便利
- vim と相性がいい
- git も相性がいい
- 書いたら自動pushされるので、クラウド保存/同期されるメモアプリと同じような使い勝手
- iTerm2 のホットキー起動も便利
- わざわざブラウザ開いてメモアプリのURL開いて〜などの煩わしさがない
- CLIの割に多機能
- まだ使いきれてないところもある
- とりあえず使うだけなら簡単な操作だけ覚えればOK
- NoteBook 機能の使い所が難しい
- NoteBook 毎に git リポジトリが独立している
- 気づかずに
~/.nb
を git root にしてて、commit出来ずに悩んでた - その時
nb
でこの記事書いてて、git操作ミスって1回消えた
- 気づかずに
- 百、千、万とノートが増えてくると分割が生きる、のかもしれない?
- あとは組織毎に分けるとか
- NoteBook 毎に git リポジトリが独立している
- Zennと相性悪い
- リポジトリ分けて
zenn-cli
使いましょう
- リポジトリ分けて
Discussion