-- NOTE: General -- -- hjkl to ijkl remap vim.keymap.set({ 'n', 'v', 'o' }, 'j', 'h', { desc = 'hjkl to ijkl' }) vim.keymap.set({ 'n', 'v', 'o' }, 'h', 'i', { desc = 'hjkl to ijkl' }) vim.keymap.set({ 'n', 'v', 'o' }, 'i', 'k', { desc = 'hjkl to ijkl' }) vim.keymap.set({ 'n', 'v', 'o' }, 'k', 'j', { desc = 'hjkl to ijkl' }) -- indentation vim.keymap.set('n', '', '>>', { desc = 'tab indent ' }) vim.keymap.set('n', '', '<<', { desc = 'S-tab unindent ' }) vim.keymap.set({ 'v', 'o' }, '', '>', { desc = 'tab indent ' }) vim.keymap.set({ 'v', 'o' }, '', '<', { desc = 'S-tab unindent ' }) -- scrolling vim.keymap.set({ 'n', 'v', 'o' }, '', 'zz', { desc = 'centered scroll' }) vim.keymap.set({ 'n', 'v', 'o' }, '', 'zz', { desc = 'centered scroll' }) -- start of line vim.keymap.set({ 'n', 'v', 'o' }, '#', '_', { desc = '# start of line' }) -- save vim.keymap.set('n', '', ':w', { desc = 'ctrl-s save' }) -- tabs vim.keymap.set('n', '', ':tabnext', { desc = 'next buffer' }) vim.keymap.set('n', '', ':tabprev', { desc = 'previous buffer' }) -- delete word in insert mode vim.keymap.set('i', '', '', { desc = 'delete word in insert mode' }) -- tab luasnip -- TODO: fix this for snippets vim.keymap.del('i', '', { desc = 'remove keymap cause not be worky' }) -- NOTE: Terminal vim.keymap.set('n', '', function () local buffers = vim.api.nvim_list_bufs() local terminal_exists = false for _, buf in ipairs(buffers) do local buf_name = vim.api.nvim_buf_get_name(buf) -- find all terminal buffers if vim.api.nvim_buf_is_loaded(buf) and string.find(buf_name, '^term://') ~= nil then -- find window of first terminal window if exists local window_exists = false local windows = vim.api.nvim_list_wins() for _, win in ipairs(windows) do if vim.api.nvim_win_get_buf(win) == buf then vim.api.nvim_set_current_win(win) window_exists = true break end end -- window dosnt exist so create and put existing terminal there if not window_exists then vim.cmd.vnew() vim.api.nvim_win_set_width(0, 60) vim.api.nvim_set_current_buf(buf) end terminal_exists = true end end -- if no terminal then create new one if not terminal_exists then vim.cmd.vnew() vim.cmd.term() vim.api.nvim_win_set_width(0, 60) end vim.api.nvim_feedkeys('a', 'n', true) end, { desc = 'open terminal', silent = true }) vim.keymap.set('t', '', 'wincmd h', { desc = 'focus editor', silent = true }) vim.keymap.set('t', '', '', { desc = 'kill terminal' }) vim.keymap.set('t', '', '', { desc = 'normal mode in terminal' }) -- NOTE: Windows -- this is weird because ctrl-i => Up & ctrl-k => Down in Kitty conf vim.keymap.set({ 'n', 'v', 'o' }, '', ':wincmd k', { desc = 'moving around window using ctrl-k ijkl', silent = true }) vim.keymap.set({ 'n', 'v', 'o' }, '', ':wincmd j', { desc = 'moving around window using ctrl-k ijkl', silent = true }) vim.keymap.set({ 'n', 'v', 'o' }, '', ':wincmd l', { desc = 'moving around window using ctrl-k ijkl', silent = true }) vim.keymap.set({ 'n', 'v', 'o' }, '', ':wincmd h', { desc = 'moving around window using ctrl-k ijkl', silent = true }) -- NOTE: Telescope -- local builtin = require('telescope.builtin') vim.keymap.set('n', '', builtin.find_files, { desc = 'Telescope find files' }) vim.keymap.set('n', '/', function() -- You can pass additional configuration to Telescope to change the theme, layout, etc. builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { winblend = 10, previewer = false, }) end, { desc = 'Fuzzily search in current buffer' }) local mappings = { telescope_defaults = function(actions) return { i = { [""] = actions.close, [""] = actions.move_selection_next, [""] = actions.move_selection_previous, } } end } return mappings