diff --git a/lua/codecraft/core/keymaps.lua b/lua/codecraft/core/keymaps.lua
index 75355e94af14e89b706b67d4fd33fe0a8d035654..ae06e6518ee90447b1efac0531905f19ea05626e 100644
--- a/lua/codecraft/core/keymaps.lua
+++ b/lua/codecraft/core/keymaps.lua
@@ -7,10 +7,39 @@ map.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
 map.set('n', '<leader>;', 'A;<ESC>')
 map.set('n', '<leader>,', 'A,<ESC>')
 
+
 -- Remap for dealing with word wrap
 -- map.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
 -- map.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
 
+-- Remaining cursor
+map.set('n', 'J', 'mzJ`z')
+map.set('n', '<C-d>', '<C-d>zz')
+map.set('n', '<C-u>', '<C-u>zz')
+map.set('n', 'n', 'nzzzv')
+map.set('n', 'N', 'Nzzzv')
+
+-- COPY PASTE
+-- Moving lines
+map.set("v", "J", ":m '>+1<CR>gv=gv")
+map.set("v", "K", ":m '<-2<CR>gv=gv")
+-- Paste and delete to void register
+map.set('x', '<leader>p', '"_dP')
+map.set({'n', 'v'}, '<leader>y', '"+y')
+map.set('n', '<leader>Y', '"+Y')
+
+-- Deleting to void
+map.set({'n', 'v'}, '<leader>d', '"_d')
+
+-- UTIL
+-- replace current word
+map.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
+-- make executable
+map.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
+
+-- for vertical escape
+map.set('i', '<C-c>', '<ESC>')
+
 -- exit terminal mode
 map.set('t', '<ESC>', '<C-\\><C-n>')
 
@@ -63,7 +92,7 @@ map.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '
 map.set('n', '<leader>/', function()
   -- You can pass additional configuration to telescope to change theme, layout, etc.
   require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
-    winblend = 10,
+    winblend = 0,
     previewer = false,
   })
 end, { desc = '[/] Fuzzily search in current buffer]' })
@@ -73,6 +102,7 @@ map.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]
 map.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
 map.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
 map.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
+map.set('n', '<leader>ff', require('telescope.builtin').git_files, { desc = 'Find git files' })
 
 -- UNDOTREE
 map.set('n', '<leader><F5>', vim.cmd.UndotreeToggle)
diff --git a/lua/codecraft/core/options.lua b/lua/codecraft/core/options.lua
index f95e9fee0ff2314a1bf00e1faca55d50b11f9df7..a8d911b8889a8dc9360fcce3d09ef674685998e4 100644
--- a/lua/codecraft/core/options.lua
+++ b/lua/codecraft/core/options.lua
@@ -44,6 +44,10 @@ o.undofile = true
 o.ignorecase = true
 o.smartcase = true
 
+-- UNDODIR
+opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
+opt.undofile = true
+
 -- Decrease update time
 o.updatetime = 250
 wo.signcolumn = 'yes'
diff --git a/lua/codecraft/plugin/lsp/lsp.lua b/lua/codecraft/plugin/lsp/lsp.lua
index 5cd5323f81acb597dccd1c61b35acb1c17cc3197..1e5fd67e427c35996e1a801f4e25b1d1739770c9 100644
--- a/lua/codecraft/plugin/lsp/lsp.lua
+++ b/lua/codecraft/plugin/lsp/lsp.lua
@@ -21,6 +21,8 @@ local on_attach = function(_, bufnr)
 
   nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
   nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
+  nmap('<leader>di', vim.diagnostic.open_float, '[D]iagnostic [I]nfo')
+  nmap('<leader>dv', '<cmd>Telescope diagnostics<CR>', '[D]iagnostic [V]iew')
 
   nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
   nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')