summaryrefslogtreecommitdiff
path: root/ar/.config/NvChad/lua/core/mappings.lua
diff options
context:
space:
mode:
Diffstat (limited to 'ar/.config/NvChad/lua/core/mappings.lua')
-rw-r--r--ar/.config/NvChad/lua/core/mappings.lua468
1 files changed, 468 insertions, 0 deletions
diff --git a/ar/.config/NvChad/lua/core/mappings.lua b/ar/.config/NvChad/lua/core/mappings.lua
new file mode 100644
index 0000000..4154bde
--- /dev/null
+++ b/ar/.config/NvChad/lua/core/mappings.lua
@@ -0,0 +1,468 @@
+-- n, v, i, t = mode names
+
+local M = {}
+
+M.general = {
+ i = {
+ -- go to beginning and end
+ ["<C-b>"] = { "<ESC>^i", "Beginning Of Line" },
+ ["<C-e>"] = { "<End>", "End Of Line" },
+
+ -- navigate within insert mode
+ ["<C-h>"] = { "<Left>", "Move Left" },
+ ["<C-l>"] = { "<Right>", "Move Right" },
+ ["<C-j>"] = { "<Down>", "Move Down" },
+ ["<C-k>"] = { "<Up>", "Move Up" },
+ },
+
+ n = {
+ ["<Esc>"] = { "<cmd> noh <CR>", "Clear Highlights" },
+ -- switch between windows
+ ["<C-h>"] = { "<C-w>h", "Window Left" },
+ ["<C-l>"] = { "<C-w>l", "Window Right" },
+ ["<C-j>"] = { "<C-w>j", "Window Down" },
+ ["<C-k>"] = { "<C-w>k", "Window Up" },
+
+ -- save
+ ["<C-s>"] = { "<cmd> w <CR>", "Save File" },
+
+ -- Copy all
+ ["<C-c>"] = { "<cmd> %y+ <CR>", "Copy whole file" },
+
+ -- line numbers
+ ["<leader>n"] = { "<cmd> set nu! <CR>", "Toggle Line Number" },
+ ["<leader>rn"] = { "<cmd> set rnu! <CR>", "Toggle Relative Number" },
+
+ -- Allow moving the cursor through wrapped lines with j, k, <Up> and <Down>
+ -- http://www.reddit.com/r/vim/comments/2k4cbr/problem_with_gj_and_gk/
+ -- empty mode is same as using <cmd> :map
+ -- also don't use g[j|k] when in operator pending mode, so it doesn't alter d, y or c behaviour
+ ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move Down", opts = { expr = true } },
+ ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move Up", opts = { expr = true } },
+ ["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move Up", opts = { expr = true } },
+ ["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move Down", opts = { expr = true } },
+
+ -- new buffer
+ ["<leader>b"] = { "<cmd> enew <CR>", "New Buffer" },
+ ["<leader>ch"] = { "<cmd> NvCheatsheet <CR>", "Mapping Cheatsheet" },
+
+ ["<leader>fm"] = {
+ function()
+ vim.lsp.buf.format { async = true }
+ end,
+ "LSP Formatting",
+ },
+ },
+
+ t = {
+ ["<C-x>"] = { vim.api.nvim_replace_termcodes("<C-\\><C-N>", true, true, true), "Escape Terminal Mode" },
+ },
+
+ v = {
+ ["<Up>"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move Up", opts = { expr = true } },
+ ["<Down>"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move Down", opts = { expr = true } },
+ ["<"] = { "<gv", "Indent line" },
+ [">"] = { ">gv", "Indent line" },
+ },
+
+ x = {
+ ["j"] = { 'v:count || mode(1)[0:1] == "no" ? "j" : "gj"', "Move Down", opts = { expr = true } },
+ ["k"] = { 'v:count || mode(1)[0:1] == "no" ? "k" : "gk"', "Move Up", opts = { expr = true } },
+ -- Don't copy the replaced text after pasting in visual mode
+ -- https://vim.fandom.com/wiki/Replace_a_word_with_yanked_text#Alternative_mapping_for_paste
+ ["p"] = { 'p:let @+=@0<CR>:let @"=@0<CR>', "Dont Copy Replaced Text", opts = { silent = true } },
+ },
+}
+
+M.tabufline = {
+ plugin = true,
+
+ n = {
+ -- cycle through buffers
+ ["<tab>"] = {
+ function()
+ require("nvchad.tabufline").tabuflineNext()
+ end,
+ "Goto Next Buffer",
+ },
+
+ ["<S-tab>"] = {
+ function()
+ require("nvchad.tabufline").tabuflinePrev()
+ end,
+ "Goto Prev Buffer",
+ },
+
+ -- close buffer + hide terminal buffer
+ ["<leader>x"] = {
+ function()
+ require("nvchad.tabufline").close_buffer()
+ end,
+ "Close Buffer",
+ },
+ },
+}
+
+M.comment = {
+ plugin = true,
+
+ -- toggle comment in both modes
+ n = {
+ ["<leader>/"] = {
+ function()
+ require("Comment.api").toggle.linewise.current()
+ end,
+ "Toggle Comment",
+ },
+ },
+
+ v = {
+ ["<leader>/"] = {
+ "<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>",
+ "Toggle Comment",
+ },
+ },
+}
+
+M.lspconfig = {
+ plugin = true,
+
+ -- See `<cmd> :help vim.lsp.*` for documentation on any of the below functions
+
+ n = {
+ ["gD"] = {
+ function()
+ vim.lsp.buf.declaration()
+ end,
+ "LSP Declaration",
+ },
+
+ ["gd"] = {
+ function()
+ vim.lsp.buf.definition()
+ end,
+ "LSP Definition",
+ },
+
+ ["K"] = {
+ function()
+ vim.lsp.buf.hover()
+ end,
+ "LSP Hover",
+ },
+
+ ["gi"] = {
+ function()
+ vim.lsp.buf.implementation()
+ end,
+ "LSP Implementation",
+ },
+
+ ["<leader>ls"] = {
+ function()
+ vim.lsp.buf.signature_help()
+ end,
+ "LSP Signature Help",
+ },
+
+ ["<leader>D"] = {
+ function()
+ vim.lsp.buf.type_definition()
+ end,
+ "LSP Definition Type",
+ },
+
+ ["<leader>ra"] = {
+ function()
+ require("nvchad.renamer").open()
+ end,
+ "LSP Rename",
+ },
+
+ ["<leader>ca"] = {
+ function()
+ vim.lsp.buf.code_action()
+ end,
+ "LSP Code Action",
+ },
+
+ ["gr"] = {
+ function()
+ vim.lsp.buf.references()
+ end,
+ "LSP References",
+ },
+
+ ["<leader>lf"] = {
+ function()
+ vim.diagnostic.open_float { border = "rounded" }
+ end,
+ "Floating Diagnostic",
+ },
+
+ ["[d"] = {
+ function()
+ vim.diagnostic.goto_prev { float = { border = "rounded" } }
+ end,
+ "Goto Prev",
+ },
+
+ ["]d"] = {
+ function()
+ vim.diagnostic.goto_next { float = { border = "rounded" } }
+ end,
+ "Goto Next",
+ },
+
+ ["<leader>q"] = {
+ function()
+ vim.diagnostic.setloclist()
+ end,
+ "Diagnostic Setloclist",
+ },
+
+ ["<leader>wa"] = {
+ function()
+ vim.lsp.buf.add_workspace_folder()
+ end,
+ "Add Workspace Folder",
+ },
+
+ ["<leader>wr"] = {
+ function()
+ vim.lsp.buf.remove_workspace_folder()
+ end,
+ "Remove Workspace Folder",
+ },
+
+ ["<leader>wl"] = {
+ function()
+ print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+ end,
+ "List Workspace Folders",
+ },
+ },
+
+ v = {
+ ["<leader>ca"] = {
+ function()
+ vim.lsp.buf.code_action()
+ end,
+ "LSP Code Action",
+ },
+ },
+}
+
+M.nvimtree = {
+ plugin = true,
+
+ n = {
+ -- toggle
+ ["<C-n>"] = { "<cmd> NvimTreeToggle <CR>", "Toggle Nvimtree" },
+
+ -- focus
+ ["<leader>e"] = { "<cmd> NvimTreeFocus <CR>", "Focus Nvimtree" },
+ },
+}
+
+M.telescope = {
+ plugin = true,
+
+ n = {
+ -- find
+ ["<leader>ff"] = { "<cmd> Telescope find_files <CR>", "Find Files" },
+ ["<leader>fa"] = { "<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>", "Find All" },
+ ["<leader>fw"] = { "<cmd> Telescope live_grep <CR>", "Live Grep" },
+ ["<leader>fb"] = { "<cmd> Telescope buffers <CR>", "Find Buffers" },
+ ["<leader>fh"] = { "<cmd> Telescope help_tags <CR>", "Help Page" },
+ ["<leader>fo"] = { "<cmd> Telescope oldfiles <CR>", "Find Oldfiles" },
+ ["<leader>fz"] = { "<cmd> Telescope current_buffer_fuzzy_find <CR>", "Find in Current Buffer" },
+
+ -- git
+ ["<leader>cm"] = { "<cmd> Telescope git_commits <CR>", "Git Commits" },
+ ["<leader>gt"] = { "<cmd> Telescope git_status <CR>", "Git Status" },
+
+ -- pick a hidden term
+ ["<leader>pt"] = { "<cmd> Telescope terms <CR>", "Pick Hidden Term" },
+
+ -- theme switcher
+ ["<leader>th"] = { "<cmd> Telescope themes <CR>", "Nvchad Themes" },
+
+ ["<leader>ma"] = { "<cmd> Telescope marks <CR>", "Telescope Bookmarks" },
+ },
+}
+
+M.nvterm = {
+ plugin = true,
+
+ t = {
+ -- toggle in terminal mode
+ ["<A-i>"] = {
+ function()
+ require("nvterm.terminal").toggle "float"
+ end,
+ "Toggle Floating Term",
+ },
+
+ ["<A-h>"] = {
+ function()
+ require("nvterm.terminal").toggle "horizontal"
+ end,
+ "Toggle Horizontal Term",
+ },
+
+ ["<A-v>"] = {
+ function()
+ require("nvterm.terminal").toggle "vertical"
+ end,
+ "Toggle Vertical Term",
+ },
+ },
+
+ n = {
+ -- toggle in normal mode
+ ["<A-i>"] = {
+ function()
+ require("nvterm.terminal").toggle "float"
+ end,
+ "Toggle Floating Term",
+ },
+
+ ["<A-h>"] = {
+ function()
+ require("nvterm.terminal").toggle "horizontal"
+ end,
+ "Toggle Horizontal Term",
+ },
+
+ ["<A-v>"] = {
+ function()
+ require("nvterm.terminal").toggle "vertical"
+ end,
+ "Toggle Vertical Term",
+ },
+
+ -- new
+ ["<leader>h"] = {
+ function()
+ require("nvterm.terminal").new "horizontal"
+ end,
+ "New Horizontal Term",
+ },
+
+ ["<leader>v"] = {
+ function()
+ require("nvterm.terminal").new "vertical"
+ end,
+ "New Vertical Term",
+ },
+ },
+}
+
+M.whichkey = {
+ plugin = true,
+
+ n = {
+ ["<leader>wK"] = {
+ function()
+ vim.cmd "WhichKey"
+ end,
+ "Which-key All Keymaps",
+ },
+ ["<leader>wk"] = {
+ function()
+ local input = vim.fn.input "WhichKey: "
+ vim.cmd("WhichKey " .. input)
+ end,
+ "Which-key Query Lookup",
+ },
+ },
+}
+
+M.blankline = {
+ plugin = true,
+
+ n = {
+ ["<leader>cc"] = {
+ function()
+ local ok, start = require("indent_blankline.utils").get_current_context(
+ vim.g.indent_blankline_context_patterns,
+ vim.g.indent_blankline_use_treesitter_scope
+ )
+
+ if ok then
+ vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 })
+ vim.cmd [[normal! _]]
+ end
+ end,
+
+ "Jump To Current Context",
+ },
+ },
+}
+
+M.gitsigns = {
+ plugin = true,
+
+ n = {
+ -- Navigation through hunks
+ ["]c"] = {
+ function()
+ if vim.wo.diff then
+ return "]c"
+ end
+ vim.schedule(function()
+ require("gitsigns").next_hunk()
+ end)
+ return "<Ignore>"
+ end,
+ "Jump To Next Hunk",
+ opts = { expr = true },
+ },
+
+ ["[c"] = {
+ function()
+ if vim.wo.diff then
+ return "[c"
+ end
+ vim.schedule(function()
+ require("gitsigns").prev_hunk()
+ end)
+ return "<Ignore>"
+ end,
+ "Jump To Prev Hunk",
+ opts = { expr = true },
+ },
+
+ -- Actions
+ ["<leader>rh"] = {
+ function()
+ require("gitsigns").reset_hunk()
+ end,
+ "Reset Hunk",
+ },
+
+ ["<leader>ph"] = {
+ function()
+ require("gitsigns").preview_hunk()
+ end,
+ "Preview Hunk",
+ },
+
+ ["<leader>gb"] = {
+ function()
+ package.loaded.gitsigns.blame_line()
+ end,
+ "Blame Line",
+ },
+
+ ["<leader>td"] = {
+ function()
+ require("gitsigns").toggle_deleted()
+ end,
+ "Toggle Deleted",
+ },
+ },
+}
+
+return M