mappings.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. local wk = require("which-key")
  2. local telescope = require("telescope.builtin")
  3. local gitsigns = require("gitsigns")
  4. -- local tree = require "nvim-tree.api"
  5. function FormatBuffer(command)
  6. -- Save the current cursor position
  7. local cursor_position = vim.fn.getpos(".")
  8. -- Run the formatter command on the current buffer
  9. vim.cmd(":%! " .. command)
  10. -- Restore the cursor position
  11. vim.fn.setpos(".", cursor_position)
  12. end
  13. function ToggleTree(source)
  14. require("neo-tree.command").execute({
  15. toggle = true,
  16. source = source,
  17. position = "left",
  18. })
  19. end
  20. wk.add({
  21. {
  22. mode = "n",
  23. -- telescope
  24. {
  25. "<leader>ff",
  26. function()
  27. telescope.find_files()
  28. end,
  29. desc = "Find file",
  30. },
  31. {
  32. "<leader>fg",
  33. function()
  34. telescope.live_grep()
  35. end,
  36. desc = "Live grep",
  37. },
  38. {
  39. "<leader>fb",
  40. function()
  41. telescope.buffers()
  42. end,
  43. desc = "List buffers",
  44. },
  45. {
  46. "<leader>fh",
  47. function()
  48. telescope.help_tags()
  49. end,
  50. desc = "Help",
  51. },
  52. {
  53. "<leader>fs",
  54. function()
  55. telescope.lsp_document_symbols()
  56. end,
  57. desc = "Find symbols",
  58. },
  59. {
  60. "zz",
  61. function()
  62. telescope.spell_suggest()
  63. end,
  64. desc = "Suggest spell",
  65. },
  66. {
  67. "zr",
  68. function()
  69. vim.lsp.buf.rename()
  70. end,
  71. desc = "Rename symbol",
  72. },
  73. {
  74. "<leader>ft",
  75. function()
  76. FormatBuffer("typstfmt")
  77. end,
  78. desc = "Typst fmt",
  79. },
  80. -- Centering cursor
  81. { "n", "nzzzv", desc = "Center cursor when n (next) during search" },
  82. { "N", "Nzzzv", desc = "Center cursor when n (next) during search" },
  83. -- tab
  84. { "<tab>", ":BufferLineCycleNext <CR>", desc = "Next tab" },
  85. { "<S-tab>", ":BufferLineCyclePrev<CR>", desc = "Previous tab" },
  86. -- Comment
  87. { "<leader>/", "gcc", desc = "comment toggle", remap = true },
  88. -- Format
  89. {
  90. "<leader>fm",
  91. function()
  92. require("conform").format({ lsp_fallback = true })
  93. end,
  94. desc = "format files",
  95. },
  96. -- nvim-tree
  97. -- { "<C-n>", function() tree.tree.toggle() end, desc = "Toggle file tree" },
  98. {
  99. "<C-n>",
  100. function()
  101. -- ToggleTree("filesystem")
  102. -- require("edgy").toggle("left")
  103. require("edgy-group").open_group_offset("left", 1)
  104. end,
  105. desc = "Toggle left panel",
  106. },
  107. {
  108. "<leader>uh",
  109. function()
  110. require("edgy").toggle("left")
  111. end,
  112. desc = "left",
  113. },
  114. -- Typst format
  115. {
  116. "<leader>ft",
  117. function()
  118. FormatBuffer("typstfmt")
  119. end,
  120. desc = "Typst formater",
  121. },
  122. -- Lsp
  123. {
  124. "K",
  125. function()
  126. vim.lsp.buf.hover()
  127. end,
  128. desc = "LSP toggle",
  129. },
  130. {
  131. "<leader>ca",
  132. function()
  133. vim.lsp.buf.code_action()
  134. end,
  135. desc = "LSP code action",
  136. },
  137. {
  138. "<leader>cd",
  139. "<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
  140. desc = "LSP code diagnostic",
  141. },
  142. -- Gitsigns
  143. {
  144. "<leader>nc",
  145. function()
  146. gitsigns.nav_hunk("next")
  147. end,
  148. desc = "Next change",
  149. },
  150. {
  151. "<leader>pc",
  152. function()
  153. gitsigns.nav_hunk("prev")
  154. end,
  155. desc = "Previous change",
  156. },
  157. -- increment/decrement numbers
  158. { "<leader>+", "<C-a>", desc = "Increment number" }, -- increment
  159. { "<leader>-", "<C-x>", desc = "Decrement number" }, -- decrement
  160. { "<leader>to", "<cmd>tabnew<CR>", desc = "Open new tab" }, -- open new tab
  161. { "<leader>tx", "<cmd>tabclose<CR>", desc = "Close current tab" }, -- close current tab
  162. { "<leader>tn", "<cmd>tabn<CR>", desc = "Go to next tab" }, -- go to next tab
  163. { "<leader>tp", "<cmd>tabp<CR>", desc = "Go to previous tab" }, -- go to previous tab
  164. { "<leader>tf", "<cmd>tabnew %<CR>", desc = "Open current buffer in new tab" }, -- move current buffer to new tab
  165. {
  166. "<ESC>",
  167. ":noh<CR>",
  168. desc = "clears search highlights",
  169. noremap = true,
  170. silent = true,
  171. },
  172. {
  173. "<leader>ib",
  174. function()
  175. print(vim.bo.filetype)
  176. end,
  177. desc = "Print the filetype of current buffer",
  178. },
  179. -- { "<leader>uh", function() require("edgy").select("left") end, desc = "focus left" },
  180. },
  181. {
  182. mode = "v",
  183. { "<S-j>", ":m '>+1<CR>gv=gv", desc = "Move selection down" },
  184. { "<S-k>", ":m '<-2<CR>gv=gv", desc = "Move selection up" },
  185. -- Comment
  186. { "<leader>/", "gc", desc = "comment toggle", remap = true },
  187. {
  188. "<ESC>",
  189. ":noh<CR>",
  190. desc = "clears search highlights",
  191. noremap = true,
  192. silent = true,
  193. },
  194. },
  195. })