Code-aware, local-first note-taking for IntelliJ-based IDEs. Capture snippets while you code, organize them in a three-level hierarchy (Notebook > Chapter > Note), and keep everything in a single SQLite file on your own machine — no cloud, no account, no telemetry.
Works with both Community and Ultimate editions. Requires IntelliJ IDEA 2023.3+ and Java 17+.
中文文档:README.zh-CN.md
A local-first notebook that lives inside your IDE. Notes are organized in a three-level hierarchy:
Notebook > Chapter > Note
Each note is a piece of text or code with optional description, source path, original offsets, and image attachments. Everything is stored in a single SQLite file under your home directory — no cloud, no account, no telemetry.
- Capture from the editor — Select text or code → right-click Add to Notebook (or
Ctrl+\). Source file path and offset range are captured automatically. - Insert back into the editor —
Ctrl+Shift+\or right-click Insert note into editor pastes a saved note at the caret. - Three-level organization — drag rows within a table to reorder, drag a chapter onto another notebook to move it across, same for notes across chapters.
- Search —
Alt+Sin the editor opens a search dialog. Scopes: titles only, titles + content, titles + description, or full-text. - Image attachments — JPG/PNG/GIF up to 10 MB. Thumbnails generated at 100×100 automatically.
- Import / Export JSON — Full round-trip backup of all notebooks, chapters, notes, and referenced images.
- Export as Markdown (single notebook) — Flat markdown file generated from a customizable Groovy template.
- Export as Markdown Tree (new in 1.41) — Every notebook / chapter / note written to a portable folder tree, one
.mdper note, with YAML frontmatter and_assets/image folder. Ready to drop into Obsidian or Typora. - Automatic database backup (new in 1.41) — Each plugin version upgrade copies your SQLite file to
~/.ideaNotebooksFile/backups/before any schema migration. Last 5 backups are kept. - Bilingual UI — English & Simplified Chinese.
File → Settings → Plugins → Marketplace- Search for
Notebook - Install → restart IDE
- Download the latest ZIP from JetBrains Marketplace or this repo's Releases page.
File → Settings → Plugins → ⚙️ → Install Plugin from Disk…
| Path | Contents |
|---|---|
~/.ideaNotebooksFile/notebooks.db |
SQLite database: notebooks, chapters, notes |
~/.ideaNotebooksFile/notebook_images/ |
Attached images and thumbnails |
~/.ideaNotebooksFile/backups/ |
Automatic version-upgrade backups |
The database is shared across all IDE projects on the same machine — you always see the same notes. Only UI state (last selected item, pane visibility) is stored per-project.
| Shortcut | Action |
|---|---|
Ctrl + \ |
Add selection to Notebook |
Ctrl + Shift + \ |
Insert note into editor |
Alt + S |
Search notes |
Alt + O |
Activate Notebook tool window |
Shift + Alt + S |
Open notebook search bar |
File → Settings → Tools → Notebook
- Font & font size for code editor
- Thumbnail max size
- Restore last selection on startup
- Markdown export template (Groovy)
- Show "Add to Notebook" for empty selection
If you ever want to leave this plugin — or just want a portable backup — use the gear menu (⚙️) on the Notebook tool window:
- Export JSON — full database + images, for round-trip re-import later.
- Export as Markdown Tree — one
.mdper note, organized as<notebook>/<chapter>/<note>.mdwith an_assets/image folder per notebook. Obsidian-friendly.
Nothing is locked in.
Requires JDK 21 (JBR 21 recommended; pinned by gradle.properties → org.gradle.java.home).
# compile + package
./gradlew build
# launch a sandbox IDE with the plugin installed
./gradlew runIde
# run JetBrains Plugin Verifier (multi-IDE compat)
./gradlew verifyPlugin The built plugin ZIP lands in build/distributions/.
| Package | Responsibility |
|---|---|
ui/ |
Swing panels, tables, dialogs, settings |
action/ |
Editor actions (Ctrl+\ etc.) |
service/ / service/impl/ |
Business services (DB-backed) |
dao/ / dao/impl/ |
SQL access via Apache DBUtils |
entity/ |
Data model: Notebook, Chapter, Note, … |
utils/ |
Import / export, file helpers, i18n |
projectservice/ |
Project-scoped UI state & message-bus listeners |
For a detailed architecture reference, see internal dev docs (not shipped in releases).
Licensed under the Apache License, Version 2.0.
Copyright (c) LeeWyatt
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- Issues / feature requests: GitHub Issues
- Email: leewyatt7788@gmail.com
- QQ group: 715598051
Thanks to @Yii.Guxing, @albert flex, @因为许多.许多!, @来日方长 and every user who has reported bugs and shared feedback over the years.