NeoVim
Inhaltsverzeichnis
Wie du dein Vimwiki mit Git automatisch synchronisierst
Einleitung
Vimwiki ist ein großartiges Tool für persönliche Notizen, Journaling und Wissensmanagement direkt im Neovim-Editor. Wenn du auf mehreren Geräten arbeitest oder einfach deine Daten sichern möchtest, bietet sich die Integration mit Git an. In diesem Beitrag zeige ich dir, wie du:
- Vimwiki im Markdown-Format einrichtest
- ein Git-Repository für dein Wiki nutzt
- automatische Synchronisation beim Speichern und Öffnen einrichtest
- ein Kommando
:Wsync
für manuelles Pushen hinzufügst
Voraussetzungen
- Neovim >= 0.8 (idealerweise 0.10+)
- Vimwiki installiert über
lazy.nvim
odervim-plug
- Git ist installiert und initialisiert im Vimwiki-Ordner:
cd ~/vimwiki git init git remote add origin git@github.com:DEINUSER/vimwiki.git
1. Vimwiki im Markdown-Modus konfigurieren
In deiner init.lua
oder vor dem Laden des Plugins:
vim.g.vimwiki_list = {
{
path = '~/vimwiki/',
syntax = 'markdown',
ext = '.md',
diary_rel_path = 'diary/',
diary_index = 'journal-index',
auto_diary_index = 1,
}
}
vim.g.vimwiki_global_ext = 0
vim.g.vimwiki_markdown_link_ext = 1
vim.g.vimwiki_diary_template = '~/.vimwiki/diary_template.md'
vim.g.vimwiki_diary_header = ' '
2. Lua-Funktion zum Git-Sync
Speichere diese Datei als ~/.config/nvim/lua/plugins/config/sync.lua
:
-- plugins/config/sync.lua
local function wiki_git_sync()
local wiki_path = vim.fn.expand("~/vimwiki")
local check_changes = vim.fn.system("cd " .. wiki_path .. " && git status --porcelain")
if check_changes ~= "" then
local cmd = [[
cd ]] .. wiki_path .. [[ && \
git add . && \
git commit -m "Autosync: ]] .. os.date("%Y-%m-%d %H:%M:%S") .. [[" >/dev/null 2>&1 && \
git pull --rebase >/dev/null 2>&1 && \
git push >/dev/null 2>&1
]]
os.execute(cmd)
end
end
-- :Wsync manuell aufrufbar
vim.api.nvim_create_user_command("Wsync", wiki_git_sync, {})
-- Beim Speichern automatisch synchronisieren
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = {"~/vimwiki/*.md", "~/vimwiki/**/*.md"},
callback = wiki_git_sync,
})
-- Beim Öffnen automatisch Pull ausführen
vim.api.nvim_create_autocmd("BufEnter", {
pattern = {"~/vimwiki/*.md", "~/vimwiki/**/*.md"},
callback = function()
os.execute("cd ~/vimwiki && git pull --rebase >/dev/null 2>&1 &")
end,
})
3. Integration in plugins/init.lua
{ "vimwiki/vimwiki", config = function()
require("plugins.config.vimwiki")
require("plugins.config.sync")
end },
4. Dein Workflow ab sofort
- ✍️ Schreibe Einträge wie gewohnt mit
\jj
,\ji
etc. - 💾 Beim Speichern wird automatisch synchronisiert
- 🧠 Beim Öffnen bekommst du die aktuellste Version per Pull
- 🤖 Mit
:Wsync
kannst du manuell synchronisieren
Optional kannst du mit cron
, rsync
oder Cloud-Lösungen eine zusätzliche Backup-Strategie kombinieren.
Fazit
Mit dieser Konfiguration hast du ein sicheres, portables und automatisiertes Journalsystem, das sich ideal in deinen Coding-Workflow integriert. Du arbeitest vollständig offlinefähig und kannst jederzeit mit Git deine Inhalte zurückholen, teilen oder auf mehreren Geräten nutzen.
Wenn du noch Features wie :GenerateWeek
, mobile Integration oder Obsidian-Kompatibilität willst – lass es mich wissen 😎
Kaffee
Über einen Kaffee würde ich mich auf jeden Fall freuen.