跳至内容

项目经理

介绍

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 语言。

例如,您可以在打开编辑器时,上下文打开带有NvimTree 的侧边缓冲区,使用命令NvimTreeToggle

启动命令(可选):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