Skip to content

Latest commit

 

History

History
134 lines (90 loc) · 3.46 KB

README.md

File metadata and controls

134 lines (90 loc) · 3.46 KB

nnn.vim

Fast and featureful file manager in vim/neovim powered by nnn.

colorscheme yin

Requirements

  1. nnn (minimum version 2.2)
  2. Neovim or Vim 8.1 with terminal support

Install

You must install nnn itself. Instructions here.

Then install using your favorite plugin manager:

" using vim-plug
Plug 'mcchrish/nnn.vim'

Usage

To open nnn 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 nnn from there e.g. :NnnPicker path/to/somewhere.

Once you select one or more files and press enter, vim quits the nnn window and opens the first selected file and add the remaining files to the arg list/buffer list.

Pressing enter on a file in nnn will pick any earlier selection, pick the file and exit nnn.

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.

Configurations

Custom mappings

" 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>

Layout

" Opens the nnn 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' } }

Action

You can set extra key-bindings for opening files in different ways. Nothing is set by default to not override nnn's own key-bindings.

let g:nnn#action = {
      \ '<c-t>': 'tab split',
      \ '<c-x>': 'split',
      \ '<c-v>': 'vsplit' }

For example, when inside an nnn 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.

Command override

When you want to override the default nnn command and add some extra flags. Example you want to start nnn in detail mode.

let g:nnn#command = 'nnn -d'

" or pass some env variables
let g:nnn#command = 'NNN_TRASH=1 nnn -d'

nnn#pick()

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 as g:nnn#layout and overrides it if specified.

Environment variables

You can define env variables in vimrc and nnn will detect it.

let $NNN_TRASH=1

Credits

Main nnn program: https://github.com/jarun/nnn