Open4

【Neovim】Fernでファイルとツリーを行き来するキーマップを作る

airRnotairRnot

vim初心者の備忘録シリーズ

AstroNvimを使ってましたが、自分でカスタマイズしようとすると、どこで何がどうやって設定されているのか皆目見当つかない状態だったので、一から自分で設定して修行を積んでいるところです

airRnotairRnot

AstroNvimはneo-treeというファイルエクスプローラーが入っていましたが、今回はFernというプラグインを使います

AstroNvimでの<leader>oを参考に書いてみました

airRnotairRnot

要件

  • <leader>oで作動する
  • Fernがすでに開かれている場合はそのままFernにフォーカスさせる
  • Fernが開かれていない場合はFernを開きつつフォーカスさせる
  • Fernにフォーカスが当たっている場合は最後に編集していたファイルにフォーカスを戻す
airRnotairRnot
keymaps.lua
local keymap = vim.api.nvim_set_keymap

-- leader
vim.g.mapleader = " "

-- fern
keymap("n", "<leader>e", "<cmd>Fern . -reveal=% -drawer -toggle -width=40<CR>", opts)
keymap("n", "<leader>o", "", {
  callback = function()
    if vim.bo.filetype == "fern" then
      vim.cmd.wincmd "p"
    else
      vim.cmd.Fern(".", "-reveal=%", "-drawer", "-width=40")
    end
  end,
  noremap = true,
  silent = true,
})