An open API service indexing awesome lists of open source software.

https://github.com/greeschenko/vimsidian

Minimalistic Obsidian-like note system inside Vim (Vim9script).
https://github.com/greeschenko/vimsidian

second-brain vim9

Last synced: about 2 months ago
JSON representation

Minimalistic Obsidian-like note system inside Vim (Vim9script).

Awesome Lists containing this project

README

          

# ๐Ÿ““ Vimsidian

Minimalistic Obsidian-like note system inside Vim (Vim9script).

Vimsidian brings wiki-links, backlinks, daily notes, markdown editing helpers, and a fuzzy picker directly into your Vim โ€” no Electron, no bloat.

---

## โœจ Features

* ๐Ÿ”— Wiki links: `[[note-name]]`
* ๐Ÿ“‚ Automatic note creation
* ๐Ÿ”Ž Backlinks search via quickfix
* ๐Ÿ“… Daily notes
* ๐Ÿ” Interactive picker with preview
* ๐ŸŒณ Built-in vault explorer using `:Explore`
* โ˜‘๏ธ Markdown checkbox support
* ๐Ÿ“ Markdown formatting helpers
* ๐Ÿง  Clean architecture (core / ui / editor separation)
* โšก Written in Vim9script

---

## ๐Ÿ“ Project Structure

```text
autoload/
โ”œโ”€โ”€ core/
โ”‚ โ”œโ”€โ”€ backlinks.vim
โ”‚ โ”œโ”€โ”€ daily.vim
โ”‚ โ”œโ”€โ”€ notes.vim
โ”‚ โ”œโ”€โ”€ path.vim
โ”‚ โ””โ”€โ”€ vault.vim
โ”œโ”€โ”€ editor/
โ”‚ โ”œโ”€โ”€ checkbox.vim
โ”‚ โ”œโ”€โ”€ list.vim
โ”‚ โ”œโ”€โ”€ markdown.vim
โ”‚ โ””โ”€โ”€ visual.vim
โ”œโ”€โ”€ ui/
โ”‚ โ”œโ”€โ”€ picker_logic.vim
โ”‚ โ”œโ”€โ”€ picker.vim
โ”‚ โ””โ”€โ”€ wiki_links.vim
โ””โ”€โ”€ vimsidian.vim

plugin/
โ””โ”€โ”€ vimsidian.vim
```

---

## โš™๏ธ Installation

Using vim-plug:

```vim
Plug 'greeschenko/vimsidian'
```

---

## โš™๏ธ Configuration

```vim
let g:vimsidian_vault_path = '~/your-vault'
```

Default:

```text
~/VAULT
```

Notes are stored inside:

```text
{vault}/data/
```

---

## ๐Ÿงพ Commands

```vim
:VimsidianNew {title} " Create or open note
:VimsidianOpen {title} " Open existing note
:VimsidianFollowLink " Follow [[link]] under cursor
:VimsidianToday " Open today's daily note
:VimsidianBacklinks " Show backlinks
:VimsidianPicker " Open note picker
:OpenVaultExplorer " Open vault/data explorer

:VimsidianToggleCheckbox " Toggle checkbox on current line
:VimsidianToggleCheckboxVisual " Toggle checkboxes in visual selection
:VimsidianMakeCheckbox " Convert current line into checkbox

:VimsidianToggleBold " Toggle bold in visual mode
:VimsidianToggleItalic " Toggle italic in visual mode
:VimsidianToggleCode " Toggle inline code in visual mode
:VimsidianToggleCodeBlock " Toggle fenced code block in visual mode
:VimsidianToggleQuote " Toggle quote block in visual mode
:VimsidianToggleList " Toggle markdown list in visual mode
```

---

## โŒจ๏ธ Default Keymaps

### Core

```vim
vv Open picker
vf Follow wiki link under cursor
vt Open today's note
vb Show backlinks
ve Open vault explorer
```

### Markdown Editing

These mappings are enabled automatically for markdown files.

```vim
Normal mode:
Toggle checkbox
Convert line into checkbox
Continue current list / checkbox

Visual mode:
Toggle checkbox
Toggle bold
Toggle italic
Toggle inline code
Toggle code block
Toggle quote block
Toggle markdown list
```

---

## ๐Ÿง  How It Works

### Notes

* Stored as `.md` files
* Located in `{vault}/data/`
* Created automatically when opening a missing note

### Wiki Links

```text
[[my-note]]
[[projects/my-note]]
```

* Automatically resolved via link parser
* Target note is created automatically if missing

### Backlinks

Uses `:vimgrep` across all notes to find references like:

```text
[[current-note]]
```

### Picker

Features:

* Live filtering
* Arrow navigation
* Preview pane

Actions:

* `Enter` โ†’ open note
* `Ctrl-i` โ†’ insert wiki link

### Vault Explorer

Uses Vim built-in `:Explore` / netrw in tree mode.

Explorer opens directly inside:

```text
{vault}/data/
```

---

## ๐ŸŒ Unicode / Cyrillic Support

* Titles remain unchanged (UTF-8)
* File names are transliterated to ASCII

Example:

```text
ะ—ะฐะดะฐั‡ะฐ โ†’ zadacha.md
```

Benefits:

* Stable filenames
* Reliable search
* No encoding issues

---

## ๐Ÿ— Architecture Philosophy

Vimsidian follows a clean layered design:

* `core/` โ†’ business logic
* `ui/` โ†’ Vim interaction layer
* `editor/` โ†’ markdown editing helpers
* `vimsidian.vim` โ†’ public facade

This keeps:

* code testable
* logic reusable
* UI decoupled

---

## ๐Ÿš€ Roadmap

* [ ] Tags support (`#tag`)
* [ ] Media insertion helpers
* [ ] Better fuzzy search scoring
* [ ] Graph view
* [ ] Async file loading
* [ ] File picker integration

---

## ๐Ÿค Contributing

Pull requests are welcome.

Ideas for improvement:

* architecture
* performance
* markdown UX
* picker experience
* vault navigation

Feel free to contribute.