augroup MyDefxConf autocmd! autocmd FileType defx call s:defx_my_settings() augroup END call defx#custom#column('mark', { \ 'readonly_icon': '✗', \ 'selected_icon': '✓', \ }) call defx#custom#option('_', { \ 'direction': 'topleft', \ 'resume': 1, \ 'listed': 1, \ 'columns': 'mark:indent:icons:filename:type:time:size', \ 'preview_height': 30, \ 'session_file': expand('~/.cache/nvim/defx'), \ }) call defx#custom#option('sftp', { \ 'columns': 'sftp_mark:indent:icons:filename:type:sftp_time:sftp_size', \ }) function! s:defx_my_settings() abort setlocal nonumber setlocal cursorline " Define mappings nnoremap \ defx#do_action('open') nnoremap + \ defx#do_action('add_session') nnoremap c \ defx#do_action('copy') nnoremap m \ defx#do_action('move') nnoremap P \ defx#do_action('paste') nnoremap l \ defx#do_action('open') nnoremap E \ defx#do_action('multi', [['open', 'vsplit'], 'quit']) nnoremap p \ defx#do_action('preview') nnoremap t \ defx#is_directory() ? \ ":call open_defx_in_tab()" : \ defx#do_action('open', 'tabnew') nnoremap o \ defx#do_action('open_tree', 'toggle') nnoremap O \ defx#async_action('open_tree', 'recursive') nnoremap K \ defx#do_action('new_directory') nnoremap M \ defx#do_action('new_file') nnoremap N \ defx#do_action('new_multiple_files') nnoremap S \ defx#do_action('multi', [['toggle_sort', 'time'], 'redraw']) nnoremap d \ defx#do_action('remove_trash') nnoremap r \ defx#do_action('rename') nnoremap ! \ defx#do_action('execute_command') nnoremap x \ defx#do_action('execute_system') nnoremap yy \ defx#do_action('yank_path') nnoremap . \ defx#do_action('toggle_ignored_files') nnoremap h \ defx#do_action('cd', ['..']) nnoremap ~ \ defx#do_action('cd') nnoremap q \ ((&filetype =~# 'defx') && (bufname() =~# 'temp')) ? \ defx#do_action('quit') : \ ':call quit_all_defx()' nnoremap \ defx#do_action('quit') nnoremap , \ defx#do_action('toggle_select') . 'j' nnoremap * \ defx#do_action('toggle_select_all') nnoremap j \ line('.') == line('$') ? 'gg' : 'j' nnoremap k \ line('.') == 1 ? 'G' : 'k' nnoremap \ defx#do_action('redraw') . ":nohlsearch" nnoremap \ defx#do_action('print') nnoremap cd \ defx#do_action('change_vim_cwd') nnoremap ' \ defx#do_action('cd', [getcwd()]) nnoremap call switch_defx_buf() nnoremap L \ defx#do_action('link') nnoremap f \ defx#do_action('cd', [expand('~/dotfiles/nvim')]) nnoremap w \ defx#do_action('cd', [expand('~/work')]) nnoremap p \ defx#do_action('cd', [expand('~/.cache/dein/repos/github.com')]) nnoremap ' \ ":Denite defx/session" nnoremap s \ ":Denite directory_rec:" . get_defx_cwd() . " -default-action=jump_defx" nnoremap a \ ":Denite file/rec:" . get_defx_cwd() . "" nnoremap g \ ":Denite grep:" . get_defx_cwd() . "" endfunction function! s:switch_defx_buf() abort for buf in tabpagebuflist() if buf != bufnr() && getwinvar(bufwinid(buf), '&filetype') =~# 'defx' call win_gotoid(bufwinid(buf)) return endif endfor wincmd o Defx -buffer-name=temp -split=vertical -winwidth=`winwidth(0)/2` endfunction function! s:quit_all_defx() abort for buf in tabpagebuflist() if getwinvar(bufwinid(buf), '&filetype') =~# 'defx' call win_gotoid(bufwinid(buf)) call defx#call_action('quit') endif endfor endfunction function! s:open_defx_in_tab() let dir = defx#get_candidate().action__path tabnew execute "normal \" call defx#call_action('cd', [dir]) endfunction function! s:get_defx_cwd() return defx#get_candidates()[0]['action__path'] endfunction