Vimで利用していたファイラーをNERDTreeからvim-fernへ移行した
背景
昨年の7月ごろに使っているエディタをVSCodeからVimに移行していて、VSCodeと同じような感じでファイルツリーが表示されるようにNERDTreeを導入していた。
機能としては十分な感じだったんだけど、微妙に処理がカクつくことがあったので別のファイラーに移行しようかなとぼんやり考えていた。
そんな時に「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をインストールして削除できるように対応。
実際に使ってみたところ以下のような感じでいい塩梅。

