https://github.com/2KAbhishek/exercism.nvim
Exercism Meets Neovim 💪🧠
https://github.com/2KAbhishek/exercism.nvim
exercism language learning neovim plugins practice programming workflow
Last synced: 8 days ago
JSON representation
Exercism Meets Neovim 💪🧠
- Host: GitHub
- URL: https://github.com/2KAbhishek/exercism.nvim
- Owner: 2KAbhishek
- License: gpl-3.0
- Created: 2024-11-14T03:54:21.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-03-30T20:46:14.000Z (21 days ago)
- Last Synced: 2025-04-12T10:58:40.487Z (8 days ago)
- Topics: exercism, language, learning, neovim, plugins, practice, programming, workflow
- Language: Lua
- Size: 126 KB
- Stars: 21
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-neovim-sorted - 2KAbhishek/exercism.nvim
- awesome-neovim-sorted - 2KAbhishek/exercism.nvim
README
exercism.nvim integrates exercism into Neovim by providing a set of commands and keybindngs to help you solve exercises faster.
## ✨ Features
- Browse and choose exercises from the entire exercism library from within Neovim
- Quickly test and submit your solutions
- Review your existing solution for an exercise
- Simple keybindings and commands to make your workflow faster## ⚡ Setup
### ⚙️ Requirements
- [exercism-cli](https://exercism.io/cli) installed and configured
- Make sure to login with `exercism configure`
- [tmux-tea](https://github.com/2kabhishek/tmux-tea) (optional, recommended) for separate tmux sessions for each exercise
- Use `set -g @tea-default-command 'nvim'` for a better experience### 💻 Installation
```lua
-- Lazy
{
'2kabhishek/exercism.nvim',
cmd = {
'ExercismLanguages',
'ExercismList',
'ExercismSubmit',
'ExercismTest',
},
keys = {
'exa',
'exl',
'exs',
'ext',
},
dependencies = {
'2kabhishek/utils.nvim', -- required, for utility functions
'2kabhishek/termim.nvim', -- optional, better UX for running tests
},
-- Add your custom configs here, keep it blank for default configs (required)
opts = {},
},
```## 🚀 Usage
### Configuration
```lua
exercism.setup({
exercism_workspace = '~/exercism', -- Default workspace for exercism exercises
default_language = 'ruby', -- Default language for exercise list
add_default_keybindings = true, -- Whether to add default keybindings
icons = {
concept = '', -- Icon for concept exercises
practice = '', -- Icon for practice exercises
},
})
```### Commands
`exercism.nvim` adds the following commands:
- `ExercismLanguages`: Lists all available languages, select one to list exercises.
- `ExercismList [language]`: Lists exercises for the specified language, if not specified, uses the `default_language`.
- `ExercismTest`: Runs tests for the current exercise.
- `ExercismSubmit`: Submits the current exercise.### Keybindings
Here are the default keybindings:
- `exa` for `ExercismLanguages`
- `exl` for `ExercismList`
- `ext` for `ExercismTest`
- `exs` for `ExercismSubmit`> You can change these by setting `add_default_keybindings` to `false` and adding your own keybindings.
### Help
Run `:help exercism.txt` for more details.
## 🏗️ What's Next
### ✅ To-Do
- [ ] Add tests
## ⛅ Behind The Code
### 🌈 Inspiration
I really like exercism but the back and forth between the browser and the terminal was a bit annoying. So I decided to integrate it with Neovim.
### 💡 Challenges/Learnings
- I build [exercism-fetcher](https://github.com/2kabhishek/exercism-fetcher) to fetch exercises from exercism's github repos.
- Reused knowledge from octohub.nvim, not too many challenges here.### 🔍 More Info
- [octohub.nvim](https://github.com/2kabhishek/octohub.nvim) — GitHub Repos in Neovim
- [nerdy.nvim](https://github.com/2kabhishek/nerdy.nvim) — Find nerd glyphs easily
- [tdo.nvim](https://github.com/2KAbhishek/tdo.nvim) — Fast and simple notes in Neovim
- [termim.nvim](https://github.com/2kabhishek/termim.nvim) — Neovim terminal improved
⭐ hit the star button if you found this useful ⭐
Source
| Blog
| More Links
| Other Projects