{"id":28739338,"url":"https://github.com/melkyr/learn-vim","last_synced_at":"2025-06-16T06:02:51.563Z","repository":{"id":289551043,"uuid":"971632656","full_name":"melkyr/learn-vim","owner":"melkyr","description":"Plugin for neovim just focused on learning it.","archived":false,"fork":false,"pushed_at":"2025-05-21T23:38:02.000Z","size":98,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-05-22T00:37:50.615Z","etag":null,"topics":["documentation","neovim","neovim-lua-plugin","neovim-plugin","tutorial-exercises","tutorials","vim"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/melkyr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-23T20:23:06.000Z","updated_at":"2025-05-21T23:37:33.000Z","dependencies_parsed_at":"2025-04-23T21:44:05.647Z","dependency_job_id":null,"html_url":"https://github.com/melkyr/learn-vim","commit_stats":null,"previous_names":["melkyr/learn-vim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/melkyr/learn-vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melkyr%2Flearn-vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melkyr%2Flearn-vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melkyr%2Flearn-vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melkyr%2Flearn-vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/melkyr","download_url":"https://codeload.github.com/melkyr/learn-vim/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melkyr%2Flearn-vim/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260109456,"owners_count":22960023,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","neovim","neovim-lua-plugin","neovim-plugin","tutorial-exercises","tutorials","vim"],"created_at":"2025-06-16T06:00:56.242Z","updated_at":"2025-06-16T06:02:51.524Z","avatar_url":"https://github.com/melkyr.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LearnVim.nvim\n\nAn interactive tutorial plugin for Neovim to help users learn Vim's modal editing and basic commands directly within the editor.\n\n---\n\n## 📚 About\n\n**LearnVim.nvim** provides a structured, interactive way to learn the fundamentals of Vim's modal editing paradigm and essential commands without leaving your Neovim environment. It splits your window into a tutorial pane (explaining concepts) and an exercise pane (where you practice). Progress is saved automatically.\n\n---\n## ✨ Motivation and Comparison\n\nLearning Vim can feel daunting at first due to its modal nature and vast command set. While resources like the built-in `vimtutor` and various books are invaluable, they often require switching contexts or don't fully leverage the interactive capabilities of the editor itself.\n\n* **`vimtutor`**: Excellent for a quick, basic introduction, but limited in scope and structure. It's a single, linear experience without persistent progress or modular lessons.\n\n* **Books/Online Guides**: Provide in-depth knowledge but require reading outside the editor you're trying to learn, making immediate practice less seamless.\n\n**LearnVim.nvim** aims to bridge this gap by offering:\n\n* **Integrated Experience**: Learn and practice directly within your Neovim instance, using the actual environment you'll be working in.\n\n* **Structured Curriculum**: Progress through modules and lessons covering core concepts systematically.\n\n* **Interactive Exercises**: Hands-on practice in a dedicated pane, with validation to check your understanding.\n\n* **Persistent Progress**: Pick up where you left off across Neovim sessions.\n\n* **Modular Design**: Easily add or modify lessons and modules.\n\nThis plugin is designed to be a stepping stone, providing a guided, practical introduction that complements other resources and helps build muscle memory for common Vim tasks in a real editing environment.\n\n\n\n## ⚙️ Installation\n\nInstall using your favorite Neovim package manager.\n\n### Using [lazy.nvim](https://github.com/folke/lazy.nvim)\n\nAdd this to your plugins list in `init.lua`:\n\n```lua\n{ 'melkyr/learn-vim.nvim' }\n```\n\n### Using [Packer](https://github.com/wbthomason/packer.nvim)\n\nAdd this to your plugins list in `init.lua`:\n\n```lua\nuse 'melkyr/learn-vim.nvim'\n```\n\n### Using [vim-plug](https://github.com/junegunn/vim-plug)\n\nAdd this to your `init.vim` or `init.lua`:\n\n```vim\nPlug 'melkyr/learn-vim.nvim'\n```\n\nAfter adding the plugin, run the appropriate command for your package manager to install it:\n\n- `:Lazy sync`\n- `:PackerSync`\n- `:PlugInstall`\n\n---\n\n## 🚀 Usage\n\nThe primary way to interact with the tutorial is through the `:LearnVim` command.\n\n---\n\n## 🧠 Curriculum (In Progress)\n\nThe tutorial covers the following topics:\nModule 1: Introduction to Vim\n\n    What is Vim?\n    Modal Editing\n    Normal Mode\n    Insert Mode (i)\n    Command-line Mode (:)\n    Saving (:w) and Quitting (:q, :wq, :q!)\n\nModule 2: Basic Movements\n\n    Character Movements (h, j, k, l)\n    Word Movements (w, b, e)\n    Line Movements (0, ^, $)\n\nModule 3: Counts and Repetition\n\n    Repeating the Last Change (.)\n    Undo (u) and Redo (\u003cC-r\u003e)\n    Combining Counts with Movements\n\nModule 4: Deletion and Changing\n\n    Deleting Text (d)\n    Changing Text (c)\n    Deleting Lines (dd)\n    Changing Lines (cc)\n    Combining Deletion/Changing with Movements\n\nModule 5: Yanking and Putting\n\n    Yanking (Copying) Text (y)\n    Putting (Pasting) Text (p, P)\n    Yanking Lines (yy)\n    Combining Yanking with Movements\n\nModule 6: More Insertion Modes\n\n    Insert at Beginning of Line (I)\n    Append at End of Line (A)\n    Open Line Below (o)\n    Open Line Above (O)\n\nModule 7: Finding, Searching, and Replacing\n\n    Character Finding on a Line (f, F, t, T, ;, ,)\n    Basic Searching (/, ?, n, N)\n    Combining Counts with Find/Search\n    Simple Find and Replace (:s)\n    Search Highlighting (:set hlsearch, :nohlsearch)\n\nModule 8: Command-line Mode and Registers\n\n    Introduction to Command-line Mode (:)\n    Ranges with Commands (:1,5, :.,$, :%, :g/pattern/)\n    Introduction to Registers (\", named registers a-z)\n    Special Registers (\", 0, %, #, :, /, .)\n    The Black Hole Register (_)\n    The Selection and Clipboard Registers (*, +)\n    Testing System Clipboard Integration\n\nModule 9: Advanced Editing and Navigation\n\n    Multiline Visual Editing (V, \u003cC-v\u003e)\n    Repeating Multiline Actions (.)\n    Matching Braces/Brackets/Parentheses (%)\n    Applying Actions with % (e.g., d%, c%, y%)\n\nModule 10: Macros\n\n    Recording Macros (q)\n    Playing Back Macros (@, counts with @)\n    Macros for Repetitive Editing (Parts 1-6, with various languages)\n\nModule 11: Final Test\n\n    Mixed exercises testing skills from previous modules, using various programming languages.\n    Congratulatory message and ASCII art.\n\nModule 12: Buffers, Windows, and Tabs\n\n    Introduction to Buffers, Windows, and Tabs\n    Navigating Buffers (:ls, :bnext, :bprev, :buffer, :bd)\n    Splitting Windows (:split, :vsplit)\n    Navigating Windows (\u003cC-w\u003e h/j/k/l/w/W/c/q)\n    Working with Tabs (:tabnew, :tabnext, :tabprev, :tabclose, :tabonly, {number}gt)\n    Combining Buffers, Windows, and Tabs\n\nModule 13: Text Objects\n\n    Introduction to Text Objects (i, a)\n    Sentence and Paragraph Objects (s, p)\n    Delimiter Objects ((), [], {} etc., \", ', ```)\n    Combining Operators with Text Objects (d, c, y, v)\n\nModule 14: Customizing Vim\n\n    Your Vim Configuration File (~/.vimrc, init.lua, init.vim, $MYVIMRC)\n    Setting Options (:set, vim.opt)\n    Creating Mappings (:map, :noremap, modes)\n    The Leader Key (\u003cleader\u003e)\n    Using \u003cPlug\u003e\n    Exploring Options and Colors (:h, :highlight, vim.api.nvim_set_hl)\n    Congratulatory message and ASCII art (End of Tutorial)\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! If you'd like to improve the tutorial, fix bugs, or add new features, please:\n\n1. Fork the repository\n2. Create a new branch for your feature or fix\n3. Commit your changes with clear messages\n4. Push to your fork and submit a pull request\n\nPlease ensure your code follows the existing style and includes relevant tests or documentation.\n\n---\n\n## 📄 License\n\nThis project is licensed under the [APACHE 2.0 License](LICENSE).\n\n---\n\nHappy Vimming! 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelkyr%2Flearn-vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmelkyr%2Flearn-vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelkyr%2Flearn-vim/lists"}