Files
nvim/lua/config/keymap.lua

93 lines
3.0 KiB
Lua

local km = vim.keymap.set
--remaps
vim.g.mapleader = " "
vim.g.maplocalleader = ","
-- oil
vim.keymap.set('n', "-", "<cmd>Oil --float<CR>", { desc ="Enter file explorer (Oil)" })
vim.keymap.set('n', "w", "<cmd>w<CR>", { desc = "Save" } )
vim.keymap.set('n', "<leader>w", "<cmd>w<CR>", { desc = "Save" } )
vim.keymap.set('n', "q", "<cmd>q<CR>", { desc = "Quit without saving" } )
vim.keymap.set('n', "<leader>q", "<cmd>q<CR>", { desc = "Quit without saving" } )
vim.keymap.set('n', "<leader>wq", "<cmd>wq<CR>", { desc = "Save and quit" } )
vim.keymap.set('n', "<leader>qq", "<cmd>q!<CR>", { desc = "Force to quit without saving" } )
-- switch between windows
vim.keymap.set("n", "<leader>j", "<C-w>j")
vim.keymap.set("n", "<leader>h", "<C-w>h")
vim.keymap.set("n", "<leader>k", "<C-w>k")
vim.keymap.set("n", "<leader>l", "<C-w>l")
-- TERMINAL
-- exit t mode
km("t", "<Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode"})
km("n", "<leader>t" , function()
print("open terminal")
-- function OpenTerminal()
local dir = vim.fn.expand('%:p:h') -- if in a file
if vim.startswith(dir, 'oil://') then -- if in an Oil buffer
dir = string.sub(dir, 7) -- Strip 'oil://' prefix
if vim.api.nvim_buf_get_option(0, "buftype") == "nofile" then -- is in a float
vim.cmd.q()
end
end
vim.cmd('lcd ' .. dir)
vim.cmd('terminal')
end
, { desc = "Create a terminal in the current 'context'" }
)
-- todo: this is not robust... add autocompletion and verify that file exists
vim.keymap.set("n", "<leader>e", function()
local file_name = vim.fn.input("Open file: ")
if file_name ~= "" then
vim.cmd(":edit " .. file_name)
end
end, { desc = "edit a file"})
-- BUFFERS navigation and manipulation
vim.keymap.set("n","<leader>ls", "<cmd>ls<CR>", { desc = "list buffers" })
vim.keymap.set("n","<leader>f", "<cmd>bnext<CR>", { desc = "goto next buffers" })
vim.keymap.set("n","<leader>d", "<cmd>bprevious<CR>", { desc = "goto previous buffers" })
vim.keymap.set("n","<leader>c", "<cmd>bd<CR>", { desc = "close buffers" })
-- CUSTOM HELP FILES
vim.keymap.set("n", "<leader>h", function()
local config_path = vim.fn.stdpath('config')
local readme_path = config_path .. '/CHEATSHEET.md'
local buf = vim.fn.bufadd(readme_path)
vim.fn.bufload(buf)
local win = vim.api.nvim_open_win(buf, true, {
relative = 'editor',
width = 80,
height = 20,
col = (vim.o.columns - 80) / 2,
row = (vim.o.lines - 100) / 2,
style = 'minimal'
})
vim.api.nvim_win_set_option(win, 'number', false)
end, { desc = "Open CHEATSHEET.md"})
vim.keymap.set("n", "<leader>hr", function()
local config_path = vim.fn.stdpath('config')
local readme_path = config_path .. '/README.md'
local buf = vim.fn.bufadd(readme_path)
vim.fn.bufload(buf)
local win = vim.api.nvim_open_win(buf, true, {
relative = 'editor',
width = 80,
height = 20,
col = (vim.o.columns - 80) / 2,
row = (vim.o.lines - 100) / 2,
style = 'minimal'
})
vim.api.nvim_win_set_option(win, 'number', false)
end, { desc = "Open CHEATSHEET.md"})