LoginSignup
0
0

初めてのneovimプラグイン制作

Last updated at Posted at 2024-06-19

モチベーション

neovimをはじめ、様々なOSSを利用させていただいています。
ある時、 このままでいいのか。使うだけの人なってはいけないのでは。。と思い、
自分なりに何か還元できないかと思い、ひとまずneovimのプラグインを作ってみようと
思い立ちました。

プラグイン概要

github
zettelkastenを用いたタグで管理するノート管理です。(タグ周りは今後実装予定)
初期段階では、最小構成として以下の機能を実装しました。

  • ;nnで新規ノート作成
  • ;nfでノートのディレクトリを表示

次段階で、タグ検索機能を実装します。

ノート作成

元々、obsidianで管理していたのもあって、デフォルト値をyaml形式で設定しました。

---
id: YYYYmmddhhmmss
date:  YYYYmmdd
tags: 
    - ""
---

ディレクトリ表示

telescopeと拡張機能のfile_browserを使用して、ディレクトリを表示します。
Screenshot 2024-06-19 at 16.14.32.png

作成してみて

weztermやneovimの設定でluaは触ったことあるのですが、今回初めてちゃんとluaを書きました。
普段からアプリ開発はしているので、そんなに苦戦することはありませんでしたが、lua特有(?)の書き方はちょっと慣れが必要でした。

local M = {
  config = {
    vault = "$HOME/.config/note/",
    keymap = {
      new_file = ";nn",
      fazzy = ";nf"
    }
  }
}

local function create_new_file()
  local path = file.create_new_note_file(M.config.vault)
  file.open_new_file(path)
end

local function open_fazzy()
  fazzy.open_note_filer(M.config.vault)
end

function M.setup(config)
  if config ~= nil then
    M.config = vim.tbl_deep_extend('force', M.config, config)
  end

  vim.keymap.set("n", M.config.keymap.fazzy, function() open_fazzy() end)
  vim.keymap.set("n", M.config.keymap.new_file, function() create_new_file() end)
end

return M

Mは、モジュールというみたいですね。
JSのオブジェクトや、PHPの連想配列みたいなものだと思えば、受け入れ難いことはありませんでした。

今回、とりあえず作ってみた状態なので、luaについてまだまだ潜る必要がありますね。

0
0
0

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
0
0