vim nerd tree
ConfiguraciĆ³n de netrw como NERDTree (5)
Utilicé
nmap <silent> <f2> :NERDTreeToggle<cr>
para alternar la ventana nerdtree. ¿Cómo puedo hacer lo mismo con netrw?La ventana nerdtree no se muestra en la lista del búfer (
:ls
). netrw aparece en la lista de búferes. ¿Cómo puedo hacer que no esté en la lista?:bn
comando:bn
funciona pero el comando:bp
no funciona en la ventana netrw. ¿Es esto un error?
Función de palanca
Aquí está mi versión de la función de alternar, basada en la respuesta de Nick. Ahora puede usar las teclas de acceso rápido desde cualquier panel , no solo desde el panel de netrw. En la versión de Nick se produce un error, también realicé algunos códigos de limpieza y los volví a asignar a Ctrl-O, porque Ctrl-E se usa de forma predeterminada para desplazarse hacia abajo una línea.
" Toggle Vexplore with Ctrl-O
function! ToggleVExplorer()
if exists("t:expl_buf_num")
let expl_win_num = bufwinnr(t:expl_buf_num)
let cur_win_num = winnr()
if expl_win_num != -1
while expl_win_num != cur_win_num
exec "wincmd w"
let cur_win_num = winnr()
endwhile
close
endif
unlet t:expl_buf_num
else
Vexplore
let t:expl_buf_num = bufnr("%")
endif
endfunction
map <silent> <C-O> :call ToggleVExplorer()<CR>
La variable "t: expl_buf_num" es global para la pestaña actual, por lo que puede tener un Explorador por pestaña. Puede cambiarlo a "w: expl_buf_num" si desea poder abrir el Explorador en cada ventana.
Mantente enfocado en Explorer
También me gusta tener esto en mi .vimrc:
" Open file, but keep focus in Explorer
autocmd filetype netrw nmap <c-a> <cr>:wincmd W<cr>
A partir de netrw
v150, hay :Lexplore
, que alternará una ventana netrw
en el lado izquierdo.
Acabo de hacer algunas mejoras en la solución de Nick que corrige:
- abre el 100% de la ventana alta (independiente de las divisiones de ventana)
-
:Lexplore
abre en el lado izquierdo:Lexplore!
a la derecha - listado del directorio del archivo actual ( incluso en directorios remotos )
Coloca estas líneas al final de tu .vimrc:
com! -nargs=* -bar -bang -complete=dir Lexplore call netrw#Lexplore(<q-args>, <bang>0)
fun! Lexplore(dir, right)
if exists("t:netrw_lexbufnr")
" close down netrw explorer window
let lexwinnr = bufwinnr(t:netrw_lexbufnr)
if lexwinnr != -1
let curwin = winnr()
exe lexwinnr."wincmd w"
close
exe curwin."wincmd w"
endif
unlet t:netrw_lexbufnr
else
" open netrw explorer window in the dir of current file
" (even on remote files)
let path = substitute(exists("b:netrw_curdir")? b:netrw_curdir : expand("%:p"), ''^/(.*[///]/)[^///]*$'',''/1'',''e'')
exe (a:right? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new"
if a:dir != ""
exe "Explore ".a:dir
else
exe "Explore ".path
endif
setlocal winfixwidth
let t:netrw_lexbufnr = bufnr("%")
endif
endfun
Opciones sugeridas para comportarse como NERDTree:
" absolute width of netrw window
let g:netrw_winsize = -28
" do not display info on the top of window
let g:netrw_banner = 0
" tree-view
let g:netrw_liststyle = 3
" sort is affecting only: directories on the top, files below
let g:netrw_sort_sequence = ''[//]$,*''
" use the previous window to open file
let g:netrw_browse_split = 4
Actualmente,
let g:netrw_browse_split = 4
let g:netrw_altv = 1
funciona mejor para mi
*g:netrw_browse_split* when browsing, <cr> will open the file by:
=0: re-using the same window
=1: horizontally splitting the window first
=2: vertically splitting the window first
=3: open file in new tab
=4: act like "P" (ie. open previous window)
Note that |g:netrw_preview| may be used
to get vertical splitting instead of
horizontal splitting.
Creo que el mejor comportamiento se describe en la opción 4. Al presionar Intro, el archivo se abre en la otra división, evitando una sobrepoblación de divisiones.
El comando ''Vexplore'' abre un navegador de directorio vertical. Puede desarrollar esto agregando el siguiente código a su archivo .vimrc para alternar el navegador vertical con Ctrl-E (por ejemplo):
" Toggle Vexplore with Ctrl-E
function! ToggleVExplorer()
if exists("t:expl_buf_num")
let expl_win_num = bufwinnr(t:expl_buf_num)
if expl_win_num != -1
let cur_win_nr = winnr()
exec expl_win_num . ''wincmd w''
close
exec cur_win_nr . ''wincmd w''
unlet t:expl_buf_num
else
unlet t:expl_buf_num
endif
else
exec ''1wincmd w''
Vexplore
let t:expl_buf_num = bufnr("%")
endif
endfunction
map <silent> <C-E> :call ToggleVExplorer()<CR>
El código anterior intenta abrir la ventana del Explorador en el lado izquierdo de la pantalla en todo momento; Lo uso con múltiples ventanas verticales abiertas abiertas.
[OPCIONAL] Es posible que desee agregar las siguientes líneas a su .vimrc para mejorar la experiencia de navegación:
" Hit enter in the file browser to open the selected
" file with :vsplit to the right of the browser.
let g:netrw_browse_split = 4
let g:netrw_altv = 1
" Change directory to the current buffer when opening files.
set autochdir