Question
J'ai utilisé
nmap <silent> <f2> :NERDTreeToggle<cr>
pour basculer nerdtree fenêtre.Comment puis-je faire de même avec netrw?nerdtree fenêtre n'est pas affichée dans la mémoire tampon de la liste(
:ls
).netrw est inscrite dans la mémoire tampon de la liste.Comment puis-je faire ce pas dans la liste?:bn
commande fonctionne mais:bp
la commande ne fonctionne pas dans le netrw fenêtre.Est-ce un bug?
La solution
Le "Vexplore de" commande " ouvre une verticale répertoire du navigateur.Vous pouvez construire sur cette en ajoutant le code suivant à votre .fichiers vimrc pour basculer à la verticale navigateur avec Ctrl-E (pour l'exemple):
" 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>
Le code ci-dessus tente d'ouvrir la fenêtre de l'Explorateur sur le côté gauche de l'écran à tout moment;Je l'utilise avec de multiples split vertical fenêtres ouvertes.
[FACULTATIF] Vous aimeriez ajouter les lignes suivantes dans votre .vimrc pour améliorer l'expérience de navigation:
" 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
Autres conseils
En commençant par netrw
v150, il y a :Lexplore
, qui permet de basculer d'un netrw
fenêtre sur le côté gauche.
J'ai juste fait quelques améliorations sur Nick solution qui fixe:
- s'ouvre à 100% haut de la fenêtre (indépendant de la fenêtre de splits)
:Lexplore
l'ouvre sur le côté gauche,:Lexplore!
sur la droite- d'inscription au répertoire du fichier actuel (même sur le répertoire distant)
Mettre ces lignes à la fin de votre .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
Les options proposées pour se comporter comme 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
En fait,
let g:netrw_browse_split = 4
let g:netrw_altv = 1
fonctionne le mieux pour moi.
*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.
Je pense que le meilleur comportement est décrit par l'option 4.En appuyant sur enter, le fichier est ouvert sur l'autre de scission, d'éviter une surpopulation de fractionnements.
Fonction de bascule
Voici ma version de la fonction de bascule, basé sur la réponse de Nick.Vous pouvez désormais utiliser la touche de raccourci partir de n'importe quel volet, non pas seulement à partir de netrw du volet.Dans de Nick version, il provoque une erreur, aussi j'ai fait un peu de nettoyage de code et de le reconfigurer à Ctrl-O, parce que Ctrl-E est utilisé par défaut pour faire défiler vers le bas ligne par ligne.
" 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" est global pour l'onglet en cours, de sorte que vous pouvez avoir un Explorateur par onglet.Vous pouvez la changer en "w:expl_buf_num" si vous voulez être en mesure d'ouvrir l'Explorateur dans chaque fenêtre.
Garder le focus dans l'Explorateur
Aussi, je tiens à avoir ce à mon .vimrc:
" Open file, but keep focus in Explorer
autocmd filetype netrw nmap <c-a> <cr>:wincmd W<cr>