stevearc / oil.nvim

Neovim file explorer: edit your filesystem like a buffer
MIT License
3.83k stars 109 forks source link

bug: can not remap key to open split. #416

Open meicale opened 3 months ago

meicale commented 3 months ago

Did you check the docs and existing issues?

Neovim version (nvim -v)

0.9.2

Operating system/version

wsl2 ubuntu 22.04

Describe the bug

Thank you for the awesome plugin and I like it a lot! I encounter this problem to remap another key to open my the file selected. In the setup function, I have this

          ["<C-h>"] = false,
          ["<C-e>"] = { "actions.select", opts = { horizontal = true } },
          ["<C-l>"] = false,
          ["<C-r>"] = "actions.refresh",

I can change refresh to ctrl+r but ctrl+e cannot open the file horizontally. I can still use ctrl+s to open file vertically. Thank you for your attention!

What is the severity of this bug?

minor (annoyance)

Steps To Reproduce

update the config oil.nvim config in lazyvim. On oil buffer, Press ctrl+e, and Nothing changed!

Expected Behavior

On oil buffer, Press ctrl+e, and open the file horizotally.

Directory structure

No response

Repro

-- save as repro.lua
-- run with nvim -u repro.lua
-- DO NOT change the paths
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "runtime", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  {
        "stevearc/oil.nvim",
        config = function()
            require("oil").setup({
              -- add any needed settings here
            })
        end,
  },
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here

Did you check the bug with a clean config?

stevearc commented 3 months ago

My guess is you have something else overriding your <C-e> binding. I tried it with this minimal repro file and it works fine

-- save as repro.lua
-- run with nvim -u repro.lua
-- DO NOT change the paths
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "runtime", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  {
    "stevearc/oil.nvim",
    config = function()
      require("oil").setup({
        keymaps = {
          ["<C-h>"] = false,
          ["<C-e>"] = { "actions.select", opts = { horizontal = true } },
          ["<C-l>"] = false,
          ["<C-r>"] = "actions.refresh",
        },
      })
    end,
  },
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here

You can inspect what the keymap for <C-e> is in the oil buffer with :nmap <C-e>.

Supetorus commented 1 month ago

I have the same issue. I remapped the open in split keybinds to V and H like so:

      ['V'] = { 'actions.select', opts = { vertical = true }, desc = 'Open the entry in a vertical split' },
      ['H'] = { 'actions.select', opts = { horizontal = true }, desc = 'Open the entry in a horizontal split' },

but when I do :map <C-h> I still get

<C-H>       *@<Lua 375: ~/.local/share/nvim/lazy/oil.nvim/lua/oil/keymap_util.lua:42>                                                                                       Open the entry in a horizontal split

I'm using kickstart and I added my keybindings to after the custom plugins are loaded but I think because it's lazy loaded it doesn't matter, the oil keybinds still cover my keybinds.

lellingsen commented 3 weeks ago

I am having the same issue - I can't figure out how to unbind a key. I use <C-h/j/k/l> to jump between nvim windows. Have tried setting those to nil and false (as in this example) for Oil config, but neither seems to do anything.

Also tysm for this plugin, I am truly loving it!

stevearc commented 3 weeks ago

Please provide a minimal repro file like the one I constructed above that demonstrates the issue

lellingsen commented 2 weeks ago

@stevearc Oh gosh, apparently I was totally wrong. Setting it to false totally worked for me! Apologies for that, I honestly am not sure what happened. Thank you very much for all of your hard work and answering my silly question!