Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Notes for VS CodeNew to Visual Studio Code? Get it now.
Notes for VS Code

Notes for VS Code

heineiuo

|
2 installs
| (0) | Free
Browse dated notes Markdown files in a movable Explorer section.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Notes

A native, movable Notes section in the VS Code Explorer. It lists Markdown files from every workspace folder matching this layout:

notes/
  2026/
    10/
      09/
        second-note.md
        first-note.md
      08/
        older-note.md
  • Dates must be valid calendar dates, with a four-digit year and two-digit month/day.
  • Notes are sorted by their directory date, newest first, then by full filename in descending, case-sensitive lexical order. Modification time and front matter are not used. Nested files below the day directory are excluded.
  • Click a note to open it in VS Code's built-in Markdown Editor (vscode.markdown.editor), not the read-only Markdown Preview. This requires a VS Code version that includes that editor.
  • Right-click a note and choose Save to save its document and commit only that file to the local Git repository. The message is 保存<filename>文件, for example 保存1.md文件. Other staged changes are not included, and no push is performed. Unchanged files do not create empty commits. Git failures are shown; a failed commit can leave the selected file staged. Git operations use libgit2, not the Git executable; configure the author identity in Git config. Git hooks are not executed. Signed commits are unsupported and Save rejects commit.gpgsign=true. Finish any merge or rebase before using Save.
  • Right-click a note and choose Rename to change its filename within the same date directory. Names must end in .md; existing files are never overwritten. VS Code applies the rename to open documents as well, and refreshes that repository.
  • Right-click a note and choose Delete to permanently delete that file immediately, without confirmation or moving it to Trash. Repository nodes do not offer this action.
  • Use the new-file button next to Refresh (or Notes: New Post) to create an empty notes/YYYY/MM/DD/1.md using the local calendar date. Existing names are skipped (2.md, 3.md, etc.) without overwriting. The file opens focused in the built-in Markdown Editor, regardless of the default .md editor association. Select a repository or one of its notes first; otherwise a multi-root workspace prompts for a repository. Single-root workspaces use their only repository.
  • Drag the Notes section header to reposition it, including the secondary sidebar. Alternatively, right-click its header and use Move View.
  • Drag notes into the editor to open them. Reordering notes or moving files by dropping them into Notes is intentionally unsupported: sorting remains automatic.
  • File creation/deletion refreshes only the affected repository, with event bursts coalesced over 75 ms. Saving note content does not rescan the list. The refresh button and Notes: Refresh command clear all cached lists.
  • In multi-root workspaces, the first level lists repositories in workspace order. Expand a repository to load its sorted notes; repositories without notes remain visible with an empty list. Single-root workspaces show notes directly. Standard search exclusions do not hide notes.

Scanning uses direct directory listings starting at repo/notes, visiting only valid year/month/day directories. It never searches the repository root or reads note contents, and skips symlink entries. Per-repository caches also share in-flight scans, so repeated expansion does not repeat filesystem reads. Workspace changes clear caches and rebuild watchers.

Development

The implementation has two layers:

  • packages/rust-notes-core: file discovery, calendar/name validation, sorting, file operations and single-note Git commits via libgit2.
  • apps/notes-vscode: the Node-API binding (native/ + src/core.cjs), tree presentation, cache/watch refresh, prompts and VS Code document integration. Rename is validated in Rust and applied using WorkspaceEdit so open documents follow the new filename.

Install the pnpm workspace dependencies from the monorepo root. Development and packaging require Rust/Cargo and a C/C++ compiler. Only filesystem repositories on the extension host are supported, not virtual workspace filesystem providers.

Open this extension folder in VS Code and run Run Notes with F5. In the Extension Development Host, open a repository containing a dated notes directory. The launch task builds the native addon and extension bundle first.

pnpm run build
pnpm test
pnpm run check
pnpm run package

Packaging uses the monorepo's existing esbuild and @vscode/vsce tools. The bundle includes the Node wrapper and native addon, with no workspace symlink or node_modules dependency at runtime. A platform-specific VSIX is built for the current host (for example darwin-arm64); build on each target OS/CPU separately. Installed users need neither Rust nor the Git executable. Install the generated VSIX with Extensions: Install from VSIX....

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft