/telescope-vinegar.nvim

A Telescope file picker with default behavior inspired by vim-vinegar and vim-filebeagle.

Primary LanguageLua

Note: Active development has moved to https://code.sitosis.com/rudism/telescope-vinegar.nvim

telescope-vinegar.nvim

A modified version of Telescope.nvim's built-in file browser with behavior inspired by vim-vinegar and vim-filebeagle.

Usage

File browser opens in the current buffer's directory in normal mode by default.

  • - goes up a level to the parent directory
  • / enters insert mode to search files
  • + prompts for a new file name to create
  • h toggles whether hidden files are displayed or not

Installation

Install with packer (or similar equivalent package manager):

use 'rudism/telescope-vinegar.nvim'

Bind this to a key (I recommend -) and execute it to open the file browser in the current file's directory:

require('telescope').extensions.vinegar.file_browser()

Example Config

The following config maps - to the file browser, disables netrw, and automatically opens the file browser when you launch nvim with a directory as the file argument (uses plenary.nvim).

-- add keybinding
vim.api.nvim_set_keymap('n', '-',
  '<cmd>lua require("telescope").extensions.vinegar.file_browser()<cr>',
  {noremap = true})

-- disable netrw
vim.g['loaded_netrw'] = 1

-- create function to open file browser when opening a directory
_G.browse_if_dir = function()
  if require('plenary.path'):new(vim.fn.expand('%:p')):is_dir() then
    local buf = vim.api.nvim_get_current_buf()
    vim.api.nvim_buf_set_option(buf, 'buftype', 'nofile')
    vim.api.nvim_buf_set_option(buf, 'buflisted', false)
    vim.api.nvim_buf_set_option(buf, 'swapfile', false)
    vim.api.nvim_buf_set_option(buf, 'bufhidden', 'hide')
    require('telescope').extensions.vinegar.file_browser()
  end
end

-- autocommand to run the above function when launching
vim.api.nvim_command('au VimEnter * call v:lua.browse_if_dir()')