Vimで利用していたファイラーをNERDTreeからvim-fernへ移行した

背景

昨年の7月ごろに使っているエディタをVSCodeからVimに移行していて、VSCodeと同じような感じでファイルツリーが表示されるようにNERDTreeを導入していた。

github.com

機能としては十分な感じだったんだけど、微妙に処理がカクつくことがあったので別のファイラーに移行しようかなとぼんやり考えていた。

そんな時に「vim-fernが良い」という話を聞き、移行してみた。
この記事はその時の覚書です。

環境とか

やったこと

まずは.vimrcからNERDTreeを削除した。

# NERDTree
Plug 'preservim/nerdtree'

autocmd VimEnter * NERDTree

個人的にはvimコマンドを実行したタイミングでファイルツリーが表示されてほしかったので autocmd VimEnter * NERDTreeも設定しており、それも合わせて削除した。

あとはvim-fernを以下のように導入した。

# Fern
Plug 'lambdalisue/fern.vim'

def OnVimEnter()
  timer_start(10, (_) => execute('Fern . -drawer -reveal=%'))
enddef

autocmd VimEnter * OnVimEnter()

同じようにvimコマンドを実行したタイミングでファイルツリーが表示されるようにしたかったので、OnVimEnter経由でvim-fernを起動するようにした。
ただそのままFern . -drawer -reveal=% を実行するとタイミングの問題でファイルツリーが表示されなかったのでtimer_startで少し遅延させてから実行するようにしている。

あとついでに隠しファイルの表示と<C-n>でファイルツリーの表示 / 非表示を切り替えられるようにしたり

g:fern#default_hidden = 1

nnoremap <silent> <C-n> :Fern . -drawer -toggle -reveal=%<CR>

NerdFontsを導入してファイルのアイコンで視認しやすくしたり(WSLの場合はWindows側にフォントをインストールしてWindowsTerminalでそのフォントを使う必要があった)

# nerdfont for fern
Plug 'lambdalisue/fern-renderer-nerdfont.vim'
Plug 'lambdalisue/nerdfont.vim'

g:fern#renderer = 'nerdfont'

vim-fernのプラグインでファイルのプレビューを表示できるものもあったので、それを導入したりもした

# preview for fern
Plug 'yuki-yano/fern-preview.vim'

# fern-preview のキーバインド
def SetupFernPreview()
  nnoremap <buffer><silent> p            <Plug>(fern-action-preview:toggle)
  nnoremap <buffer><silent> <C-d>   <Plug>(fern-action-preview:scroll:down:half)
  nnoremap <buffer><silent> <C-u>   <Plug>(fern-action-preview:scroll:up:half)
enddef

autocmd FileType fern SetupFernPreview()

最終的な設定としては以下のようになった。

# Fern
Plug 'lambdalisue/fern.vim'

def OnVimEnter()
  timer_start(10, (_) => execute('Fern . -drawer -reveal=%'))
enddef

autocmd VimEnter * OnVimEnter()

g:fern#default_hidden = 1

nnoremap <silent> <C-n> :Fern . -drawer -toggle -reveal=%<CR>

# nerdfont for fern
Plug 'lambdalisue/fern-renderer-nerdfont.vim'
Plug 'lambdalisue/nerdfont.vim'

g:fern#renderer = 'nerdfont'

# preview for fern
Plug 'yuki-yano/fern-preview.vim'

# fern-preview のキーバインド
def SetupFernPreview()
  nnoremap <buffer><silent> p       <Plug>(fern-action-preview:toggle)
  nnoremap <buffer><silent> <C-d>   <Plug>(fern-action-preview:scroll:down:half)
  nnoremap <buffer><silent> <C-u>   <Plug>(fern-action-preview:scroll:up:half)
enddef

autocmd FileType fern SetupFernPreview()

基本的にはここまでの設定で良かったんだけど、ファイルの削除だけが出来なかった。
なので調べたところ以下の記事がヒットし、それを参考にtrash-cliをインストールして削除できるように対応。

abemii.hatenablog.com

実際に使ってみたところ以下のような感じでいい塩梅。