終於有個樣子了,現在只剩下幾個問題
01. 沒有比較好的方法去禁止編輯,map key 不只影響 netrw 的 filetype,可能我的理解還是有誤。
02. statusline 不知為何沒有生效。
" for my file explorer
augroup explorer_group
autocmd!
autocmd BufEnter * call s:MK_Browse("")
"autocmd FileType netrw nnoremap :q :q!
autocmd FileType netrw nnoremap <CR> :call <SID>MK_Enter_Browse(<SID>GetCurrNetrwFile())<CR>
"autocmd FileType netrw nnoremap i <ESC>
"autocmd FileType netrw nnoremap I <ESC>
"autocmd FileType netrw nnoremap a <ESC>
"autocmd FileType netrw nnoremap A <ESC>
"autocmd FileType netrw nnoremap x <ESC>
"autocmd FileType netrw nnoremap s <ESC>
"autocmd FileType netrw nnoremap y <ESC>
"autocmd FileType netrw nnoremap p <ESC>
augroup END
function! <SID>MK_Enter_Browse(name)
if isdirectory(a:name)
let l:dir = a:name
if has('win32')
let l:dir = substitute(dir, "/", "\\", "")
endif
execute ":e! " . l:dir
else
let g:MK_curr = getcwd()
let g:MK_sv = winsaveview()
execute ":tabe " . a:name
endif
endfunction
function! s:MK_Browse(dir)
" get current directory
let curr = expand("%:p")
if a:dir != ""
let curr = a:dir
endif
" not directory, do nothing
if !isdirectory(curr)
execute ":set nocursorline"
return
endif
" change folder for later using
if getcwd() != curr
call chdir(curr)
endif
" set up some options
execute ":set filetype=netrw"
execute ":setlocal nonumber"
execute ":setlocal nowrap"
execute ":setlocal cursorline"
execute ":setlocal buftype=nowrite"
" delete original path structure
normal! dG
let f_list = readdir(curr, 1)
let n = 1
" save paths
let files = []
let folders = []
call add(folders, "../")
call add(folders, "./")
for f in f_list
if f == ".swp" || f == "_.swp"
continue
endif
let s = f
if isdirectory(f)
let s = s . "/"
call add(folders, s)
else
call add(files, s)
endif
endfor
" add folders
for f in folders
call setline(n, f)
let n = n + 1
endfor
" add files
for f in files
call setline(n, f)
let n = n + 1
endfor
" restore previous position
if exists("g:MK_sv")
if g:MK_curr == getcwd()
call winrestview(g:MK_sv)
unlet g:MK_sv
endif
endif
" statusline
call s:SetStatusLine()
endfunction
沒有留言:
張貼留言