Update nvim config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@ -1,10 +1,68 @@
|
||||
require "nvchad.mappings"
|
||||
|
||||
-- add yours here
|
||||
|
||||
local map = vim.keymap.set
|
||||
|
||||
map("n", ";", ":", { desc = "CMD enter command mode" })
|
||||
map("i", "jk", "<ESC>")
|
||||
map("i", "jj", "<ESC>")
|
||||
map("i", "оо", "<ESC>")
|
||||
|
||||
-- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>")
|
||||
-- Перемещение строк вверх/вниз в Visual режиме
|
||||
map("v", "<A-j>", ":m '>+1<CR>gv=gv", { desc = "Move line down" })
|
||||
map("v", "<A-k>", ":m '<-2<CR>gv=gv", { desc = "Move line up" })
|
||||
|
||||
-- Курсор остаётся на месте при объединении строк
|
||||
map("n", "J", "mzJ`z", { desc = "Join lines keeping cursor" })
|
||||
|
||||
-- Центрировать экран при скролле и поиске
|
||||
map("n", "<C-d>", "<C-d>zz", { desc = "Scroll down centered" })
|
||||
map("n", "<C-u>", "<C-u>zz", { desc = "Scroll up centered" })
|
||||
map("n", "n", "nzzzv", { desc = "Next search centered" })
|
||||
map("n", "N", "Nzzzv", { desc = "Prev search centered" })
|
||||
|
||||
-- Вставка поверх выделения без потери буфера
|
||||
map("x", "<leader>p", '"_dP', { desc = "Paste without yanking" })
|
||||
|
||||
-- Быстрое сохранение
|
||||
map({ "n", "i", "v" }, "<C-s>", "<cmd>w<CR>", { desc = "Save file" })
|
||||
|
||||
-- Markdown превью: scroll sync
|
||||
local mdviewer_sync = vim.api.nvim_create_augroup("MDViewerScrollSync", { clear = true })
|
||||
local mdviewer_preview_win = nil
|
||||
|
||||
local function setup_scroll_sync()
|
||||
vim.api.nvim_clear_autocmds { group = mdviewer_sync }
|
||||
vim.api.nvim_create_autocmd("CursorMoved", {
|
||||
group = mdviewer_sync,
|
||||
callback = function()
|
||||
local win = mdviewer_preview_win
|
||||
if not win or not vim.api.nvim_win_is_valid(win) then return end
|
||||
|
||||
local src_line = vim.api.nvim_win_get_cursor(0)[1]
|
||||
local src_total = vim.api.nvim_buf_line_count(0)
|
||||
if src_total <= 1 then return end
|
||||
|
||||
local ratio = (src_line - 1) / (src_total - 1)
|
||||
|
||||
pcall(vim.api.nvim_win_call, win, function()
|
||||
local term_total = vim.fn.line "$"
|
||||
if term_total <= 1 then return end
|
||||
local target = math.max(1, math.floor(ratio * (term_total - 1)) + 1)
|
||||
vim.cmd("normal! " .. target .. "Gzt")
|
||||
end)
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
map("n", "<leader>mp", function()
|
||||
vim.cmd "MDViewerToggle"
|
||||
local preview = require "mdviewer.preview"
|
||||
if preview.is_active() then
|
||||
-- После toggle курсор в окне превью — запоминаем его
|
||||
mdviewer_preview_win = vim.api.nvim_get_current_win()
|
||||
vim.cmd "wincmd p"
|
||||
setup_scroll_sync()
|
||||
else
|
||||
mdviewer_preview_win = nil
|
||||
vim.api.nvim_clear_autocmds { group = mdviewer_sync }
|
||||
end
|
||||
end, { desc = "Toggle markdown preview" })
|
||||
|
||||
Reference in New Issue
Block a user