Réglage netrw comme NERDTree

  1. J'ai utilisé nmap <silent> <f2> :NERDTreeToggle<cr> pour basculer nerdtree fenêtre. Comment puis-je faire la même chose avec netrw?

  2. La fenêtre NERDTree n'est pas affichée dans la liste tampon (:ls). netrw est répertorié dans la liste tampon. Comment puis-je le faire non répertorié?

  3. :bn commande fonctionne mais :bp commande ne fonctionne pas dans le netrw fenêtre. Est-ce un bug?

23
demandé sur alice 2011-02-15 20:11:23

5 réponses

La commande 'Vexplore' ouvre un navigateur de répertoire vertical. Vous pouvez construire sur cela en ajoutant le code suivant à votre .fichier vimrc pour basculer le navigateur vertical avec Ctrl-E (par 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 essaie d'ouvrir la fenêtre de L'Explorateur sur le côté gauche de l'écran à tout moment; je l'utilise avec plusieurs fenêtres verticales fendues ouvertes.

[facultatif] vous pouvez ajouter les lignes suivantes à 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
34
répondu Nick 2013-07-21 09:12:48

En commençant par netrw v150, il y a :Lexplore, qui va basculer une fenêtre netrw sur le côté gauche.

13
répondu Charles Campbell 2014-04-14 20:29:58

Je viens de faire quelques améliorations sur la solution de Nick qui corrige:

  • ouvre une fenêtre haute de 100% (indépendante des fenetres divisées)
  • :Lexplore ouvre sur le côté gauche, :Lexplore! sur la droite
  • listant le répertoire du fichier courant (même sur les répertoires distants)

Mettez 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

Options suggéré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
7
répondu bimlas 2017-05-23 12:02:41

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 Entrée, le fichier est ouvert sur l'autre division, en évitant une surpopulation de divisions.

6
répondu Xabierrek 2012-06-05 17:28:07

Fonction basculante

Voici ma version de la fonction toggle, basée sur la réponse de Nick. Maintenant, vous pouvez utiliser le raccourci clavier depuis n'importe quel volet, pas seulement depuis le volet de netrw. Dans la version de Nick, il provoque une erreur, j'ai également fait un nettoyage de code et le remapper à Ctrl-O, car Ctrl-E est utilisé par défaut pour faire défiler d'une ligne vers le bas.

" 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 globale pour l'onglet actuel, vous pouvez donc avoir un explorateur par onglet. Vous pouvez le changer en "w: expl_buf_num" si vous voulez pouvoir ouvrez l'Explorateur dans chaque fenêtre.

Gardez le focus dans L'Explorateur

Aussi, j'aime avoir cela à mon .vimrc:

" Open file, but keep focus in Explorer
autocmd filetype netrw nmap <c-a> <cr>:wincmd W<cr>
2
répondu Саша Кошкин 2018-07-06 09:36:06