← Назад к обзору

Интеграция с Git

Gitsigns (знаки в поле)

{
  "lewis6991/gitsigns.nvim",
  config = function()
    require("gitsigns").setup({
      signs = {
        add          = { text = "│" },
        change       = { text = "│" },
        delete       = { text = "_" },
        topdelete    = { text = "‾" },
        changedelete = { text = "~" },
      },
      on_attach = function(bufnr)
        local gs = package.loaded.gitsigns
        local opts = { buffer = bufnr }

        vim.keymap.set("n", "]h", gs.next_hunk, opts)
        vim.keymap.set("n", "[h", gs.prev_hunk, opts)
        vim.keymap.set("n", "<leader>hp", gs.preview_hunk, opts)
        vim.keymap.set("n", "<leader>hb", gs.blame_line, opts)
        vim.keymap.set("n", "<leader>hs", gs.stage_hunk, opts)
        vim.keymap.set("n", "<leader>hr", gs.reset_hunk, opts)
      end,
    })
  end,
}

Fugitive (полный Git-интерфейс)

{
  "tpope/vim-fugitive",
  keys = {
    { "<leader>gs", "<cmd>Git<cr>", desc = "Git статус" },
  },
}

Fugitive предоставляет команду :Git (или :G), которая открывает окно статуса git. Оттуда можно:

  • Подготовить файлы к коммиту клавишей - (в окне статуса)
  • Сделать коммит через cc
  • Открыть diff через dd
  • Отправить через :Git push

Сессии и сохранение состояния

Сессии Vim

Сессии сохраняют всё состояние редактирования: открытые файлы, расположение окон, позиции курсора.

:mksession ~/mysession.vim    " Сохранить сессию
:source ~/mysession.vim       " Восстановить сессию
nvim -S ~/mysession.vim       " Восстановить сессию при запуске

Persisted.nvim (автоматические сессии)

{
  "olimorris/persisted.nvim",
  config = function()
    require("persisted").setup({
      save_dir = vim.fn.expand(vim.fn.stdpath("data") .. "/sessions/"),
      autoload = true,  -- Автозагрузка сессии при запуске
    })
  end,
}

Постоянная история отмен

vim.opt.undofile = true  -- в init.lua

Это сохраняет историю отмен между сессиями. Можно отменить изменения даже после закрытия и повторного открытия файла.