# artio.nvim A minimal, nature-infused file picker for Neovim using ui2. Inspired by forest spirits and the calm intuition of hunting, Artio helps you gently select files without the weight of heavy fuzzy-finder dependencies. ![preview](./assets/preview.png) ## features Requires Neovim `>= 0.12` - Lightweight picker window built on Neovim's ui2 - Prompt + list UI components - minimal and focused - Fuzzy filtering using matchfuzzy (built-in) - Icon support for common filetypes through [mini.icons](https://github.com/echasnovski/mini.nvim) _(optional)_ - No heavy dependencies - pure Lua ### ui2 artio requires ui2 to be enabled. an example of how to set this up is: ```lua require("vim._core.ui2").enable({ enable = true, msg = { target = "msg", } }) ``` ## installation `vim.pack` ```lua vim.pack.add({{ src = "https://codeberg.org/comfysage/artio.nvim" }}) ``` `lazy.nvim` ```lua { "comfysage/artio.nvim", lazy = false, } ``` ## configuration ```lua require("artio").setup({ opts = { preselect = true, -- whether to preselect the first match bottom = true, -- whether to draw the prompt at the bottom shrink = true, -- whether the window should shrink to fit the matches promptprefix = "", -- prefix for the prompt prompt_title = true, -- whether to draw the prompt title pointer = "", -- pointer for the selected match marker = "│", -- prefix for marked items infolist = { "list" }, -- index: [1] list: (4/5) use_icons = true, -- requires mini.icons }, win = { height = 12, hidestatusline = false, -- works best with laststatus=3 }, -- NOTE: if you override the mappings, make sure to provide keys for all actions mappings = { [""] = "down", [""] = "up", [""] = "accept", [""] = "cancel", [""] = "mark", [""] = "togglelive", [""] = "togglepreview", [""] = "setqflist", [""] = "setqflistmark", }, }) -- override built-in ui select with artio vim.ui.select = require("artio").select vim.keymap.set("n", "", "(artio-files)") vim.keymap.set("n", "fg", "(artio-grep)") -- smart file picker vim.keymap.set("n", "ff", "(artio-smart)") -- general built-in pickers vim.keymap.set("n", "fh", "(artio-helptags)") vim.keymap.set("n", "fb", "(artio-buffers)") vim.keymap.set("n", "f/", "(artio-buffergrep)") vim.keymap.set("n", "fo", "(artio-oldfiles)") ``` ### customize builtin pickers you're able to override the command used to find files: ```lua -- ignore hidden files vim.keymap.set("n", "ff", function() require('artio.builtins').files({ findprg = [[ find . -type f -iregex '.*$*.*' -not -path '*/[@.]*' ]], }) end) ``` # community issues are available on [github][github issues] and [codeberg][codeberg issues]. pr's are limited to [codeberg](https://codeberg.org/comfysage/artio.nvim/pulls) [github issues]: https://github.com/comfysage/artio.nvim/issues [codeberg issues]: https://codeberg.org/comfysage/artio.nvim/issues