banner
orion

orion

中国科学技术大学研究生;数据库内核开发工程师;生产力爱好者;

在Lunarvim/Neovim中流暢地使用ChatGPT

效果展示#

與 ChatGPT 對話#

image

  • 透過命令行模式輸入NeoAI可以在終端右側喚出對話框,體驗模式和瀏覽器一樣,並且速度和使用瀏覽器一樣快。
  • 點擊Esc鍵可隱藏對話框。需要注意的是,每次重新輸入NeoAI都相當於打開來一次新會話。
  • 那麼如何在隱藏對話框後不開啟新會話且重新喚出對話框呢?

解釋代碼#

NeoAIContext

  • 透過視圖模式選中要傳入的代碼,然後在命令行模式輸入NeoAIContext相當於複製並發送了被選中的代碼到 ChatGPT,使得 ChatGPT 能基於你提供的代碼信息進行更準確地回答。
  • 如果直接在命令行模式輸入NeoAIContext相當於複製並發送整個緩衝區。

寫文檔#

NeoAIInject

  • 命令行模式輸入NeoAIInject 要書寫的文檔主題,ChatGPT 會生成對應文檔並插入到當前打開的文件中。

配置使用#

添加插件#

對於 Lunarvim 用戶,只需將如下代碼添加到 lvim.plugins 中即可:

 {
        "Bryley/neoai.nvim",
        dependencies = {
            "MunifTanjim/nui.nvim",
        },
        cmd = {
            "NeoAI",
            "NeoAIOpen",
            "NeoAIClose",
            "NeoAIToggle",
            "NeoAIContext",
            "NeoAIContextOpen",
            "NeoAIContextClose",
            "NeoAIInject",
            "NeoAIInjectCode",
            "NeoAIInjectContext",
            "NeoAIInjectContextCode",
        },
        keys = {
            { "<leader>as", desc = "總結文本" },
            { "<leader>ag", desc = "生成git消息" },
        },
        config = function()
            require('neoai').setup {
                -- 以下是默認選項,隨意覆蓋你想要更改的部分
                ui = {
                    output_popup_text = "NeoAI",
                    input_popup_text = "提示",
                    width = 30,               -- 以百分比表示,例如 30%
                    output_popup_height = 80, -- 以百分比表示,例如 80%
                    submit = "<Enter>",       -- 提交提示的鍵綁定
                },
                models = {
                    {
                        name = "openai",
                        model = "gpt-3.5-turbo",
                        params = nil,
                    },
                },
                register_output = {
                    ["g"] = function(output)
                        return output
                    end,
                    ["c"] = require("neoai.utils").extract_code_snippets,
                },
                inject = {
                    cutoff_width = 75,
                },
                prompts = {
                    context_prompt = function(context)
                        return "嘿,我想為未來的 "
                            .. "消息提供一些上下文。這是我想在我們即將進行的對話中提到的代碼/文本:\n\n"
                            .. context
                    end,
                },
                mappings = {
                    ["select_up"] = "<C-k>",
                    ["select_down"] = "<C-j>",
                },
                open_api_key_env = "OPENAI_API_KEY",
                shortcuts = {
                    {
                        name = "textify",
                        key = "<leader>as",
                        desc = "用AI修正文本",
                        use_context = true,
                        prompt = [[
                請重寫文本,使其更易讀、清晰、
                簡潔,並修正任何語法、標點或拼寫
                錯誤
            ]],
                        modes = { "v" },
                        strip_function = nil,
                    },
                    {
                        name = "gitcommit",
                        key = "<leader>ag",
                        desc = "生成git提交消息",
                        use_context = false,
                        prompt = function()
                            return [[
                    使用以下git diff生成一個簡潔且
                    清晰的git提交消息,並附上75個字符或更少的短標題摘要:
                ]] .. vim.fn.system("git diff --cached")
                        end,
                        modes = { "n" },
                        strip_function = nil,
                    },
                },
            }
        end
    },

neoai

添加 OPENAI_API_KEY 環境變量#

  • 打開~/.zshrc(如果你使用的是 bash 的話,則打開~/.bashrc)
    sudo vim ~/.zshrc
    
  • 在末尾添加如下內容(注意換成你自己的 OPENAI token)
    export OPENAI_API_KEY=sk-kSynjjGgqIdsgVIK7iyz$$$$$$$$$$$$KFYkQwJxM8
    
  • 保存退出(命令行模式輸入wq)
  • 使修改生效
    source ~/.zshrc
    
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。