Problem: canola has no way to browse or edit files on FTP servers, despite the adapter system being designed for exactly this pattern. curl speaks FTP natively, including FTPS (FTP over TLS), and requires no new dependencies. Solution: implement `lua/oil/adapters/ftp.lua` with `oil-ftp://` and `oil-ftps://` schemes. Parses Unix and IIS LIST output, supports `size`, `mtime`, and `permissions` columns, and implements the full adapter API (list, read_file, write_file, render_action, perform_action). Same-host renames use RNFR/RNTO; cross-host and local↔FTP copies use curl download/upload through a tmpfile. Adds `extra_curl_args` config option and documents the adapter in `doc/oil.txt`. Based on: stevearc/oil.nvim#210 |
||
|---|---|---|
| .github | ||
| doc | ||
| lua | ||
| perf | ||
| plugin | ||
| scripts | ||
| spec | ||
| syntax | ||
| .busted | ||
| .editorconfig | ||
| .gitignore | ||
| .luarc.json | ||
| .pre-commit-config.yaml | ||
| .prettierrc | ||
| .stylua.toml | ||
| .styluaignore | ||
| canola.nvim-scm-1.rockspec | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
| selene.toml | ||
| vim.yaml | ||
canola.nvim
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
https://user-images.githubusercontent.com/506791/209727111-6b4a11f4-634a-4efa-9461-80e9717cea94.mp4
Features
- 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
Requirements
- Neovim 0.10+
- (Optionally) any of the following icon providers:
Installation
Install with your package manager of choice or via luarocks:
luarocks install canola.nvim
Documentation
:help canola.nvim
FAQ
Q: How do I migrate from stevearc/oil.nvim?
Simply change the plugin source from stevearc/oil.nvim to
barretruth/oil.nvim.
Before (stevearc/oil.nvim):
{
'stevearc/oil.nvim',
opts = { ... },
config = function(_, opts)
require('oil').setup(opts)
end,
}
After (barrettruth/oil.nvim):
{
'barrettruth/oil.nvim',
opts = { ... },
config = function(_, opts)
require('oil').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