A refined oil.nvim — edit your filesystem like a buffer, with bug fixes and community PRs that haven't landed upstream.
Upstream tracker — full PR and issue triage against oil.nvim
oil.demo.mp4
- Edit directory listings as normal buffers — mutations are derived by diffing
- Cross-directory move, copy, and rename across any adapter
- Adapters for local filesystem, SSH, S3, and OS trash
- File preview in split or floating window
- Configurable columns (icon, size, permissions, timestamps)
- Executable file highlighting and filetype-aware icons
- Floating window and split layouts
- Neovim 0.10+
- (Optionally) any of the following icon providers:
Install with your package manager of choice or via luarocks:
luarocks install canola.nvim
:help canola.nvimQ: How do I migrate from stevearc/oil.nvim?
Change the plugin source and replace setup() with vim.g.canola in init.
The configuration table is identical — only the entry point changes. For
example, with lazy.nvim:
Before (stevearc/oil.nvim):
{
'stevearc/oil.nvim',
opts = { ... },
config = function(_, opts)
require('oil').setup(opts)
end,
}After (barrettruth/canola.nvim):
{
'barrettruth/canola.nvim',
opts = { ... },
config = function(_, opts)
require('canola').setup(opts)
end,
}init runs before the plugin loads; config runs after. oil.nvim reads
vim.g.canola at load time, so init is the correct hook. Do not use config,
opts, or lazy — oil.nvim loads itself when you open a directory.
Q: Why "canola"?
Canola oil! But...
Q: Why "oil"?
From the vim-vinegar README, a quote by Drew Neil:
Split windows and the project drawer go together like oil and vinegar
Q: What are some alternatives?
- stevearc/oil.nvim: the original
- mini.files: cross-directory filesystem-as-buffer with a column view
- vim-vinegar: the granddaddy of single-directory file browsing
- dirbuf.nvim: filesystem as buffer without cross-directory edits
- lir.nvim: vim-vinegar style with Neovim integration
- vim-dirvish: stable, simple directory browser