【Neovim】memolist.vimを使ってメモをとり、telescope-memo.nvimで検索する
はじめに
コーディング中に調査した内容や、思いついた課題などをVim上でメモをよく取っています。この記事ではVimを使いながらどのようにメモを取っているかとその環境を作るためのツールを紹介します。
メモを作成・検索する様子
メモを作成している様子です。次のようなkeymapを設定しており、メモの作成、検索(list, grep)が行えています。<leader>
にはspaceを利用しています。
key | コマンド |
---|---|
<leader>mn |
:MemoNew<CR> |
<leader>ml |
:Telescope memo list<CR> |
<leader>mg |
:Telescope memo live_grep<CR> |
導入しているツールとその関係性
以下の3つを組み合わせて実現できます。導入方法はそれぞれのREADMEを参照してください。
- Vimプラグイン
-
memolist.vim
-
:MemoNew
やMemoList
といった、vimからメモを作成、検索する機能を提供
-
-
delphinus/telescope-memo.nvim
-
mattn/memo
を実行するTelescopeのextension
-
-
memolist.vim
- CLI
- mattn/memo
- Vimではなくシェルで
memolist.vim
と同様のワークフローが行えるCLI
関係性を図解すると、このようになります。
Vimで使えるプラグインとして元々 memolist.vim
があり、それをシェルからも使いたいということで memo
コマンドを実装された経緯があるとのことです。
さらには telescope-memo.nvim
はTelescopeのextensionとして提供されており、memo
コマンドを内部で実行してメモの一覧やlive_grepを実現しています。普段ありとあらゆる検索をTelescopeを介して行っているため、大変ありがたいです。
それぞれのツールがいい塩梅で噛み合っており、素晴らしいですね。
設定方法
前述の通り memo
と memolist.vim
の設定を揃えることで相互運用ができます。
-
memolist_path
とmemo_dir
-
memolist_template_dir_path
とmemotemplate
を揃えてあげればOKです。私の環境では次のように設定しています。
memolist.vim
vim.g.memolist_path = "~/.memolist/memo"
vim.g.memolist_memo_suffix = "md"
vim.g.memolist_fzf = 1
vim.g.memolist_template_dir_path = "~/.memolist/memotemplates"
memo
memodir = "~/.memolist/memo" # memolist.vimの設定を揃える
editor = "nvim"
column = 20
width = 0
selectcmd = "fzf"
grepcmd = "grep -nH ${PATTERN} ${FILES}"
memotemplate = "~/.memolist/memotemplates/md.txt"
assetsdir = "."
pluginsdir = "~/.config/memo/plugins"
autocmdを作成して保存時にgit commit,pushされるようにする
メモを保管するディレクトリ(memodir
)をgit管理し、メモを保存したタイミングで自動でcommit, pushを行うような仕組みを入れて運用しています。普段はauto_saveのプラグインを入れているのですが、メモを書く場合はoffにして保存時のみgit操作が走るようにしています。
mattn/memo
では pluginsdir
に実行ファイルを置くだけで追加のコマンドを定義できます。(README参照)この機能を利用して plugins_dir
に commit
というシェルスクリプトを置き、 memo commit
で叩けるようにしています。
vim.api.nvim_create_augroup("MemoAutoCommit", { clear = true })
vim.api.nvim_create_autocmd("BufEnter", {
group = "MemoAutoCommit",
pattern = "*/.memolist/memo/*.md",
callback = function()
vim.api.nvim_buf_set_var(0, "auto_save", 0)
end,
})
vim.api.nvim_create_autocmd("BufWritePost", {
group = "MemoAutoCommit",
pattern = "*/.memolist/memo/*.md",
command = "!(memo commit)",
})
#!/bin/bash
cd ~/.memolist
git pull --no-edit
git add .
git commit -m "auto update"
git push origin main
cd -
まとめ
Vimでメモの作成と検索、プラスαでgit操作の自動化について紹介しました。今のところ快適に運用できています。memolist.vimとmattn/memoの噛み合わせ(?)がすごいですね。興味ある方はぜひお試しください!
参考
Discussion