跳至内容

项目管理器

简介

IDE 必须具备的功能之一是能够管理开发人员或发布者处理的各种项目。在 NvChad 打开后,能够选择要处理的项目,而无需在状态栏中输入命令来达成目标。这可以节省时间,并允许在项目数量很多的情况下进行简化管理。

使用 charludo/projectmgr.nvim 可以集成此功能。该插件提供了与 Telescope 的出色集成以及一些有趣的附加功能,例如在打开项目时同步git 存储库的能力。

该插件还会跟踪编辑器关闭时的状态,以便您下次打开时,可以看到您之前正在处理的所有页面。

插件安装

要安装该插件,您需要编辑 plugins/init.lua 文件,并添加以下代码块

{
    "charludo/projectmgr.nvim",
    lazy = false, -- important!
},

保存文件后,该插件将可供安装。要安装它,请使用命令 :Lazy 打开lazy.nvim,然后键入 I。安装完成后,您需要退出编辑器并重新打开它,以便它读取您输入的新配置。

该插件提供了一个名为 :ProjectMgr 的命令,该命令会打开一个交互式缓冲区,您可以在其中使用键盘快捷键执行所有操作。首次打开时,缓冲区将为空,如下面的屏幕截图所示

ProjectMgr Init

使用项目管理器

所有操作都通过 Ctrl 键后跟一个字母(例如 <C-a)来执行,而 <CR> 键对应于 Enter 键。

下表显示了所有可用操作

操作
<CR> 打开光标下的项目
<C-a> 通过交互式过程添加项目
<C-d> 删除项目
<C-e> 更改项目设置
<C-q> 关闭缓冲区

要添加您的第一个项目,您需要使用 Ctrl + a 的组合,这将打开一个交互式菜单,显示在状态栏中。在此示例中,将使用保存在 ~/lab/rockydocs/documentation 中的 Rocky Linux 文档的克隆。

第一个问题会询问您项目的名称

项目名称: documentation

接着是项目路径

项目路径: ~/lab/rockydocs/documentation/

接下来是设置项目打开和关闭时要运行的命令的能力。这些命令是指编辑器中可执行的命令,而不是 bash 语言。

例如,您可以在打开编辑器时,通过命令 NvimTreeToggle 在上下文环境中打开一个侧边缓冲区,其中包含NvimTree

启动命令(可选):NvimTreeToggle

或者在关闭编辑器之前运行一个命令。

退出命令(可选)

命令应在省略冒号 : 的情况下输入,该冒号用于在状态栏中运行相同的命令。

配置完成后,您的项目将可在缓冲区中使用。要打开它,请选中它并按 Enter

ProjectMgr Add

配置和信息部分的屏幕截图中可以看到,该插件已将文件夹识别为由Git 管理,并向我们提供了一些相关信息。

使用 Ctrl + e 可以编辑项目,这会进入一个新的交互式循环,而任何删除操作都可以通过 Ctrl + d 的组合完成。

附加功能

该插件提供了一些附加功能,在专用部分中进行了说明。其中最有趣的功能是在打开项目时同步 git 存储库,以及在关闭编辑器时存储编辑器状态的能力。这两种功能已包含在默认配置文件中,尽管有关Git 的功能已被禁用。

要添加在打开项目时同步存储库的功能,您需要在初始插件配置中添加以下代码

config = function()
    require("projectmgr").setup({
        autogit = {
            enabled = true,
            command = "git pull --ff-only >> .git/fastforward.log 2>&1",
        },
    })
end,

从代码中可以看到,调用了 require("projectmgr").setup 函数,该函数允许您覆盖默认设置。您在此函数中设置的任何内容都会更改其工作方式。

git pull --ff-only 命令执行存储库的快进同步,仅下载没有冲突且无需您干预即可更新的文件。

命令的结果也会定向到文件 .git/fastforward.log,以防止其显示在运行 NvChad 的终端上,并提供同步历史记录。

还提供了在关闭时保存会话的选项。这使您可以通过选择项目并再次打开它来恢复到您之前正在处理的页面。

session = { enabled = true, file = "Session.vim" },

此选项默认启用,但它会将 Session.vim 文件写入项目目录,这在 Rocky Linux 文档的情况下是不理想的。在此示例中,它保存在 .git 文件夹中,该文件夹不受版本控制。

根据您的需求调整 Session.vimfastforward.log 的路径。

更改完成后,您的配置应如下所示

{
    "charludo/projectmgr.nvim",
    lazy = false, -- important!
    config = function()
        require("projectmgr").setup({
            autogit = {
                enabled = true,
                command = "git pull --ff-only > .git/fastforward.log 2>&1",
            },
            session = { enabled = true, file = ".git/Session.vim" },
        })
    end,
},

现在,每次打开项目时,Git 存储库都会自动下载更新的文件,并且您将在编辑器中看到您之前正在处理的最新文件,即可进行编辑。

警告

NvChad 保存的会话缓冲区中的打开文件不会自动更新。

要检查打开的文件是否与存储库更新的文件不匹配,您可以使用 :checktime 命令,该命令会检查编辑器中打开的文件是否在 NvChad 之外被修改,并提醒您需要更新缓冲区。

映射

为了加快打开项目的速度,您可以在 mapping.lua 中创建键盘快捷键来放置您的映射。一个例子可能是

-- Projects
map("n", "<leader>fp", "<CMD> ProjectMgr<CR>", { desc = "Open Projects" })

NORMAL 状态下,您可以通过 Space + f 后跟 p 的组合来打开项目管理器。

结论和最终想法

随着您处理的项目数量的增加,可能需要一个工具来帮助您管理所有项目。该插件将通过减少访问需要编辑的文件所需的时间来帮助您加快工作速度。

我们还应该指出与 Telescope 的出色集成,这使得项目管理非常实用。

作者:Franco Colussi

贡献者:Steven Spencer, Ganna Zhyrnova