nb - CLIベースのノート管理システム その1
これまでObsidianやInkDropなど いくつかノート管理ができるアプリを使ってきましたが定着しません。
やはりターミナルでVimで利用できるものが好みです。 以前はQFixHowmを使っていて よかったのですが、ちょっと多機能すぎます。似たようなものを探して MemoListも試しましたが、これはまた シンプル過ぎます。
dnoteも試しましたが、 日本語の検索が機能しなかったのと、 有償のサービスなのにどんどん機能縮小しているという状況で将来性が疑問です。
結局たどり着いたのが、nbです。
nb とは
nbとはコマンドラインベースで、 ノート、ブックマークを管理できるオープンソースのツールです。
次のような特徴があります。
- Markdown記法が基本のテキストベース
- フィルタリングやタギング、検索機能が豊富
- 簡単なタスク管理も可能
- 暗号化もサポート
- Gitリポジトリと同期可能
- テキストベースとブラウザベースのブラウジングをサポート
nbのインストール
nb自体はシェルスクリプトで書かれているらしく、必須なのはシェルとエディタです。
シェルはほとんどのシェルがサポートされています。fish
もサポートされていました。
エディタもターミナルで使用できるエディタはほとんど大丈夫でしょう。
オプションですが、次のようなコマンドを合わせてインストールすることが奨励 されています。
MacではHomebrewが入っていれば、以下のようにインストールできます 1。
$ brew install xwmx/taps/nb $ brew install bat $ brew install pandoc $ brew install ripgrep $ brew install tig $ brew install w3m
nbの使い方
ノートの追加
次のコマンドでエディタが開いて、ノートが新規に作成されます。 ファイル名も適当に付けてれるので指定する必要がありません。
# ノートの追加 $ nb a Added: [1] 20240115202243.md "サンプルノート"
ノートはMarkdown形式で記述してきます。 #
に空白は付けずに単語を記述すると
タグになります。サンプルを示します。
# サンプルノート ## Tags #sample #test ## ノート 今日はよい買い物ができました。
リンクの指定
外部のリンクについてはMarkdown記法でのリンクが使用できますが、 nb
内で管理している
文書については Wikiスタイルのリンクが使用できます。
# 文書番号でリンク。リンクの文字列も文書番号になります。 [[123]] # タイトルでリンク。タイトルで表示されます。 [[Document Title]] # 文書番号でリンクしつつ、リンクする文字列を指定する [[123|Document Title]]
私は文書番号とリンク文字列を指定する方法を好んで使用しています。
画像
nb
は画像も扱うことができます。
# 画像のインポート $ nb import hogehoge.png # 一覧で確認。■の部分は本来画像のアイコンが付与されます。 $ nb ls [5] Example 4 [4] ■ hogehoge.png [3] Example 3 [2] Example 2 [1] Example 1 # 画像の表示 $ nb open 4
open
コマンドで画像の表示を行うと、$NB_IMAGE_TOOL
で指定されたツールが
使用されます。何も指定がないとMacの場合はプレビューが使用されます。
$NB_IMAGE_TOOL
にはcatimg
か、
imgcat
が指定できるようです。
MacでiTerm2を使用しているのであれば、
imgcat
を指定するか、
プレビューを使うのがよいと思います。
imgcat
のインストール方法は
以下の通りです。パスの通ったディレクトリで作業してください。
$ cd ~/bin $ curl -O https://iterm2.com/utilities/imgcat $ chmod u+x imgcat
インポートした画像をノートに入れたい場合は、ファイル名を指定します。 文書番号ではうまく表示されないようです。
# 画像サンプル
![](hogehoge.png)
ノート一覧/表示
作成したノートの一覧はls
コマンドで表示できます。
show
コマンド、またはview
コマンドで内容を表示できます。
# ノート一覧表示 $ nb ls home -------------------------------------------------------------- [1] サンプルノート # ノート内容表示 $ nb show 1 # Viewerに指定したもので閲覧できる。 $ nb show 1 --print # ソースがターミナルに表示されます。
表示の際には、$NB_MARKDOWN_TOOL
で設定されたツールが使用されます。
私は glow
を指定しているのでMarkdownがレンダリングされた状態で表示されます。
レンダリングせずに表示したい場合は --print
オプションを使用します。
暗号化したノート
暗号化したノートを作成することもできます。
$ nb add --encrypt
ノートごとにパスワードの設定を促されてエディター画面に入ります。 パスワードはノートごとで忘れると開けなくなるので注意が必要です。
暗号化ツールには$NB_ENCRYPTION_TOOL
に指定したものが使用されます。
デフォルトはOpenSSLですが、私はGPGを使用しています。
暗号化したノートはこの後説明しているbrowse
コマンドでは閲覧できません。
個別にshow
コマンドに--encrypt
オプションをつけて個別にノートを開く
必要があります。
ノートのブラウジング
browse
コマンドを使うと、w3mやブラウザでノートを閲覧することできます。
# w3mで閲覧 $ nb b # ブラウザで閲覧 $ nb b --gui
ノートの検索
search
コマンドを使うとノートの全文検索を行なうことができます。
この時、引数に与えた文字列で全文検索を行ってくれるようです。
タグのみを検索したい場合は、--tag
オプションを使用します。
# 文字列を検索 $ nb q 買い物 [1] サンプルノート -------------- 9:今日はよい買い物ができました。 # タグで検索 $ nb q --tag sample [1] サンプルノート -------------- 5:#sample #test
まとめ
nb
について今回はノートに関する機能を中心に説明しました。
シンプルでありながら多機能でまだまだ紹介していない機能があります。
Git同期機能により異なるデバイス間でのノートの同期や共有が可能ですし、 BookmarkやTodoの管理機能もあります。
InkDropはまだ残していますが、しばらくはnb
をメインに使い込んで行きたいと思います。
-
私はncatはイントールしていません。 ↩