See gallery and random showcases for more...
- Easy to Change: Using a different plugin is as easy as tweaking
false
->true
inoxo_config.lua
. - Minimalist Design: Clean and focused user interface.
- Modern Plugins: Oldies can be goodies, but some of these new plugins just better(ies?)
- Modular Configuration: Easy to extend and maintain.
- Intuitive Keybindings: Streamlined navigation and editing experience.
- Rich Developer Tools: LSP, Treesitter, Git integration, and more.
- Enhanced Aesthetics: Eye-pleasing themes.
- LSP diagnositcs
- Multi-line EasyMotion via Hop
2024-12-27@11.54.50.December-27.mp4
- File fuzzy searching (fzf-lua)
- Better quickfix lists and opening results into paneled splits on the same buffer (fzf-lua + bqf)
2024-12-24@04.49.43.December-24.mp4
- Motions:
- Spider (
w
onB
forBufReadPre
goes toR
instead of next word) - Hop (
fts
search across buffer forts
).
- Spider (
2024-12-22@14.39.15.December-22.mp4
- Backup Your Existing Configuration
Before proceeding, ensure you back up your current Neovim configuration to avoid losing any important settings:mv ~/.config/nvim ~/.config/nvim.backup mv ~/.local/share/nvim ~/.local/share/nvim.backup mv ~/.cache/nvim ~/.cache/nvim.backup
- Clone the repository into your Neovim config directory:
git clone https://github.com/lcpichette/sensible-oxo ~/.config/nvim
Below you can see the oxo_config.lua
file (subject to change, as TODOs indicate):
return {
-- Functionality-level
autocomplete = {
blink = true,
},
dap = false, -- TODO: Expand to permit specifying DAPs
lsp = true, -- TODO: Expand to permit specifying LSPs
lint = true, --etc.
format = true, --etc.
fancyLSPPreviews = true,
improvedMotions = true, -- Spider.nvim
lspStatusIndicators = true, -- Messages visible bottom right indiciating load status of LSPs
fileSearch = {
fzf_lua = true,
},
quickfix = {
quicker = true,
},
statusline = {
lualine = false,
statusline = true,
},
autopairs = {
mini = true,
autopairs = false,
},
commentToggling = true,
-- Package-level
git = {
neogit = true, -- UI Git interaction in neovim; "Magik" for nvim
gitsigns = true, -- git diff indicators in buffer (left of line numbers)
},
neorg = false,
grugfar = false,
markview = true,
blankline = true,
hardtime = false,
glance = true,
-- Experimental Custom Plugins
custom = {
notes = true, --TODO: Make this config opt matter
silver_search = false, --TODO: Make this config opt matter
search_utils = true, --TODO: Make this config opt matter
},
}
In the above, for example, by changing dap = false
to dap = true
, we enable a few plugins that enable DAP keybinds and plugins! I went ahead and recorded this example into a kind of Configuration "Demo" video, so that you can see how it works. In the video we see mappings and plugins being enabled and disabled as per what's set in the config.
sensible-oxo-DAP.mp4
Plugin | Purpose |
---|---|
alpha-nvim | Start screen customization |
arrow.nvim | Smooth navigation and UI enhancements |
Comment.nvim | Commenting utility |
conform.nvim | Automatic formatting |
dressing.nvim | UI improvements for input/select |
fidget.nvim | LSP progress indicators |
fzf-lua | Fuzzy finder |
gitsigns.nvim | Git integration |
hop.nvim | Quick navigation |
indent-blankline.nvim | Indentation guides |
lazy.nvim | Plugin manager |
lualine.nvim | Statusline |
noice.nvim | Enhanced messaging |
nui.nvim | UI components library |
nvim-lspconfig | Configurations for LSP |
nvim-notify | Notification system |
nvim-treesitter | Syntax highlighting |
nvim-web-devicons | File icons |
oil.nvim | File explorer |
oxocarbon.nvim | Theme |
plenary.nvim | Common utilities |
targets.vim | Extended text objects |
todo-comments.nvim | Highlight and search TODOs |
vim-sleuth | Indentation detection |
which-key.nvim | Keybinding hints |
cmp-buffer | Autocompletion source for buffer |
cmp-nvim-lsp | LSP source for nvim-cmp |
cmp-path | Path completion |
mason-lspconfig.nvim | Mason LSP configs |
mason.nvim | LSP/DAP installer |
nvim-autopairs | Auto-closing pairs |
nvim-bqf | Better quickfix window |
nvim-cmp | Completion engine |
nvim-spider | Enhanced motions |
showkeys.nvim | Display active keybindings |
trouble.nvim | Diagnostics and quickfix UI |
vim-startuptime | Startup profiling |
grug-far.nvim | Search and replace w/ friendly UI |
neogit | Even with its 25ms+ impact, the impact comes upon starting the command :Neogit <...> -- the startup time of neovim (nvim <...> ) isn't actually impacted. |
These are plugins that I may want to enable in the future -- whether I find myself needing them, willing to compromise the performance hit for them, or find additional ways to better mitigate their performance hits.
Due to this, I've left them in the codebase but disabled (no performance hit).
Plugin | Purpose |
---|---|
rainbow-delimiters.nvim | Disabled |
hardtime.nvim | Discourage bad habits; Disabled bc I find it doesn't pop-up often and it has non-zero perforamance imapct. |
These are plugins I tried and either felt didn't fit within the desired workflow or performance guidelines this project set out to meet.
Plugin | Reason |
---|---|
Neorg | Performance hit was 20+ms, and workflow can be met with simpler tooling |
Telescope | Performance hit was 15+ms even after optimizing it, fzf-lua fits the workflow and is more performant |
Anything AI | Coding is more fun when you know what you're doing |
Trailblazer | Arrow fits my personal development workflow better, open to moving this to disabled instead |
Menu | Anti-synergy between Mouse + Neovim IMO, maybe I'm misunderstanding if it has keyboard potential. Other plugins I'd rather have in exchange for its performance hit. |
Eventually I'd like to make a stupidly-simple interface for updating your neovim configuration while keeping it highly performant (sensible
), with an opinionated styling, workflow, and toolset (oxo
).
I'd like to think I'm 85% of the way their with the oxo
, and about 20% of the way there with the sensible
. Moving away from Astronvim removes bloat and LazyVim is innately pretty-easy to configure and the plugin location and file naming is I believe, mostly, pretty sensible.
To get oxo
to 100% we're going to need community feedback about alternatives (some plugins like fzf-lua vs telescope was a very intentional decision and I will NOT be adding it as a config option due to its a performance issues). Approved (specifiable in config) tools should be able to be turned on and off via the variable config (which does not exist yet). But, if there's a plugin you'd like to see supported via config option specify that in an issue on this repo -- I'm open to suggestions!
NOT STARTED:
- Add project navigation
- Add quick terminal options (floating, horizontal, etc)
- Add sessions, if not too harmful to load time
WIP:
- [~] Variable configs
- Description: Changing variables in a config table
{ ascii_art = "cat" }
to{ ascii_art = "saturn" }
will, in this example, change the ascii art shown by alpha-nvim to be a saturn instead of the current cat. - Establish design Information Architecture that is easy to tweak and read
sensible-oxo
-specific configs that make performant changes to the overall project (We shouldn't load every config option; only load what we need and only when we need it) - Create config structure and default file.
- [~] Support the following config options:
- Ascii Art changes to "dashboard"
{ ascii_art = "cat" }
- "Magic" LSP,Lint,Format selection based on desired supported filetypes
{ support_fts = { "lua", "ts", "js", "zig", "jsx", "tsx" } }
- Git (buffer)
{ git_buffer = true }
- Diagnostics (buffer)
{ diagnostics_buffer = true }
- Lualine selectable presets
{ lualine_preset = "default" }
- Commandline location
{ commandline_style = "floating" }
- Ascii Art changes to "dashboard"
- Description: Changing variables in a config table
DONE:
- Change
/
to use fzf-lua + vim search register w/ Oxo highlighting. - Fix inconsistent coloring in ascii art
- Add custom notes
- Syntax highlighting
- Persistent changes
- Incredibly quick to load notes and the module
Inspired by nyoom.nvim.
Built with ❤️ using Neovim and the amazing plugin ecosystem.