mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 13:40:05 +08:00
171 lines
5.6 KiB
VimL
171 lines
5.6 KiB
VimL
scriptencoding utf-8
|
|
|
|
let s:VCOP = SpaceVim#api#import('vim#compatible')
|
|
|
|
let g:vimfiler_as_default_explorer = get(g:, 'vimfiler_as_default_explorer', 1)
|
|
let g:vimfiler_restore_alternate_file = get(g:, 'vimfiler_restore_alternate_file', 1)
|
|
let g:vimfiler_tree_indentation = get(g:, 'vimfiler_tree_indentation', 1)
|
|
let g:vimfiler_tree_leaf_icon = get(g:, 'vimfiler_tree_leaf_icon', '')
|
|
let g:vimfiler_tree_opened_icon = get(g:, 'vimfiler_tree_opened_icon', g:_spacevim_filetree_opened_icon)
|
|
let g:vimfiler_tree_closed_icon = get(g:, 'vimfiler_tree_closed_icon', g:_spacevim_filetree_closed_icon)
|
|
let g:vimfiler_file_icon = get(g:, 'vimfiler_file_icon', '')
|
|
let g:vimfiler_readonly_file_icon = get(g:, 'vimfiler_readonly_file_icon', '*')
|
|
let g:vimfiler_marked_file_icon = get(g:, 'vimfiler_marked_file_icon', '√')
|
|
if g:spacevim_filetree_direction ==# 'right'
|
|
let g:vimfiler_direction = get(g:, 'vimfiler_direction', 'rightbelow')
|
|
else
|
|
let g:vimfiler_direction = 'leftabove'
|
|
endif
|
|
"let g:vimfiler_preview_action = 'auto_preview'
|
|
let g:vimfiler_ignore_pattern = get(g:, 'vimfiler_ignore_pattern', [
|
|
\ '^\.git$',
|
|
\ '^\.DS_Store$',
|
|
\ '^\.init\.vim-rplugin\~$',
|
|
\ '^\.netrwhist$',
|
|
\ '\.class$',
|
|
\ '^\.'
|
|
\])
|
|
|
|
if has('mac')
|
|
let g:vimfiler_quick_look_command =
|
|
\ get(g:, 'vimfiler_quick_look_command', 'qlmanage -p')
|
|
else
|
|
let g:vimfiler_quick_look_command =
|
|
\ get(g:, 'vimfiler_quick_look_command', 'gloobus-preview')
|
|
endif
|
|
|
|
function! s:setcolum() abort
|
|
if g:_spacevim_enable_filetree_filetypeicon && !g:_spacevim_enable_filetree_gitstatus
|
|
return 'filetypeicon'
|
|
elseif !g:_spacevim_enable_filetree_filetypeicon && g:_spacevim_enable_filetree_gitstatus
|
|
return 'gitstatus'
|
|
elseif g:_spacevim_enable_filetree_filetypeicon && g:_spacevim_enable_filetree_gitstatus
|
|
return 'filetypeicon:gitstatus'
|
|
else
|
|
return ''
|
|
endif
|
|
endfunction
|
|
"try
|
|
call vimfiler#custom#profile('default', 'context', {
|
|
\ 'explorer' : 1,
|
|
\ 'winwidth' : g:spacevim_sidebar_width,
|
|
\ 'winminwidth' : 30,
|
|
\ 'toggle' : 1,
|
|
\ 'auto_expand': 1,
|
|
\ 'direction' : g:vimfiler_direction,
|
|
\ 'explorer_columns' : s:setcolum(),
|
|
\ 'parent': 0,
|
|
\ 'status' : 1,
|
|
\ 'safe' : 0,
|
|
\ 'split' : 1,
|
|
\ 'hidden': g:_spacevim_filetree_show_hidden_files,
|
|
\ 'no_quit' : 1,
|
|
\ 'force_hide' : 0,
|
|
\ })
|
|
|
|
"catch
|
|
"endtry
|
|
augroup vfinit
|
|
au!
|
|
autocmd FileType vimfiler call s:vimfilerinit()
|
|
autocmd BufEnter * nested if (!has('vim_starting') && winnr('$') == 1 && &filetype ==# 'vimfiler' && g:_spacevim_autoclose_filetree) |
|
|
\ call s:close_last_vimfiler_windows() | endif
|
|
augroup END
|
|
|
|
" in this function, we should check if shell terminal still exists,
|
|
" then close the terminal job before close vimfiler
|
|
function! s:close_last_vimfiler_windows() abort
|
|
call SpaceVim#layers#shell#close_terminal()
|
|
q
|
|
endfunction
|
|
|
|
function! s:vimfilerinit()
|
|
setl nonumber
|
|
setl norelativenumber
|
|
|
|
silent! nunmap <buffer> <Space>
|
|
silent! nunmap <buffer> <C-l>
|
|
silent! nunmap <buffer> <C-j>
|
|
silent! nunmap <buffer> E
|
|
silent! nunmap <buffer> gr
|
|
silent! nunmap <buffer> gf
|
|
silent! nunmap <buffer> -
|
|
silent! nunmap <buffer> s
|
|
|
|
nnoremap <silent><buffer> sg :<C-u>call <SID>vimfiler_vsplit()<CR>
|
|
nnoremap <silent><buffer> sv :<C-u>call <SID>vimfiler_split()<CR>
|
|
nnoremap <silent><buffer><expr> st vimfiler#do_action('tabswitch')
|
|
nnoremap <silent><buffer> yY :<C-u>call <SID>copy_to_system_clipboard()<CR>
|
|
nnoremap <silent><buffer> P :<C-u>call <SID>paste_to_file_manager()<CR>
|
|
nmap <buffer> gx <Plug>(vimfiler_execute_vimfiler_associated)
|
|
nmap <buffer> ' <Plug>(vimfiler_toggle_mark_current_line)
|
|
nmap <buffer> v <Plug>(vimfiler_quick_look)
|
|
nmap <buffer> p <Plug>(vimfiler_preview_file)
|
|
nmap <buffer> V <Plug>(vimfiler_clear_mark_all_lines)
|
|
nmap <buffer> i <Plug>(vimfiler_switch_to_history_directory)
|
|
nmap <buffer> <Tab> <Plug>(vimfiler_switch_to_other_window)
|
|
nmap <buffer> <C-r> <Plug>(vimfiler_redraw_screen)
|
|
nmap <buffer> <Left> <Plug>(vimfiler_smart_h)
|
|
nmap <buffer> <Right> <Plug>(vimfiler_smart_l)
|
|
nmap <buffer> <2-LeftMouse> <Plug>(vimfiler_expand_or_edit)
|
|
doautocmd User VimfilerInit
|
|
endf
|
|
|
|
function! s:vimfiler_vsplit() abort
|
|
let path = vimfiler#get_filename()
|
|
if !isdirectory(path)
|
|
wincmd w
|
|
exe 'vsplit' path
|
|
else
|
|
echohl ModeMsg
|
|
echo path . ' is a directory!'
|
|
echohl NONE
|
|
endif
|
|
endfunction
|
|
function! s:vimfiler_split() abort
|
|
let path = vimfiler#get_filename()
|
|
if !isdirectory(path)
|
|
wincmd w
|
|
exe 'split' path
|
|
else
|
|
echohl ModeMsg
|
|
echo path . ' is a directory!'
|
|
echohl NONE
|
|
endif
|
|
endfunction
|
|
|
|
function! s:paste_to_file_manager() abort
|
|
let path = vimfiler#get_filename()
|
|
if !isdirectory(path)
|
|
let path = fnamemodify(path, ':p:h')
|
|
endif
|
|
let old_wd = getcwd()
|
|
if old_wd == path
|
|
call s:VCOP.systemlist(['xclip-pastefile'])
|
|
else
|
|
noautocmd exe 'cd' fnameescape(path)
|
|
call s:VCOP.systemlist(['xclip-pastefile'])
|
|
noautocmd exe 'cd' fnameescape(old_wd)
|
|
endif
|
|
endfunction
|
|
|
|
function! s:copy_to_system_clipboard() abort
|
|
let filename = vimfiler#get_marked_filenames(b:vimfiler)
|
|
|
|
if empty(filename)
|
|
" Use cursor filename.
|
|
let filename = vimfiler#get_filename()
|
|
if filename ==# '..' || empty(vimfiler#get_file(b:vimfiler))
|
|
let filename = b:vimfiler.current_dir
|
|
else
|
|
let filename = vimfiler#get_file(b:vimfiler).action__path
|
|
endif
|
|
call s:VCOP.systemlist(['xclip-copyfile', filename])
|
|
else
|
|
call s:VCOP.systemlist(['xclip-copyfile'] + filename)
|
|
endif
|
|
echo 'Yanked:' . (type(filename) == 3 ? len(filename) : 1 ) . ' files'
|
|
endfunction
|
|
|
|
" vim:set et sw=2:
|