mirror of
https://github.com/hazemKrimi/config.nvim.git
synced 2026-05-01 18:20:26 +00:00
feat: updated rice
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
local augroup = vim.api.nvim_create_augroup("UserConfig", {})
|
||||
|
||||
-- Highlight yanked text
|
||||
|
||||
vim.api.nvim_create_autocmd("TextYankPost", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
|
||||
-- Return to last edit position when opening files
|
||||
|
||||
vim.api.nvim_create_autocmd("BufReadPost", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
local mark = vim.api.nvim_buf_get_mark(0, '"')
|
||||
local lcount = vim.api.nvim_buf_line_count(0)
|
||||
local line = mark[1]
|
||||
local ft = vim.bo.filetype
|
||||
if line > 0 and line <= lcount
|
||||
and vim.fn.index({ "commit", "gitrebase", "xxd" }, ft) == -1
|
||||
and not vim.o.diff then
|
||||
pcall(vim.api.nvim_win_set_cursor, 0, mark)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Auto-close terminal when process exits
|
||||
|
||||
vim.api.nvim_create_autocmd("TermClose", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
if vim.v.event.status == 0 then
|
||||
vim.api.nvim_buf_delete(0, {})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Auto-resize splits when window is resized
|
||||
|
||||
vim.api.nvim_create_autocmd("VimResized", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
vim.cmd("tabdo wincmd =")
|
||||
end,
|
||||
})
|
||||
|
||||
-- Create directories when saving files
|
||||
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
group = augroup,
|
||||
callback = function()
|
||||
local dir = vim.fn.expand('<afile>:p:h')
|
||||
if vim.fn.isdirectory(dir) == 0 then
|
||||
vim.fn.mkdir(dir, 'p')
|
||||
end
|
||||
end,
|
||||
})
|
||||
@@ -1,10 +0,0 @@
|
||||
-- Highlight when yanking (copying) text
|
||||
-- Try it with `yap` in normal mode
|
||||
-- See `:help vim.highlight.on_yank()`
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Highlight when yanking (copying) text',
|
||||
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
||||
@@ -1,47 +0,0 @@
|
||||
vim.g.loaded_netrw = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
vim.wo.number = true
|
||||
vim.o.winborder = "single"
|
||||
vim.o.autoread = true
|
||||
vim.o.relativenumber = true
|
||||
vim.o.clipboard = 'unnamedplus'
|
||||
vim.o.wrap = false
|
||||
vim.o.linebreak = true
|
||||
vim.o.mouse = 'a'
|
||||
vim.o.autoindent = true
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
vim.o.shiftwidth = 2
|
||||
vim.o.tabstop = 2
|
||||
vim.o.softtabstop = 2
|
||||
vim.o.expandtab = true
|
||||
vim.o.scrolloff = 4
|
||||
vim.o.sidescrolloff = 8
|
||||
vim.o.cursorline = false
|
||||
vim.o.splitbelow = true
|
||||
vim.o.splitright = true
|
||||
vim.o.hlsearch = false
|
||||
vim.o.showmode = false
|
||||
vim.opt.termguicolors = true
|
||||
vim.o.whichwrap = 'bs<>[]hl'
|
||||
vim.o.numberwidth = 4
|
||||
vim.o.swapfile = false
|
||||
vim.o.smartindent = true
|
||||
vim.o.showtabline = 2
|
||||
vim.o.backspace = 'indent,eol,start'
|
||||
vim.o.pumheight = 10
|
||||
vim.o.conceallevel = 0
|
||||
vim.wo.signcolumn = 'yes'
|
||||
vim.o.fileencoding = 'utf-8'
|
||||
vim.o.cmdheight = 1
|
||||
vim.o.breakindent = true
|
||||
vim.o.updatetime = 250
|
||||
vim.o.timeoutlen = 300
|
||||
vim.o.backup = false
|
||||
vim.o.writebackup = false
|
||||
vim.o.undofile = true
|
||||
vim.o.completeopt = 'menuone,noselect'
|
||||
vim.opt.shortmess:append 'c'
|
||||
vim.opt.iskeyword:append '-'
|
||||
vim.opt.formatoptions:remove { 'c', 'r', 'o' }
|
||||
vim.opt.runtimepath:remove '/usr/share/vim/vimfiles'
|
||||
@@ -1,44 +1,57 @@
|
||||
-- Leader Map
|
||||
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
||||
|
||||
local opts = { noremap = true, silent = true }
|
||||
|
||||
-- Improvement to up and down movements
|
||||
vim.keymap.set('n', '<C-d>', '<C-d>zz', opts)
|
||||
vim.keymap.set('n', '<C-u>', '<C-u>zz', opts)
|
||||
-- Movement
|
||||
|
||||
-- Resize with arrows
|
||||
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result (centered)" })
|
||||
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result (centered)" })
|
||||
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Half page down (centered)" })
|
||||
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Half page up (centered)" })
|
||||
vim.keymap.set("n", "<A-j>", ":m .+1<CR>==", { desc = "Move line down" })
|
||||
vim.keymap.set("n", "<A-k>", ":m .-2<CR>==", { desc = "Move line up" })
|
||||
vim.keymap.set("v", "<A-j>", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
|
||||
vim.keymap.set("v", "<A-k>", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
|
||||
|
||||
-- Split Navigation
|
||||
|
||||
vim.keymap.set('n', '<leader>vs', '<C-w>v', { desc = 'Split window vertically' })
|
||||
vim.keymap.set('n', '<leader>hs', '<C-w>s', { desc = 'Split window horizontally' })
|
||||
vim.keymap.set('n', '<leader>es', '<C-w>=', { desc = 'Equalize splits' })
|
||||
vim.keymap.set('n', '<leader>xs', ':close<CR>', { desc = 'Close split' })
|
||||
vim.keymap.set('n', '<C-k>', ':wincmd k<CR>', opts)
|
||||
vim.keymap.set('n', '<C-j>', ':wincmd j<CR>', opts)
|
||||
vim.keymap.set('n', '<C-h>', ':wincmd h<CR>', opts)
|
||||
vim.keymap.set('n', '<C-l>', ':wincmd l<CR>', opts)
|
||||
vim.keymap.set('n', '<Up>', ':resize -2<CR>', opts)
|
||||
vim.keymap.set('n', '<Down>', ':resize +2<CR>', opts)
|
||||
vim.keymap.set('n', '<Left>', ':vertical resize -2<CR>', opts)
|
||||
vim.keymap.set('n', '<Right>', ':vertical resize +2<CR>', opts)
|
||||
|
||||
-- Window management
|
||||
vim.keymap.set('n', '<leader>vs', '<C-w>v', { desc = 'Split window vertically' }) -- split window vertically
|
||||
vim.keymap.set('n', '<leader>hs', '<C-w>s', { desc = 'Split window horizontally' }) -- split window horizontally
|
||||
vim.keymap.set('n', '<leader>es', '<C-w>=', { desc = 'Equalize splits' }) -- make split windows equal width & height
|
||||
vim.keymap.set('n', '<leader>xs', ':close<CR>', { desc = 'Close split' }) -- close current split window
|
||||
-- Buffer Navigation
|
||||
|
||||
-- Navigate between splits
|
||||
vim.keymap.set('n', '<C-k>', ':wincmd k<CR>', opts)
|
||||
vim.keymap.set('n', '<C-j>', ':wincmd j<CR>', opts)
|
||||
vim.keymap.set('n', '<C-h>', ':wincmd h<CR>', opts)
|
||||
vim.keymap.set('n', '<C-l>', ':wincmd l<CR>', opts)
|
||||
|
||||
-- Toggle line wrapping
|
||||
vim.keymap.set('n', '<leader>lw', '<cmd>set wrap!<CR>', opts)
|
||||
|
||||
-- Stay in indent mode
|
||||
vim.keymap.set('v', '<', '<gv', opts)
|
||||
vim.keymap.set('v', '>', '>gv', opts)
|
||||
vim.keymap.set("n", "<leader>bn", ":bnext<CR>", { desc = "Next buffer" })
|
||||
vim.keymap.set("n", "<leader>bp", ":bprevious<CR>", { desc = "Previous buffer" })
|
||||
|
||||
-- Diagnostic keymaps
|
||||
|
||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
|
||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
|
||||
vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
|
||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
|
||||
|
||||
-- Greatest remap ever
|
||||
-- Convenience
|
||||
|
||||
vim.keymap.set({ "n", "v" }, "<leader>d", '"_d', { desc = "Delete without yanking" })
|
||||
vim.keymap.set("x", "<leader>p", [["_dP]], { desc = 'Paste previously yanked' })
|
||||
vim.keymap.set('n', '<leader>lw', '<cmd>set wrap!<CR>', opts)
|
||||
vim.keymap.set('v', '<', '<gv', opts)
|
||||
vim.keymap.set('v', '>', '>gv', opts)
|
||||
vim.keymap.set("n", "<leader>c", ":nohlsearch<CR>", { desc = "Clear search highlights" })
|
||||
vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and keep cursor position" })
|
||||
vim.keymap.set("n", "<leader>rc", ":e $MYVIMRC<CR>", { desc = "Edit config" })
|
||||
vim.keymap.set("n", "<leader>rl", ":so $MYVIMRC<CR>", { desc = "Reload config" })
|
||||
@@ -0,0 +1,97 @@
|
||||
-- Theme
|
||||
|
||||
vim.cmd.colorscheme("lunaperche")
|
||||
|
||||
-- Basic
|
||||
|
||||
vim.wo.number = true
|
||||
vim.o.relativenumber = true
|
||||
vim.o.cursorline = true
|
||||
vim.o.wrap = false
|
||||
vim.o.scrolloff = 10
|
||||
vim.o.sidescrolloff = 8
|
||||
|
||||
-- Indentation
|
||||
|
||||
vim.o.tabstop = 2
|
||||
vim.o.softtabstop = 2
|
||||
vim.o.shiftwidth = 2
|
||||
vim.o.expandtab = true
|
||||
vim.o.smartindent = true
|
||||
vim.o.autoindent = true
|
||||
|
||||
-- Search
|
||||
|
||||
vim.o.ignorecase = true
|
||||
vim.o.smartcase = true
|
||||
vim.o.autoindent = true
|
||||
|
||||
-- Visual
|
||||
|
||||
vim.o.winborder = "single"
|
||||
vim.o.showmode = false
|
||||
vim.o.termguicolors = true
|
||||
vim.o.signcolumn = "yes"
|
||||
vim.o.showmatch = true
|
||||
vim.o.matchtime = 2
|
||||
vim.o.cmdheight = 1
|
||||
vim.o.completeopt = "menuone,noinsert,noselect"
|
||||
vim.o.pumheight = 10
|
||||
vim.opt.concealcursor = ""
|
||||
vim.o.lazyredraw = true
|
||||
vim.o.synmaxcol = 300
|
||||
|
||||
-- File
|
||||
|
||||
vim.o.backup = false
|
||||
vim.o.writebackup = false
|
||||
vim.o.swapfile = false
|
||||
vim.o.undofile = true
|
||||
vim.o.undodir = vim.fn.expand("~/.vim/undofir")
|
||||
vim.o.updatetime = 300
|
||||
vim.o.timeoutlen = 500
|
||||
vim.o.ttimeoutlen = 0
|
||||
vim.o.autoread = true
|
||||
vim.o.autowrite = false
|
||||
|
||||
-- Behavior
|
||||
|
||||
vim.o.hidden = true
|
||||
vim.o.errorbells = true
|
||||
vim.o.backspace = "indent,eol,start"
|
||||
vim.o.autochdir = false
|
||||
vim.o.selection = "exclusive"
|
||||
vim.o.mouse = "a"
|
||||
vim.o.modifiable = true
|
||||
vim.o.encoding = "UTF-8"
|
||||
vim.opt.clipboard:append 'unnamedplus'
|
||||
vim.opt.iskeyword:append '-'
|
||||
vim.opt.path:append '**'
|
||||
|
||||
-- Folding
|
||||
|
||||
vim.o.foldmethod = "expr"
|
||||
vim.o.foldexpr = "nvim_treesitter#foldexpr()"
|
||||
vim.o.foldlevel = 99
|
||||
|
||||
-- Split Behavior
|
||||
|
||||
vim.o.splitbelow = true
|
||||
vim.o.splitright = true
|
||||
|
||||
-- Command Line Completion
|
||||
|
||||
vim.o.wildmenu = true
|
||||
vim.o.wildmode = "longest:full,full"
|
||||
|
||||
-- Performance
|
||||
|
||||
vim.o.redrawtime = 10000
|
||||
vim.o.maxmempattern = 20000
|
||||
|
||||
-- Undo Directory
|
||||
|
||||
local undodir = vim.fn.expand("~/.vim/undodir")
|
||||
if vim.fn.isdirectory(undodir) == 0 then
|
||||
vim.fn.mkdir(undodir, "p")
|
||||
end
|
||||
@@ -1,26 +0,0 @@
|
||||
return {
|
||||
'goolord/alpha-nvim',
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
|
||||
config = function()
|
||||
local alpha = require 'alpha'
|
||||
local dashboard = require 'alpha.themes.startify'
|
||||
|
||||
dashboard.section.header.val = {
|
||||
[[ ]],
|
||||
[[ ]],
|
||||
[[ ████ ██████ █████ ██ ]],
|
||||
[[ ███████████ █████ ]],
|
||||
[[ █████████ ███████████████████ ███ ███████████ ]],
|
||||
[[ █████████ ███ █████████████ █████ ██████████████ ]],
|
||||
[[ █████████ ██████████ █████████ █████ █████ ████ █████ ]],
|
||||
[[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]],
|
||||
[[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]],
|
||||
[[ ]],
|
||||
}
|
||||
|
||||
alpha.setup(dashboard.opts)
|
||||
end,
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
return {
|
||||
'folke/tokyonight.nvim',
|
||||
'rebelot/kanagawa.nvim',
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
init = function()
|
||||
vim.cmd.colorscheme 'tokyonight-night'
|
||||
vim.cmd.colorscheme 'kanagawa-dragon'
|
||||
vim.cmd.hi 'Comment gui=none'
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
return {
|
||||
{
|
||||
'mfussenegger/nvim-dap',
|
||||
dependencies = {
|
||||
'rcarriga/nvim-dap-ui',
|
||||
'theHamsta/nvim-dap-virtual-text',
|
||||
'nvim-neotest/nvim-nio',
|
||||
'williamboman/mason.nvim',
|
||||
},
|
||||
config = function()
|
||||
local dap = require 'dap'
|
||||
local ui = require 'dapui'
|
||||
|
||||
require('dapui').setup()
|
||||
require('nvim-dap-virtual-text').setup()
|
||||
|
||||
dap.adapters.chrome = {
|
||||
type = 'executable',
|
||||
command = 'node',
|
||||
args = { os.getenv 'HOME' .. '/.local/share/nvim/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js' },
|
||||
}
|
||||
dap.adapters.delve = {
|
||||
type = 'server',
|
||||
host = '127.0.0.1',
|
||||
port = 38697,
|
||||
}
|
||||
|
||||
dap.configurations.javascriptreact = {
|
||||
{
|
||||
type = 'chrome',
|
||||
request = 'launch',
|
||||
name = 'Launch in Brave',
|
||||
webRoot = '${workspaceFolder}',
|
||||
runtimeExecutable = '/snap/bin/brave',
|
||||
sourceMaps = true,
|
||||
userDataDir = true,
|
||||
url = function()
|
||||
local co = coroutine.running()
|
||||
return coroutine.create(function()
|
||||
vim.ui.input({
|
||||
prompt = 'Enter URL: ',
|
||||
default = 'http://localhost:3000',
|
||||
}, function(url)
|
||||
if url == nil or url == '' then
|
||||
return
|
||||
else
|
||||
coroutine.resume(co, url)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end,
|
||||
},
|
||||
}
|
||||
dap.configurations.typescriptreact = {
|
||||
{
|
||||
type = 'chrome',
|
||||
request = 'launch',
|
||||
name = 'Launch in Brave',
|
||||
webRoot = '${workspaceFolder}',
|
||||
runtimeExecutable = '/snap/bin/brave',
|
||||
sourceMaps = true,
|
||||
userDataDir = true,
|
||||
url = function()
|
||||
local co = coroutine.running()
|
||||
return coroutine.create(function()
|
||||
vim.ui.input({
|
||||
prompt = 'Enter URL: ',
|
||||
default = 'http://localhost:3000',
|
||||
}, function(url)
|
||||
if url == nil or url == '' then
|
||||
return
|
||||
else
|
||||
coroutine.resume(co, url)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end,
|
||||
},
|
||||
}
|
||||
dap.configurations.go = {
|
||||
{
|
||||
type = 'delve',
|
||||
name = 'Debug',
|
||||
mode = 'remote',
|
||||
request = 'attach',
|
||||
program = '${file}',
|
||||
},
|
||||
}
|
||||
|
||||
vim.keymap.set('n', '<leader>b', dap.toggle_breakpoint)
|
||||
vim.keymap.set('n', '<leader>gb', dap.run_to_cursor)
|
||||
|
||||
-- Eval var under cursor
|
||||
vim.keymap.set('n', '<leader>?', function()
|
||||
require('dapui').eval(nil, { enter = true })
|
||||
end)
|
||||
|
||||
vim.keymap.set('n', '<F1>', dap.continue)
|
||||
vim.keymap.set('n', '<F2>', dap.step_into)
|
||||
vim.keymap.set('n', '<F3>', dap.step_over)
|
||||
vim.keymap.set('n', '<F4>', dap.step_out)
|
||||
vim.keymap.set('n', '<F5>', dap.step_back)
|
||||
vim.keymap.set('n', '<F6>', dap.restart)
|
||||
|
||||
dap.listeners.before.attach.dapui_config = function()
|
||||
ui.open()
|
||||
end
|
||||
dap.listeners.before.launch.dapui_config = function()
|
||||
ui.open()
|
||||
end
|
||||
dap.listeners.before.event_terminated.dapui_config = function()
|
||||
ui.close()
|
||||
end
|
||||
dap.listeners.before.event_exited.dapui_config = function()
|
||||
ui.close()
|
||||
end
|
||||
end,
|
||||
},
|
||||
}
|
||||
@@ -40,7 +40,6 @@ return {
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = 'nord', -- Set theme based on environment variable
|
||||
-- Some useful glyphs:
|
||||
-- https://www.nerdfonts.com/cheat-sheet
|
||||
--
|
||||
|
||||
@@ -29,18 +29,4 @@ return {
|
||||
opts = { signs = false },
|
||||
},
|
||||
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
|
||||
{
|
||||
'github/copilot.vim',
|
||||
config = function()
|
||||
vim.keymap.set('n', '<leader>ec', ':Copilot enable<CR>', { desc = 'Enable Copilot', noremap = false, silent = true })
|
||||
vim.keymap.set('n', '<leader>dc', ':Copilot disable<CR>', { desc = 'Disable Copilot', noremap = false, silent = true })
|
||||
vim.keymap.set('i', '<C-g>', 'copilot#Accept("\\<CR>")', {
|
||||
expr = true,
|
||||
replace_keycodes = false,
|
||||
silent = true,
|
||||
noremap = true,
|
||||
})
|
||||
vim.g.copilot_no_tab_map = true
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user