Files
i3-dot/nvim-server/init.lua
2026-03-06 12:55:19 +07:00

88 lines
2.8 KiB
Lua

-- Minimal server editor config
-- Launch with: NVIM_APPNAME=nvim-server nvim
-------------------- Options --------------------
vim.g.mapleader = ","
vim.opt.number = true
vim.opt.cursorline = true
vim.opt.expandtab = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.softtabstop = 4
vim.opt.autoindent = true
vim.opt.smartindent = true
vim.opt.hlsearch = true
vim.opt.incsearch = true
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.splitright = true
vim.opt.splitbelow = true
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.signcolumn = "no"
vim.opt.updatetime = 250
vim.opt.undofile = true
vim.opt.clipboard = "unnamedplus"
-------------------- Keymaps --------------------
vim.keymap.set("n", "i", ":nohls<CR>i", { silent = true })
vim.keymap.set("n", "<Space>", ":w<CR>", { silent = true })
-- Window navigation
vim.keymap.set("n", "<C-h>", "<C-W>h")
vim.keymap.set("n", "<C-j>", "<C-W>j")
vim.keymap.set("n", "<C-k>", "<C-W>k")
vim.keymap.set("n", "<C-l>", "<C-W>l")
vim.keymap.set("n", "<C-Left>", "<C-W>h")
vim.keymap.set("n", "<C-Down>", "<C-W>j")
vim.keymap.set("n", "<C-Up>", "<C-W>k")
vim.keymap.set("n", "<C-Right>", "<C-W>l")
-- Tab management
vim.keymap.set("n", "<leader>to", ":tabonly<CR>", { silent = true })
vim.keymap.set("n", "<leader>o", ":only<CR>", { silent = true })
vim.keymap.set("n", "<leader><Tab>", ":tabn<CR>", { silent = true })
vim.keymap.set("n", "<S-Tab>", ":tabp<CR>", { silent = true })
-------------------- Netrw (built-in file browser) --------------------
vim.g.netrw_banner = 0
vim.g.netrw_liststyle = 3
vim.keymap.set("n", "<F2>", ":Explore<CR>", { silent = true })
-------------------- Statusline (built-in) --------------------
vim.opt.statusline = " %f %m%r%= %y %l:%c %p%% "
-------------------- Bootstrap lazy.nvim --------------------
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if vim.fn.isdirectory(lazypath) == 0 then
vim.fn.system({
"git", "clone", "--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable",
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{ "4ree/viml-surround", event = "VeryLazy" },
{ "numToStr/Comment.nvim", event = "VeryLazy", opts = {} },
{
"junegunn/fzf.vim",
dependencies = { "junegunn/fzf" },
keys = {
{ "<leader>f", "<cmd>Files<CR>", desc = "Find files" },
{ "<leader>b", "<cmd>Buffers<CR>", desc = "Buffers" },
{ "<leader>r", "<cmd>Rg<CR>", desc = "Ripgrep" },
{ "<leader>g", "<cmd>GFiles<CR>", desc = "Git files" },
},
},
})
-------------------- Grep (use ripgrep if available) --------------------
if vim.fn.executable("rg") == 1 then
vim.opt.grepprg = "rg --vimgrep --smart-case"
vim.opt.grepformat = "%f:%l:%c:%m"
end