Initial commit: nvim-minimal

A small, fast, portable Neovim config built on bare lazy.nvim (no LazyVim,
no LSPs, no Mason). Vendored `based` colorscheme (GPLv3, self-authored,
derived from vim-vividchalk) so the config loads on any machine with just
nvim + git — the listed treesitter parsers ship prebuilt, so no compiler
is needed for the configured languages.

Plugins: snacks.nvim (picker/explorer/buffers), nvim-treesitter (pinned to
master for the declarative ensure_installed/highlight/indent API), blink.cmp
(buffer+path completion, prebuilt binary), lualine, gitsigns, mini.align/
comment/surround.

Personal keymaps ported: jj/jk/kj/чя escape, ж -> :, Russian langmap, arrow
disables, bracket-return expansions, gc/sa-sd-sr/gz-gZ.
This commit is contained in:
mk committed 2026-07-28 03:23:41 +03:00
commit 97a90cc1e5
16 files changed
+575

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
-- saghen/blink.cmp: fast completion (Rust-backed, prebuilt binary).
-- Sources are buffer words + file paths only (no LSP). Filename completion
-- comes from the `path` source, triggered by typing `/` or `./`.
-- `version = "*"` pulls a release tag, which ships a prebuilt `libblink`
-- binary (x86_64/arm64, linux/mac) — no Rust toolchain needed on those arches.
return {
{
"saghen/blink.cmp",
event = "InsertEnter",
version = "*",
opts = {
sources = {
default = { "buffer", "path" },
},
completion = {
ghost_text = { enabled = false },
list = { selection = { preselect = false, auto_insert = false } },
},
keymap = {
preset = "super-tab",
["<C-space>"] = { "show", "show_documentation", "hide_documentation" },
["<C-e>"] = { "hide", "fallback" },
["<Tab>"] = {
"select_next",
function(cmp)
if cmp.snippet_active() then
return cmp.accept()
else
return cmp.select_and_accept()
end
end,
"snippet_forward",
"fallback",
},
["<S-Tab>"] = { "select_prev", "snippet_backward", "fallback" },
["<cr>"] = { "select_and_accept", "fallback_to_mappings" },
["<Up>"] = { "select_prev", "fallback" },
["<Down>"] = { "select_next", "fallback" },
["<C-p>"] = { "select_prev", "fallback_to_mappings" },
["<C-n>"] = { "select_next", "fallback_to_mappings" },
["<C-b>"] = { "scroll_documentation_up", "fallback" },
["<C-f>"] = { "scroll_documentation_down", "fallback" },
["<C-k>"] = { "show_signature", "hide_signature", "fallback" },
},
},
},
}
+26
View File
@@ -0,0 +1,26 @@
-- echasnovski/mini.*: small, dependency-free editing utilities.
return {
{
"echasnovski/mini.align",
keys = {
{ "gz", mode = { "n", "x" } },
{ "gZ", mode = { "n", "x" } },
},
opts = {
mappings = {
start = "gz",
start_with_preview = "gZ",
},
},
},
{
"echasnovski/mini.comment",
event = "VeryLazy",
opts = {},
},
{
"echasnovski/mini.surround",
event = "VeryLazy",
opts = {},
},
}
+34
View File
@@ -0,0 +1,34 @@
-- folke/snacks.nvim: picker, explorer, buffers.
-- The familiar `gb` / `<leader>F` / `<leader>t` entry points live here as
-- lazy `keys`, so the global `Snacks` is guaranteed to exist before any call.
return {
{
"folke/snacks.nvim",
priority = 1000,
lazy = false,
keys = {
{
"gb",
function()
Snacks.picker.buffers({ hidden = false, nofile = false, sort_lastused = true, current = false })
end,
desc = "Buffers",
},
{
"<leader>F",
function()
Snacks.picker.files({ exclude = { "node_modules/", ".git/" }, hidden = true, auto_close = true })
end,
desc = "Find Files",
},
{
"<leader>t",
function()
Snacks.picker.explorer({ exclude = { "node_modules/", ".git/" }, hidden = true, auto_close = true })
end,
desc = "Explorer",
},
},
opts = {},
},
}
+42
View File
@@ -0,0 +1,42 @@
-- nvim-treesitter: highlighting, indentation, and treesitter-based folds.
-- All listed parsers ship PREBUILT in the plugin repo, so no compiler is needed
-- for the configured languages. A C toolchain (base-devel) is only required if
-- you add parsers that aren't prebuilt or force `:TSInstall` to recompile.
-- Pinned to the legacy `master` branch, which keeps the declarative
-- ensure_installed/highlight/indent API the old config used. The new `main`
-- branch dropped this API in favor of do-it-yourself autocommands.
return {
{
"nvim-treesitter/nvim-treesitter",
branch = "master",
event = "VeryLazy",
build = ":TSUpdate",
opts = {
ensure_installed = {
"bash",
"css",
"html",
"javascript",
"json",
"lua",
"markdown",
"markdown_inline",
"python",
"query",
"regex",
"rust",
"scss",
"svelte",
"tsx",
"typescript",
"vim",
"yaml",
},
highlight = { enable = true },
indent = { enable = true },
},
config = function(_, opts)
require("nvim-treesitter.configs").setup(opts)
end,
},
}
+32
View File
@@ -0,0 +1,32 @@
-- UI: statusline, git gutter signs, file icons.
-- The `based` colorscheme is vendored at ../../colors/based.vim and set in
-- init.lua, so it needs no lazy spec here.
return {
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
dependencies = { "nvim-tree/nvim-web-devicons" },
opts = {
options = {
theme = "auto",
component_separators = { left = "│", right = "│" },
section_separators = {},
globalstatus = true,
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff" },
lualine_c = { { "filename", path = 1 } },
lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = { "progress" },
lualine_z = { "location" },
},
},
},
{
"lewis6991/gitsigns.nvim",
event = { "BufReadPre", "BufNewFile" },
opts = {},
},
{ "nvim-tree/nvim-web-devicons", lazy = true },
}