diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2018-11-24 01:00:02 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2018-11-24 01:03:45 +0530 |
commit | cc5e49a9a9d81e8f22356b8f23ae118aa126bebf (patch) | |
tree | 2f8ae2d35c1705280b76eb1bf09733c622de5b20 /scripts | |
parent | fb64e7e2dd294e3ceb2d112f1763a348a12cd231 (diff) | |
download | nnn-cc5e49a9a9d81e8f22356b8f23ae118aa126bebf.tar.gz |
Fix #133: Add nnn-picker.vim plugin
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/vim-plugin/nnn-picker.vim | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/vim-plugin/nnn-picker.vim b/scripts/vim-plugin/nnn-picker.vim new file mode 100644 index 0000000..3390db0 --- /dev/null +++ b/scripts/vim-plugin/nnn-picker.vim @@ -0,0 +1,45 @@ +" vim plugin to use nnn as a file picker +" Closely follows and inspired by the vim_file_chooser plugin for ranger. +" +" Author: Arun Prakash Jana +" Email: engineerarun@gmail.com +" Homepage: https://github.com/jarun/nnn +" Copyright © 2018 Arun Prakash Jana +" +" Usage: +" Copy this file to the vim plugin directory. +" To open nnn as a file picker in vim, use the command ":NnnPicker" or ":Np" +" or the key-binding "<leader>n". Once you select one or more files and quit +" nnn, vim will open the first selected file and add the remaining files to +" the arg list/buffer list. +" If no file is explicitly selected, the last selected entry is picked. + +function! NnnPicker() + let temp = tempname() + if has("gui_running") + exec 'silent !xterm -e nnn -p ' . shellescape(temp) + else + exec 'silent !nnn -p ' . shellescape(temp) + endif + if !filereadable(temp) + redraw! + " Nothing to read. + return + endif + let names = readfile(temp) + if empty(names) + redraw! + " Nothing to open. + return + endif + " Edit the first item. + exec 'edit ' . fnameescape(names[0]) + " Add any remaining items to the arg list/buffer list. + for name in names[1:] + exec 'argadd ' . fnameescape(name) + endfor + redraw! +endfunction +command! -bar NnnPicker call NnnPicker() +nnoremap <leader>n :<C-U>NnnPicker<CR> +command! -nargs=* -complete=file Np :call NnnPicker() |