LoginSignup
34
23

Neovim の Markdown ビューアとして Obsidian を使う

Last updated at Posted at 2024-05-19

この記事は Vim 駅伝 2024/5/20 の記事です。

前回は staticWagomU さんの Masonから脱却できなかった - 輪ごむの空き箱という記事でした。

次回は kuuote さんの HとLをいい感じにするマッピングをvimrc読書会で見つけたので魔改造してみたという記事です。

これは何?

Markdown は実質、単なるテキストファイルです。そのため Neovim で書くこと自体は簡単なんですが、ビューアが無いのはターミナルで動くものである以上仕方ありません。今までもこの問題を解決するために様々なプラグインが作られてきました。

検索するとまだまだ出て来ます。大抵のものが、裏で HTTP サーバを立てておいて、ターミナル(Neovim)の横にブラウザを開いて使う、という形式です。今回紹介するのはこれらとはちょっと違い、Obsidian をビューアとして使うという提案です。

こんな感じです。プレビューできてますね。

Obsidian とは……というのはここには書かないことにします。検索すればいくらでも出て来ますからね。最近流行のメモアプリという認識で OK です。

Obsidian を Neovim で書く

Obsidian の一番の特長とは、管理する文書自体はフォルダに入れられた Markdown ファイルでしかない、ということです。このために、公式の Obsidian アプリでなくても好きなエディタで文書を開いて編集できるのです。

Neovim の場合も同じ。例えば以下のようにしてファイルを開けます。

$ nvim ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/Foo/2024-05-13.md

これで Foo という保管庫に入った 2024/5/13 の日記を開けます。

ファイルパスは macOS での例です。以下でも同じようなパスが出て来ますので、その他の OS では読み替えてください。

しかし Neovim ですからね。当然テキスト表示です。Tree-sitter などで見た目はある程度リッチにできますが、画像は表示できませんしドラッグ & ドロップで追加することもできません。

obsidian-bridge.nvim

これを解決するために oflisback/obsidian-bridge.nvim を使います。このプラグインにより Neovim を Obsidian の公式アプリと協調して動かすことができます。

  • Neovim で開いた文書を自動的に Obsidian アプリで開く。
  • Neovim で編集中にスクロールすると該当の場所に自動的に追随する。

プラグインが提供する機能は主に上記の 2 つです。これにより、Obsidian アプリと Neovim を行ったり来たりして編集することが可能になります。普段は Neovim で内容を編集しながら、画像を挿入したいと思ったら Obsidian アプリにドラッグ & ドロップすればいいのです。Neovim に戻った時にそれも反映されています。

プラグインのインストール

Obsidian アプリの制限モードをオフにする

すでにコミュニティプラグインを使っている人はここをスキップしてください。

obsidian-bridge.nvim を使うためには、Obsidian アプリにもプラグインを入れる必要があります。インストールした状態では、Obsidian アプリには任意のコミュニティプラグインをインストールすることができません。設定→コミュニティプラグイン→制限モードからオフにしましょう。

スクリーンショット 2024-05-11 17.50.54.png

Local REST API for Obsidian のインストール

このプラグインは名前の通り、Obsidian アプリを操作できる REST API を提供します。obsidian-bridge.nvim は内部で curl を使い、この REST API を叩いて Obsidian アプリを操作しているのです。

通常なら Obsidian アプリの設定 UI からプラグインをインストールする所なのですが、2024/5 現在、obsidian-bridge.nvim に必要な機能を利用するには開発中の fork を使う必要があります。これは Beta 版という扱いですので簡単にインストールできません。ここで利用するのが BRAT という別のプラグインです。

この記事の初版では fork したレポジトリーからコンパイルしてプラグインをインストールしていました。その後 obsidian-bridge.nvim の README が下記の BRAT を使う方法に書き換えられ、併せて本記事も修正しています。

BRAT のインストール

これも、すでに BRAT をインストール済みの人はスキップしてください。

設定→コミュニティプラグイン→閲覧から BRAT をインストールしましょう。

スクリーンショット 2024-06-03 15.05.54.png

“インストール” をクリックすると完了です。

スクリーンショット 2024-06-03 15.05.59.png

設定→コミュニティプラグインから、“BRAT” を有効にしておきます。

スクリーンショット 2024-06-03 17.05.12.png

BRAT によるインストール

設定画面左メニューの下部から BRAT の設定画面が開けるようになります。ここで、“Add Beta plugin with frozen version” を選択し、

スクリーンショット 2024-06-03 15.06.19.png

以下のように入力して “Add Plugin” をクリックしてください。

スクリーンショット 2024-06-03 15.07.16.png

暫く待つとインストール完了です。設定画面で BRAT と同じ並びに “Local REST API with Scroll” が現れているはずです。

アプリで有効にする

設定→コミュニティプラグインから、“Local REST API with Scroll” を有効にします。

スクリーンショット 2024-05-11 18.19.29.png

歯車アイコンを押してプラグインの設定を開き、“Your API Key” をメモっておきます。更に、“Enable Non-encrypted (HTTP) Server” を ON にします。

Local REST API プラグイン自体は HTTPS でのアクセスにも対応しているのですが、2024/5 現在、obsidian-bridge.nvim は HTTP でのアクセスにしか対応していません。

スクリーンショット 2024-05-11 19.36.11.png

環境変数に API Key をセットする

先ほどメモっておいた文字列を環境変数 OBSIDIAN_REST_API_KEY にセットします。Neovim を起動する時は必ずこの環境変数が有効になるようにしておきましょう。

export OBSIDIAN_REST_API_KEY=hogehoge

誤った設定で REST API サーバを公開した場合、この API Key で全ての文書にアクセスできてしまいます。この文字列は注意して扱いましょう。

obsidian-bridge.nvim のインストール

次に、Neovim に obsidian-bridge.nvim をインストールします。以下ではプラグインマネージャーとして lazy.nvim を使っているものとして進めます。

{ "oflisback/obsidian-bridge.nvim", opts = { scroll_sync = true } }

obsidian_server_address というオプションを指定すれば、別のマシンで起動している Obsidian アプリに接続することもできます。ですが HTTP でアクセスするのは危険ですので、標準の http://localhost:27123 から変更しない方が良いでしょう(ポート番号は変更してもいいかもですね)。

これで終わりです。後は、Neovim を再起動した上で Obsidian 上の文書を開いてみましょう。Obsidian アプリでも同じ文書が開くはずです。Neovim をスクロールすると Obsidian アプリもスクロールします。Neovim、Obsidian アプリ、双方で編集したものが、もう片方のアプリにフォーカスが移ると互いに同期されるはずです。

ただし他のソリューションと違い、Neovim 上の修正は :w で保存しないと反映されません。これは善し悪しですね。

更に便利に使うには

Markdown を、あるいは、Obsidian の文書を Neovim で書くにはまだまだ様々なテクニックがあります。この記事はここまでとしますが、他にも便利になるプラグインは色々ありますのでそれらを簡単に紹介して終わりましょう。

Markdown を更に見易くする

nvim-treesitter/nvim-treesitter

これはもう入れてますよね。

MeanderingProgrammer/markdown.nvim

通称 “render-markdown”。Tree-sitter を組み合わせると見た目がかなりリッチになります。

TS のみ TS + se cole=2 render-markdown
スクリーンショット 2024-05-16 19.39.13.png スクリーンショット 2024-05-16 19.39.29.png スクリーンショット 2024-05-16 19.39.44.png
TS のみ
Tree-sitter を入れて set conceallevel=0 だとこの表示です。色がリッチになります。
TS + se cole=2
レベル 1 に加えて、set conceallevel=2 するとこの表示です。チェックボックスが見易くなったかな?
render-markdown
更に render-markdown を入れました。表や引用マークが変わってますね。

Obsidian を便利に使う

epwalsh/obsidian.nvim

Obsidian 特有の記法(文書間のリンクなど)がきちんとハイライトされるようになったり、hrsh7th/nvim-cmp(自動補完)や nvim-telescope/telescope.nvim(ファジーファインダー)を使ってより素早く文書を読んだり書いたりできます。

スクリーンショット 2024-05-18 16.41.44.png

このプラグインにより、リンクを書く時補完も効きます。

delphinus/obsidian-kensaku.nvim

Obsidian 文書の全文検索をローマ字で行うプラグインです。lambdalisue/vim-kensaku を利用しています。

demo-egrepify.png

ツリー形式で開けるファイラー

Obsidian アプリの左側にあるファイラーが、Neovim にもあると便利ですね。これも星の数ほどあるので好きなやつを選びましょう。

僕は 2 画面ファイラーとして使える、vfiler が好きですね。

終わりに

以上です。いいですよ。Neovim と Obsidian。

34
23
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
23