mirror of
https://github.com/js0ny/dotfiles.git
synced 2025-12-21 08:43:00 +00:00
feat(nvim): More leader mappings and text objects
This commit is contained in:
parent
aeec1ce5c7
commit
073c60f07d
17 changed files with 264 additions and 130 deletions
|
|
@ -1,20 +1,23 @@
|
|||
local mode_arrow = { "n", "v", "o", "s", "x" }
|
||||
|
||||
local keymaps_basic = { -- Modification of Original Keymap - Colemak
|
||||
{ mode = mode_arrow, keys = "n", cmd = "j" },
|
||||
{ mode = mode_arrow, keys = "e", cmd = "k" },
|
||||
{ mode = mode_arrow, keys = "i", cmd = "l" },
|
||||
{ mode = mode_arrow, keys = "n", cmd = "j", desc = "Down" },
|
||||
{ mode = mode_arrow, keys = "e", cmd = "k", desc = "Up" },
|
||||
{ mode = mode_arrow, keys = "i", cmd = "l", desc = "Right" },
|
||||
{ keys = "H", cmd = ":bprevious<CR>" },
|
||||
{ keys = "N", cmd = "5j" },
|
||||
{ keys = "E", cmd = "5k" },
|
||||
{ keys = "I", cmd = ":bnext<CR>" },
|
||||
{ keys = "l", cmd = "i" },
|
||||
-- Text object implementation
|
||||
{ mode = { "n", "o", "x" }, keys = "l", cmd = "i", group = "inside" },
|
||||
{ keys = "L", cmd = "I" },
|
||||
{ keys = "k", cmd = "n" },
|
||||
{ keys = "K", cmd = "N" },
|
||||
{ keys = "j", cmd = "e" },
|
||||
{ keys = "J", cmd = "E" },
|
||||
{ keys = "Y", cmd = "y$" },
|
||||
-- https://github.com/LazyVim/LazyVim/blob/d1529f650fdd89cb620258bdeca5ed7b558420c7/lua/lazyvim/config/keymaps.lua#L60
|
||||
{ keys = "<Esc>", cmd = "<Cmd>nohlsearch<Bar>diffupdate<CR>" },
|
||||
}
|
||||
|
||||
return keymaps_basic
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
local M = {}
|
||||
local keymaps_user_command = require("keymaps.user-command")
|
||||
local global_default_opts = { noremap = true, silent = true }
|
||||
local global_default_mode = { "n" }
|
||||
-- local mode_arrow = { "n", "v", "o", "s", "x" }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,34 @@
|
|||
local M = {}
|
||||
|
||||
local formatFx = function()
|
||||
require("conform").format({ async = true })
|
||||
end
|
||||
|
||||
local renameCurrentBuffer = function()
|
||||
local old_name = vim.fn.expand("%:p")
|
||||
local new_name = vim.fn.input("New name: ", vim.fn.expand("%:p:h") .. "/")
|
||||
|
||||
if new_name == "" then
|
||||
print("No new name provided")
|
||||
return
|
||||
elseif new_name == old_name then
|
||||
return
|
||||
end
|
||||
|
||||
vim.cmd("write")
|
||||
|
||||
local success, err = os.rename(old_name, new_name)
|
||||
if not success then
|
||||
print("Error renaming file: " .. err)
|
||||
return
|
||||
end
|
||||
|
||||
vim.cmd("edit " .. new_name)
|
||||
vim.cmd("bdelete " .. old_name)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("Rename", renameCurrentBuffer, {})
|
||||
|
||||
local leader_general = {
|
||||
{ keys = "<space>", cmd = ":Telescope find_files<CR>", desc = "Find Files" },
|
||||
{ keys = "/", cmd = ":Telescope live_grep<CR>", desc = "Grep Files" },
|
||||
|
|
@ -42,18 +71,28 @@ local leader_w = { -- leader w: Windows Management
|
|||
{ keys = "I", cmd = ":resize -5<CR>", desc = "Decrease Window Width" },
|
||||
}
|
||||
|
||||
local leader_f = { -- leader f: Files/Find
|
||||
local leader_f = { -- <leader>f: +files/find
|
||||
{ keys = "f", cmd = ":Telescope fd<CR>", desc = "Find Files" },
|
||||
{ keys = "s", cmd = ":Telescope live_grep<CR>", desc = "Grep Files" },
|
||||
{ keys = "b", cmd = ":Telescope buffers<CR>", desc = "List Buffers" },
|
||||
{ keys = "e", cmd = ":NvimTreeToggle<CR>", desc = "Toggle File Explorer" },
|
||||
{ keys = "t", cmd = ":FloatermToggle<CR>", desc = "toggle visibility of the float terminal" },
|
||||
{ keys = "T", cmd = ":FloatermNew<CR>", desc = "Spawn a float terminal" },
|
||||
{ keys = "h", cmd = ":Telescope oldfiles<CR>", desc = "Search history files" },
|
||||
{ keys = "c", cmd = ":Telescope find_files cwd=~/.config/nvim<CR>", desc = "Search Config" },
|
||||
{ keys = "o", cmd = ":!open %", desc = "Open file in default program" },
|
||||
{ keys = "R", cmd = renameCurrentBuffer, desc = "Rename current file" },
|
||||
}
|
||||
|
||||
local leader_p = { -- leader p: Project
|
||||
{ keys = "p", cmd = ":Telescope projects<CR>", desc = "List all Projects" },
|
||||
{ keys = "g", cmd = ":Telescope projects<CR>", desc = "List all Git Projects" },
|
||||
{ keys = "s", cmd = ":Telescope session-lens<CR>", desc = "List all sessions" },
|
||||
}
|
||||
|
||||
local leader_b = { -- leader b: Buffer
|
||||
{ keys = "a", cmd = ":Alpha", desc = "Dashboard" },
|
||||
local leader_b = { -- <leader>b: +buffer
|
||||
{ keys = "a", cmd = ":Alpha<CR>", desc = "Dashboard" },
|
||||
{ keys = "b", cmd = ":Telescope buffers<CR>", desc = "List Buffers" },
|
||||
{ keys = "d", cmd = ":bdelete<CR>", desc = "Delete Buffer" },
|
||||
{ keys = "h", cmd = ":bprevious<CR>", desc = "Previous Buffer" },
|
||||
{ keys = "i", cmd = ":bnext<CR>", desc = "Next Buffer" },
|
||||
|
|
@ -62,7 +101,25 @@ local leader_b = { -- leader b: Buffer
|
|||
{ keys = "0", cmd = ":bfirst<CR>", desc = "First Buffer" },
|
||||
{ keys = "^", cmd = ":bfirst<CR>", desc = "First Buffer" },
|
||||
{ keys = "$", cmd = ":blast<CR>", desc = "Last Buffer" },
|
||||
{ keys = "s", cmd = ":Telescope buffers<CR>", desc = "Search buffers" },
|
||||
-- { keys = "s", cmd = ":Telescope buffers<CR>", desc = "Search buffers" },
|
||||
}
|
||||
|
||||
local leader_t = { -- <leader>t: +toggle/test
|
||||
{ keys = "f", cmd = ":NvimTreeToggle", desc = "Toggle File Explorer" },
|
||||
{ keys = "F", cmd = ":FormatToggle<CR>", desc = "Toggle autoformat-on-save" },
|
||||
{ keys = "t", cmd = ":FloatermToggle<CR>", desc = "toggle visibility of the float terminal" },
|
||||
}
|
||||
|
||||
local leader_c = { -- <leader>c: +code/compile
|
||||
{ keys = "r", cmd = ":RunCode<CR>", desc = "Run code" },
|
||||
{ keys = "e", cmd = ":Telescope diagnostics<CR>", desc = "Navigate errors/warnings" },
|
||||
{ keys = "f", cmd = formatFx, desc = "Format buffer" },
|
||||
{ keys = "s", cmd = ":Telescope treesitter<CR>", desc = "Search symbols" },
|
||||
{ keys = "S", cmd = ":Telescope grep_string<CR>", desc = "Search current symbol" },
|
||||
}
|
||||
|
||||
local leader_u = { -- <leader>u: +ui
|
||||
{ keys = "i", cmd = ":Telescope colorscheme<CR>", desc = "Change colorscheme" },
|
||||
}
|
||||
|
||||
for _, map in ipairs(leader_q) do
|
||||
|
|
@ -85,4 +142,24 @@ for _, map in ipairs(leader_b) do
|
|||
table.insert(M, map)
|
||||
end
|
||||
|
||||
for _, map in ipairs(leader_c) do
|
||||
map.keys = "<leader>c" .. map.keys
|
||||
table.insert(M, map)
|
||||
end
|
||||
|
||||
for _, map in ipairs(leader_t) do
|
||||
map.keys = "<leader>t" .. map.keys
|
||||
table.insert(M, map)
|
||||
end
|
||||
|
||||
for _, map in ipairs(leader_u) do
|
||||
map.keys = "<leader>u" .. map.keys
|
||||
table.insert(M, map)
|
||||
end
|
||||
|
||||
for _, map in ipairs(leader_p) do
|
||||
map.keys = "<leader>p" .. map.keys
|
||||
table.insert(M, map)
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ function M.plugin(api, opts)
|
|||
{ keys = "x", cmd = api.fs.cut, opts = opts("Cut") },
|
||||
{ keys = "y", cmd = api.fs.copy.relative_path, opts = opts("Copy Relative Path") },
|
||||
{ keys = "Y", cmd = api.fs.copy.absolute_path, opts = opts("Copy Absolute Path") },
|
||||
-- From Directory Opus
|
||||
{ keys = "#", cmd = "<Cmd>set relativenumber!<CR>", opts = opts("Toggle Relative Number") },
|
||||
-- Numeric 数字键
|
||||
{ keys = "!", cmd = api.node.run.cmd, opts = opts("Run Command") },
|
||||
-- Non-Alphanumeric 非字母数字键
|
||||
|
|
|
|||
30
tools/nvim/lua/keymaps/user-command.lua
Normal file
30
tools/nvim/lua/keymaps/user-command.lua
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
vim.api.nvim_create_user_command("Format", function(args)
|
||||
local range = nil
|
||||
if args.count ~= -1 then
|
||||
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
|
||||
range = {
|
||||
start = { args.line1, 0 },
|
||||
["end"] = { args.line2, end_line:len() },
|
||||
}
|
||||
end
|
||||
require("conform").format({ async = true, lsp_format = "fallback", range = range })
|
||||
end, { range = true })
|
||||
|
||||
vim.api.nvim_create_user_command("FormatToggle", function(args)
|
||||
local buffer_local = args.bang
|
||||
if buffer_local then
|
||||
-- Toggle buffer-local formatting
|
||||
vim.b.disable_autoformat = not vim.b.disable_autoformat
|
||||
else
|
||||
-- Toggle global formatting
|
||||
vim.g.disable_autoformat = not vim.g.disable_autoformat
|
||||
end
|
||||
|
||||
-- Print current status
|
||||
local scope = buffer_local and "buffer" or "global"
|
||||
local status = buffer_local and vim.b.disable_autoformat or vim.g.disable_autoformat
|
||||
print(string.format("Format-on-save %s: %s", scope, status and "disabled" or "enabled"))
|
||||
end, {
|
||||
desc = "Toggle autoformat-on-save (use ! for buffer-local)",
|
||||
bang = true,
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue