telescope-dirpicker.nvim is a directry picker plugin for NeoVim and Telescope.
It allows you to pick from a list of subdirectories and either execute
Telescope's find_files
on that directory, or set up a custom callback to do
whatever you want when a directory is selected.
On my machine, all of my code repositories are in ~/Projects
. I have bound
<space>pp
to :Telescope dirpicker cwd=~/Projects
. When I load vim, I type
<space>pp
and pick from a project. When I want to work on a new project, I
open a new tab page and run :Telescope dirpicker
again.
Initially I used project.nvim, which I really like, however, it's got some issues and it seems like an abandoned project. Some of the features I need are sitting in PRs that have been open for over a year without any response. It also does a bunch of things I don't really care about. I realized that what I actually need is pretty simple.
- Neovim >= 0.5.0
- Telescope >= 0.1.6
NOTE: This may work on Windows, however, I have not been able to test it.
Install the plugin with your preferred package manager:
{
"nvim-telescope/telescope.nvim",
dependencies = {
"synic/telescope-dirpicker.nvim",
},
config = function(_, opts)
local telescope = require("telescope")
telescope.setup(opts)
-- optional, if not provided, `:Telescope dirpicker` will still work, you
-- won't be able to autocomplete `dirpicker` on first use if you lazy load
-- telescope.
telescope.load_extension("dirpicker")
end,
},
To use the directory picker
:Telescope dirpicker cwd=~/Projects
require("telescope").extensions.dirpicker.dirpicker({ cwd = "~/Projects/" })
The default "select" action is to open the directory with :Telescope find_files
. You can configure this behavior by setting on_select
to a function with the signature: function(dir)
:
require("telescope").extensions.dirpicker.dirpicker({
cwd = "~/Projects/",
prompt_title = "Projects",
on_select = function(dir)
vim.notify("You selected: " .. dir)
vim.cmd.tcd(dir)
end,
-- on_select = vim.cmd.edit, -- to open dir in netrw
})
These are the overrideable default picker configuration options:
local opts = {
cwd = ".",
prompt_title = "Pick a Directory",
enable_preview = true,
on_select = function(dir)
require("telescope.builtin").find_files({ cwd = dir })
end,
}
telescope-dirpicker.nvim comes with the following mappings:
Normal mode | Insert mode | Action |
---|---|---|
t | <c-t> | Change tab directory |
l | <c-l> | Change buffer directory |
c | <c-c> | Change global directory |
e | <c-e> | Edit dir in default dir editor |
d | <c-d> | Edit first search dir in default dir editor |
b | <c-b> | Browse files in telescope |