vimniscient

Get fluent in Vim with fifteen minutes a day, in your own Neovim.

You've done vimtutor, you can get around, and you still reach for jjjj and Backspace. Vimniscient gives you real editing tasks in the editor you already use, shows you the shorter way, and brings each skill back until it sticks.

$ uv tool install git+https://github.com/dialectmaterial/Vimniscient

then run vimniscient · Linux, Neovim 0.10+, Python 3.11+ · free and open source (AGPL)

a lesson, in your own Neovim
LEARN 1/6 Fix "while" to "whole".
1
YOU keys 0 · ref 9:Hint  :Skip  :Reset  :q quit
1
typed
NORMALpractice.txt

The goal on top, your text below, the difference highlighted. When they match, the next task loads by itself.

1 Learn

Every lesson starts with each task and the keys to type shown next to it. You use exactly what you'll have to remember, in your hands, before anything is asked of you.

type ciwwhole<Esc>

2 Recall

Then the same skills come back on different text, in a different order, with the keys hidden. Only this round counts. Every task has more than one text, so you remember the skill, not the sentence. And the texts are mnemonic: they say what the keys stand for (ciw is change inner word), or how memory works.

from memory Fix "spaec".

3 Compare

Keystrokes are counted the way VimGolf counts them. Afterwards you see your keys next to the reference solution: if ciwbuf<Esc>.. took you 14 keys and the reference does it in 10, you'll see how.

4 Repeat

Spaced repetition, like Anki, brings each task back just before you'd forget it: sooner when it went badly, later when it went well. Can't recall one? :Skip it, see the answer, type it once, and get it again at the end.

A day with Vimniscient

Press t once a day. That's the whole habit.

1 Today
  • ›Cards3 due · 10 new
  • ›Drills2 drills
  • ›Review5 tasks
  • ›LessonW2 D3 · The cgn trick
  • ›VimGolftoday's challenge
  • ∞Endlessbest level 34
2 Lessons
  • Week 1
  • ✓1 Word text objects
  • ✓2 Quotes, brackets and tags
  • ✓3 Sentences and paragraphs
  • ○4 Find and till on a line
  • Week 2
  • ✓1 The dot command
  • ◐2 Searching as a motion 3/5
  • ·3 The cgn trick
Week 2 · Day 3 · The cgn trick

gn selects the next search match. So cgn changes the next match, and . then changes the one after that. Search once (with / or *), cgn the first, then press . per match.

New keys cgn dgn *cgn n.

Progress

6-day streak · 9/37 lessons · hardtime blocking

keystroke efficiency, last 14 days

t today ⏎ open ⇥ pane e endless c cards d drills g golf s stats
  1. Cards. Short prompts ("Change everything inside the quotes"), where you type the keys (ci"). Due ones first, then up to ten new.
  2. Review. Tasks from earlier days that are due again, each on its next text.
  3. Today's lesson. Learn, then Recall.
  4. VimGolf. One real challenge from vimgolf.com a day, the most played first, scored against the leaderboard.

∞ Endless

Time left over? Press e. Tasks from every lesson, one after another, for as long as you like. Each one you solve climbs a level. New lessons join the mix as you climb, and the key budget shrinks, from about twice the reference to exactly the reference by level 200.

Go over the budget and it's a miss: you see the answer, type it with the keys shown, and a couple of tasks later the same skill comes back on another text, from memory.

level 1
23 keys
level 60
20 keys
level 120
17 keys
level 201
11 keys

budget for a task the reference solves in 11 keys

What you'll learn

37 lessons and 194 tasks over six weeks, one lesson a day. Every reference solution is tested, typed at full speed into a real Neovim.

1

Text objects (ciw, da", dap), f/t, line commands, counts

2

The dot command, search as a motion, cgn, case and numbers, insert mode done well, visual mode

3

Macros, registers, marks, visual block, :s and :g

4

Ranges (:m, :t), :sort and shell filters, patterns, :norm, more motions, indenting

5

LazyVim's text objects (arguments, any quote or bracket, functions, sub-words) and comments, if you use LazyVim

6

Real edits on code, notes and data, each mixing several tools

It adapts to your setup

It reads what you have installed and leaves out what you don't. It never changes your config.

Neovim
Weeks 1–4 and 6, Vim and shell cards, VimGolf
LazyVim
Week 5, plus cards for the keymaps in your own config, named as you named them
hardtime.nvim
The habits it catches you in become cards, and leaning on hjkl brings the motion lessons back
Omarchy / Hyprland
Cards for every desktop and tmux binding, and live drills checked through Hyprland's events: "send this window to workspace 9 and fetch it back". And, if you like, a reminder when you start your day, saying how many minutes are left, that stops once you're done
foot, Zathura
Cards for their keys

Questions

Why not vimtutor, Vim Adventures or VimGolf?

Use them! vimtutor teaches the basics, and this picks up after it. Vimniscient runs in your real editor, schedules what you need to repeat, and turns VimGolf into a daily habit.

Does it work with my plugins?

Yes, that's the point. During a lesson it only turns off what would type for you (autopairs, completion, format-on-save) and plugins that replay or block your keys (which-key, hardtime). Everything else is your Neovim as you left it.

Where is my progress kept?

In ~/.local/share/vimniscient/, on your machine. Nothing is sent anywhere.

Can I write my own lessons?

Lessons are YAML files: a goal, a start text with a ▮ for the cursor, a target, a reference solution, and other texts for the same skill. The README shows how, and a checker types every solution into Neovim to prove it works.

Start with the placement test

Press p on the first run. It gives you two tasks from every lesson and skips the ones you already know. After that, t once a day.

$ uv tool install git+https://github.com/dialectmaterial/Vimniscient