Oil.nvimからvim-fernを開くのがちょっと便利だった

はじめに

今日は完全に「小ネタ枠」です。
普段は Oil.nvim をメインファイラーとして使っているのですが、最近ちょっとした発見があったので書き残しておきます。

Oil.nvim は「バッファとしてディレクトリを開く」という設計がすばらしく、リネームや削除を含めた多くの操作が通常のバッファ編集の延長のように扱えます。
もはや標準機能では?と錯覚するほどVim的な自然さがあって、とても気に入っています。

とはいえ、プロジェクトをcloneした直後だったり、巨大なリポジトリをざっくり把握したいときには、ツリー型ファイラーが恋しくなります。
そのようなときに登場するサブファイラーがvim-fernです。

そして、最近ふと思いました。
「Oil.nvimで見ているディレクトリの位置から、vim-fernを開けたら便利なんじゃないか?」

実際にやってみたところ、快適度が少しあがったので共有です。

設定例

Oil.nvim のバッファ上で <Leader>o を押すと、その位置のパスを基準に vim-fern を開く設定です。

123456789101112131415161718192021
vim.api.nvim_create_autocmd('FileType', {
  pattern = 'oil',
  callback = function(args)
    vim.keyma.set('n',
      '<Leader>o',
      function()
        local entry = oil.get_cursor_entry()
        local current_dir = oil.get_current_dir(args.buf) or vim.fn.getcwd()

        if entry then
          -- -reveal でカーソル位置のエントリにフォーカス
          local reveal_path = current_dir .. entry.name
          vim.cmd(string.format('Fern %s -reveal=%s',
            vim.fn.fnameescape(current_dir),
            vim.fn.fnameescape(reveal_path)))
        else
          vim.cmd(string.format('Fern %s', vim.fn.fnameescape(current_dir)))
        end
      end, { buffer = args.buf })
  end,
})

おわりに

Oil.nvim -> vim-fern はうまくいったけど、vim-fern -> Oil.nvimがうまくいきせんでした。
悔しい。