File manager for vim/neovim powered by n³.
colorscheme yin
- n³
- Neovim or Vim 8.1 with terminal support
You must install n³ itself. Instructions here.
Then install using your favorite plugin manager:
" using vim-plug
Plug 'mcchrish/nnn.vim'
To open n³ as a file picker in vim/neovim, use the command :NnnPicker
or
:Np
or the key-binding <leader>n
. You can pass a directory to :NnnPicker
command and opens n³ from there e.g. :NnnPicker path/to/somewhere
.
Once you select one or more files and press enter, vim quits the n³ window and opens the first selected file and add the remaining files to the arg list/buffer list.
Pressing enter on a file in n³ will pick any earlier selection, pick the file and exit n³.
Note that pressing l or Right on a file would open it instead of picking.
To discard selection and exit, press ^G.
You may have to set set hidden
to make floating window work.
Please visit the complete documentation by running :help nnn
.
" Disable default mappings
let g:nnn#set_default_mappings = 0
" Then set your own
nnoremap <silent> <leader>nn :NnnPicker<CR>
" Or override
" Start nnn in the current file's directory
nnoremap <leader>n :NnnPicker %:p:h<CR>
" Opens the n³ window in a split
let g:nnn#layout = 'new' " or vnew, tabnew etc.
" Or pass a dictionary with window size
let g:nnn#layout = { 'left': '~20%' } " or right, up, down
" Floating window (neovim latest and vim with patch 8.2.191)
let g:nnn#layout = { 'window': { 'width': 0.9, 'height': 0.6, 'highlight': 'Debug' } }
You can set extra key-bindings for opening files in different ways. Nothing is set by default to not override n³'s own key-bindings.
let g:nnn#action = {
\ '<c-t>': 'tab split',
\ '<c-x>': 'split',
\ '<c-v>': 'vsplit' }
For example, when inside an n³ window, pressing ctrl-t will open the selected file in a tab, instead of the current window. ctrl-x will open in a split an so on. Meanwhile for multi selected files will be loaded in the buffer list.
When you want to override the default n³ command and add some extra flags. Example you want to start n³ in detail mode.
let g:nnn#command = 'nnn -d'
" or pass some env variables
let g:nnn#command = 'NNN_TRASH=1 nnn -d'
The nnn#pick([<dir>][,<opts>])
function can be called with custom directory
and additional options such as opening file in splits or tabs. Basically a more
configurable version of :NnnPicker
command.
call nnn#pick('~/some-files', { 'edit': 'vertical split' })
" Then you can do all kinds of mappings if you want
opts
can be:
edit
- type of window the select file will be open.layout
- same asg:nnn#layout
and overrides it if specified.
You can define env variables in vimrc
and n³ will detect it.
let $NNN_TRASH=1
Main n³ program: https://github.com/jarun/nnn