Building a Real Daily Workflow
Vim Intermediate/Advanced
Chapter 8 — Building a Real Daily Workflow
Bringing It All Together
Seven chapters, seven genuinely separate skills: macros, registers, text objects, search/substitution, plugins, Lua configuration, LSP. Each one is useful in isolation — but a real daily workflow is where they stop being separate topics and start reinforcing each other mid-task, without you consciously switching between "macro mode" and "text object mode." This closing chapter is two realistic scenarios that draw on several chapters at once, a consolidated init.lua, and a cheat sheet distilled from the whole course.
Scenario 1 — Refactoring a Data File Into Code
Starting point: a plain-text list of user records, one per line. Goal: a properly formatted array of objects in a source file.
# before: Ada Lovelace, ada@example.com Grace Hopper, grace@example.com Alan Turing, alan@example.com # after: { name: "Ada Lovelace", email: "ada@example.com" }, { name: "Grace Hopper", email: "grace@example.com" }, { name: "Alan Turing", email: "alan@example.com" },
Workflow — combining search/substitute, text objects, and macros
Scenario 2 — Navigating and Fixing a Bug Across Files
Workflow — combining plugins, LSP, text objects, and a macro
Neither scenario needed a "special mode" to move between chapters — the tools composed because they were all designed around the same underlying model from the start (an editable buffer, targetable by motions and text objects, actionable by operators and macros alike).
Assembling a Complete, Minimal init.lua
A consolidated config drawing on Chapters 5–7, small enough to actually read top to bottom:
-- init.lua vim.g.mapleader = " " vim.opt.number = true vim.opt.ignorecase = true -- Ch.5/6 — plugins, lazy-loaded require('lazy').setup({ { 'tpope/vim-surround' }, { 'tpope/vim-commentary' }, { 'junegunn/fzf.vim' }, { 'neovim/nvim-lspconfig' }, { 'hrsh7th/nvim-cmp' }, }) -- Ch.7 — LSP, with navigation keymaps local on_attach = function(client, bufnr) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { buffer = bufnr }) vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr }) vim.keymap.set('n', 'gr', vim.lsp.buf.references, { buffer = bufnr }) end require('lspconfig').pyright.setup({ on_attach = on_attach }) -- Ch.6 — a couple of everyday keymaps vim.keymap.set('n', '<leader>ff', ':Files<CR>') vim.keymap.set('n', '<leader>w', ':w<CR>')
Where to Go From Here
:help is the single most complete reference for anything this course didn't cover — Vim and Neovim's built-in documentation is genuinely thorough, and :help {topic} (e.g. :help text-objects) jumps straight to the relevant section.
init.lua a few lines at a time, as a real need comes up, builds configuration you can actually debug later.
Course Cheat Sheet — One Command to Remember Per Chapter
If You Only Remember One Thing Per Chapter
Course Complete
That's all 8 chapters of Vim Intermediate/Advanced — macros, registers, text objects, search & substitution, the plugin ecosystem, Neovim & Lua configuration, LSP integration, and this closing workflow chapter. Combined with the 8 foundational chapters of Learning Vim, that's a complete path from first keystrokes to a genuinely modern, LSP-powered editing setup.