NVIM_APPNAME を使えばかなり快適にいけるんじゃないか? と気付いたので書き直し。ver.1はこちら
この方針だと、日報を書くときにだけ使う設定が足せる。プラグインを入れたり、カラースキームを変更するのが簡単。
手順
- ディレクトリを作る (
mkdir ~/.config/nvim-memo
) - 各ファイルのシンボリックリンクを作る (
ln -sf ~/.config/nvim/lua ~/.config/nvim-memo/lua
) - init.lua を書く
- エイリアスを設定する (
alias memo="NVIM_APPNAME=nvim-memo nvim"
)
init.lua はこんな感じ。先頭の方は通常時のinit.luaとだいたい同じ。後半に日報ファイルの生成処理とかが追加されている。
---@diagnostic disable-next-line: undefined-global if vim.loader then vim.loader.enable() end -- 通常のinit.luaと同様の設定を読み込み require('options') require('disable-providers') require('keymappings') require('install-lazynvim') require('userautoload.indent') require('userautoload.filetype') require 'lazy'.setup('plugins', { change_detection = { notify = false }, }) -- ==================== -- ↓ 以下が日報用の設定 local function get_weekdays() local today = os.date('*t') -- 今日の日付を取得 local month = today.month -- 現在の月 local year = today.year -- 現在の年 local res = {} for i = 1, 31 do local d = os.time({ year = year, month = month, day = i, hour = 0, min = 0, sec = 0 }) local d_table = os.date('*t', d) -- 日付をテーブル形式に変換 -- 月が変わった場合はループを終了 if d_table.month ~= month then break end -- 週末の場合はスキップ if d_table.wday == 1 or d_table.wday == 7 then goto continue end -- 結果をフォーマットしてリストに追加 table.insert(res, string.format('# %d/%d/%d(%s)', d_table.year, d_table.month, d_table.day, ({ '日', '月', '火', '水', '木', '金', '土' })[d_table.wday])) ::continue:: end -- 結果を逆順に並べ替え local result = {} for i = #res, 1, -1 do table.insert(result, res[i]) end return table.concat(result, '\n') -- 結果を結合して返す end local dir = os.getenv('HOME') .. os.date('/Documents/daily-report/%Y') local filename = os.date('%m.md') local filepath = dir .. '/' .. filename -- 今月の日報ファイルが存在しなければ作成する os.execute('mkdir -p ' .. dir) local file = io.open(filepath, 'r') if file then file:close() else file = io.open(filepath, 'w') if file then file:write(get_weekdays()) file:close() end end -- 日報ファイルを開く vim.cmd('e ' .. dir .. '/' .. filename) -- 今日の日付の行にnマークをつける local date_table = os.date('*t') vim.fn.search(string.format('%d/%d/%d(', date_table.year, date_table.month, date_table.day)) vim.cmd [[normal mn]] -- 昨日の日付の行にyマークをつける if vim.fn.search(string.format('%d/%d', date_table.year, date_table.month), 'W') ~= 0 then vim.cmd [[normal my]] end -- 今日の日付の位置にジャンプ vim.cmd [[normal `n]]