Update README and keymaps for netrw navigation
Add command variants for netrw and update keymaps to improve navigation experience. Store initial working directory as project root for better symlink handling.
This commit is contained in:
parent
05154e59ef
commit
d876425956
16
README.md
16
README.md
|
|
@ -52,12 +52,24 @@ Core keymaps available globally (not plugin-specific). These provide fallbacks f
|
||||||
|
|
||||||
### `lua/netrw-config.lua`
|
### `lua/netrw-config.lua`
|
||||||
|
|
||||||
|
#### `:Ex` Command Variants
|
||||||
|
|
||||||
|
| Command | Opens netrw at |
|
||||||
|
| --- | --- |
|
||||||
|
| `:Ex` | Current working directory (`:pwd`) |
|
||||||
|
| `:Ex .` | Current file's directory |
|
||||||
|
| `:Ex %:h` | Current file's directory (explicit) |
|
||||||
|
| `:Ex /path/to/dir` | Specific path |
|
||||||
|
|
||||||
#### Custom Keymaps
|
#### Custom Keymaps
|
||||||
|
|
||||||
| Mode | Key | Description |
|
| Mode | Key | Description |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| n | `<leader>te` | Open netrw in a new tab rooted at current file directory |
|
| n | `<leader>nt` | Open netrw in new tab at current file's directory |
|
||||||
| n | `<leader>tE` | Open netrw in a new tab rooted at project cwd |
|
| n | `<leader>nT` | Open netrw in new tab at project root |
|
||||||
|
| n | `<leader>nr` | Open netrw in current window at project root |
|
||||||
|
|
||||||
|
**Note:** Project root is stored as the initial working directory when Neovim starts. This allows navigation back to the project root even after following symlinks to external directories.
|
||||||
|
|
||||||
#### Default Netrw Keymaps
|
#### Default Netrw Keymaps
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,17 +40,22 @@ vim.g.netrw_sizestyle = 'H'
|
||||||
|
|
||||||
-- Netrw file explorer keymaps
|
-- Netrw file explorer keymaps
|
||||||
-- Open netrw in new tab at current file's directory
|
-- Open netrw in new tab at current file's directory
|
||||||
map('n', '<leader>te', function()
|
map('n', '<leader>nt', function()
|
||||||
local current_file_dir = vim.fn.expand('%:p:h')
|
local current_file_dir = vim.fn.expand('%:p:h')
|
||||||
vim.cmd('tabnew')
|
vim.cmd('tabnew')
|
||||||
vim.cmd('Explore ' .. vim.fn.fnameescape(current_file_dir))
|
vim.cmd('Explore ' .. vim.fn.fnameescape(current_file_dir))
|
||||||
end, { desc = 'Netrw: Tab explore (current file dir)', silent = true })
|
end, { desc = 'Netrw: Tab at current file dir', silent = true })
|
||||||
|
|
||||||
-- Open netrw in new tab at project root (cwd)
|
-- Open netrw in new tab at project root (stored at startup)
|
||||||
map('n', '<leader>tE', function()
|
map('n', '<leader>nT', function()
|
||||||
vim.cmd('tabnew')
|
vim.cmd('tabnew')
|
||||||
vim.cmd('Explore ' .. vim.fn.fnameescape(vim.fn.getcwd()))
|
vim.cmd('Explore ' .. vim.fn.fnameescape(vim.g.project_root))
|
||||||
end, { desc = 'Netrw: Tab explore (project root)', silent = true })
|
end, { desc = 'Netrw: Tab at project root', silent = true })
|
||||||
|
|
||||||
|
-- Open netrw in current window at project root (stored at startup)
|
||||||
|
map('n', '<leader>nr', function()
|
||||||
|
vim.cmd('Explore ' .. vim.fn.fnameescape(vim.g.project_root))
|
||||||
|
end, { desc = 'Netrw: Open at project root', silent = true })
|
||||||
-- Enable line numbers in netrw buffers
|
-- Enable line numbers in netrw buffers
|
||||||
vim.api.nvim_create_autocmd('FileType', {
|
vim.api.nvim_create_autocmd('FileType', {
|
||||||
pattern = 'netrw',
|
pattern = 'netrw',
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@ vim.g.loaded_ruby_provider = 0
|
||||||
vim.g.loaded_perl_provider = 0
|
vim.g.loaded_perl_provider = 0
|
||||||
vim.g.loaded_node_provider = 0
|
vim.g.loaded_node_provider = 0
|
||||||
|
|
||||||
|
-- Store initial working directory as project root
|
||||||
|
-- Used by netrw navigation to return to project root after following symlinks
|
||||||
|
vim.g.project_root = vim.fn.getcwd()
|
||||||
|
|
||||||
-- Enable project-local configuration files
|
-- Enable project-local configuration files
|
||||||
vim.opt.exrc = true -- Load .nvim.lua from project root
|
vim.opt.exrc = true -- Load .nvim.lua from project root
|
||||||
vim.opt.secure = true -- Prompt before loading untrusted files
|
vim.opt.secure = true -- Prompt before loading untrusted files
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue