99 for Neovim: 你的 AI 程式碼助手,讓程式碼更上一層樓
嘿,各位熱愛程式碼的台灣朋友們!想讓你在 Neovim 上的程式碼編輯體驗更上一層樓嗎?今天要介紹的 99,是一個專為 Neovim 設計的 AI 輔助工具,它能幫你更有效率地撰寫、修改和除錯程式碼。這篇文章會用淺顯易懂的方式,帶你了解 99 的核心概念、安裝設定,以及如何透過它提升你的程式設計效率。
什麼是 99?
99 是一個基於 AI 的 Neovim 插件,它的主要目的是簡化你與 AI 模型互動的流程,讓你專注於程式碼本身。它可以根據你的指令,自動完成程式碼、修復錯誤、生成程式碼片段等等。 簡單來說,就像是 Neovim 裡的 AI 程式碼助手,能幫助你更快速、更智慧地編寫程式碼。
99 的核心概念
- 與 AI 模型互動: 99 會將你的請求發送給 AI 模型(例如 OpenAI),並根據模型的回答來生成或修改程式碼。
- 針對 Neovim 最佳化: 99 專為 Neovim 使用者設計,所以它能與 Neovim 完美整合,讓你在編輯程式碼時,就能直接使用 AI 輔助功能。
- 自定義規則: 你可以設定自己的規則,告訴 99 遇到特定情況時該怎麼做,讓 AI 輔助功能更符合你的需求。
- 完成功能: 99 提供方便的「完成」功能,讓你輸入
@符號後,就能從預先定義的技能清單中選擇,快速生成程式碼。
99 的優點
- 提升效率: 透過自動完成和程式碼生成,能讓你更快速地編寫程式碼。
- 減少錯誤: 99 可以幫助你發現和修復程式碼中的錯誤,提高程式碼的品質。
- 學習新知識: 可以透過 99 了解不同的程式碼風格和技巧,讓你更深入地了解程式設計。
- 客製化: 99 允許你自定義規則,使其更能符合你的工作流程。
快速上手:99 安裝與設定
- 安裝需求:
- opencode: 首先,你需要在你的系統上安裝並設定好 opencode。 這是 99 與 AI 模型互動的基礎。
- Neovim 與套件管理器: 99 是一個 Neovim 插件,所以你必須先安裝 Neovim,然後選擇一個你喜歡的套件管理器,例如 Lazy(官方文件使用),然後依照你的套件管理器的指示安裝 99。
- 在你的 Neovim 設定檔中加入以下配置 (使用 Lazy 作為例子):
{ "ThePrimeagen/99", config = function() local _99 = require("99") -- 針對除錯目的,將日誌記錄到檔案,方便追蹤。 local cwd = vim.uv.cwd() local basename = vim.fs.basename(cwd) _99.setup({ logger = { level = _99.DEBUG, path = "/tmp/" .. basename .. ".99.debug", print_on_error = true, }, -- 完成功能設定 (使用 cmp) completion = { source = "cmp", -- 使用 cmp 作為自動完成引擎 custom_rules = { -- 自定義規則路徑 "scratch/custom_rules/", -- 範例路徑 }, }, -- md_files 設定 (自動尋找與專案相關的 AGENT.md 檔案) md_files = { "AGENT.md", }, }) -- 設定快捷鍵 vim.keymap.set("n", "<leader>9f", function() -- <leader>9f: 填寫函數 _99.fill_in_function() end) vim.keymap.set("v", "<leader>9v", function() -- <leader>9v: 使用 visual 模式 _99.visual() end) vim.keymap.set("v", "<leader>9s", function() -- <leader>9s: 停止所有請求 _99.stop_all_requests() end) vim.keymap.set("n", "<leader>9fd", function() -- <leader>9fd: 使用自定義規則 _99.fill_in_function() end) end, },- logger: 設定日誌記錄,方便除錯。你可以設定日誌的等級(level)和儲存路徑(path)。
- completion: 設定完成功能,這裡使用了
cmp作為自動完成引擎。你也可以設定custom_rules,指定你自己的規則檔案路徑。 - md_files: 讓 99 自動尋找與專案相關的
AGENT.md檔案,以提供上下文資訊。 - 快捷鍵: 設定了一些常用的快捷鍵,方便你快速使用 99 的功能。例如,
<leader>9f用於填寫函數,<leader>9v用於在 visual 模式下使用,<leader>9s用於停止所有請求。
- 重新啟動 Neovim: 在完成設定後,重新啟動 Neovim,讓設定生效。
實戰演練:99 的常用功能
-
程式碼補全: 當你輸入程式碼時,99 會根據你的上下文,自動補全程式碼。 例如,你輸入
function,它可能會建議你補全函數的宣告。 -
使用
@符號觸發規則: 當你需要使用特定功能時,例如生成程式碼註解、修正錯誤等,你可以在程式碼中輸入@符號,然後選擇你需要的規則。-- 範例: 在註解中加入 debug 訊息 -- @debug -- 這個指令會根據你的 custom_rules 設定, -- 在程式碼中加入 debug 訊息 function my_function(x, y) -- ...你的程式碼... end - 填寫函數 (
<leader>9f): 當你在函數宣告中,不知道如何實作時,你可以使用<leader>9f。 99 會根據函數的名稱、參數和上下文,建議你函數的實作。 -
在 visual 模式下使用 (
<leader>9v): 選擇一段程式碼,然後按下<leader>9v。 99 會對你選擇的程式碼進行修改,例如修復錯誤、優化程式碼等。 -
停止所有請求 (
<leader>9s): 如果你不想讓 99 繼續處理你的請求,可以按下<leader>9s>來停止。
進階應用: 自定義你的技能 (SKILL.md)
99 最強大的地方在於你可以自定義規則,讓它更符合你的需求。 你可以建立自己的 .md 檔案,裡面定義了特定的行為,然後在程式碼中用 @ 符號來觸發這些行為。
- 建立自定義規則檔案: 建立一個
.md檔案,例如~/.rules/debug.md,裡面定義了你希望 99 執行的操作。# 規則名稱:debug ## 說明 在函數中加入 `print` 語句,方便除錯。 ## 動作 ```lua -- 在函數中加入 print 語句 local function add_debug_statements(code) -- 你的程式碼,用於加入 print 語句 local lines = vim.split(code, "\n") local new_lines = {} for i, line in ipairs(lines) do table.insert(new_lines, line) if string.find(line, "function") then table.insert(new_lines, "\tprint('DEBUG: entered function')") end end return table.concat(new_lines, "\n") end - 在設定檔中啟用自定義規則: 在你的 Neovim 設定檔中,將你的規則檔案的路徑加入到
custom_rules中。completion = { custom_rules = { "~/.rules/", -- 你的規則檔案所在的路徑 }, }, - 在程式碼中使用自定義規則: 在你的程式碼中,輸入
@debug。 99 會根據你的規則檔案,在你的程式碼中加入 debug 語句。
99 的一些限制與注意事項
- 仍處於早期階段: 99 仍在積極開發中,所以可能會有一些問題。 請隨時注意開發者的更新和改進。
- Prompt 的改進空間: 目前,99 使用的 prompt 仍有改進空間。 這意味著,生成的程式碼可能不是完美的,你可能需要稍作調整。
- 程式語言支援: 目前,99 主要支援 TypeScript 和 Lua。 未來可能會增加對更多程式語言的支援。
- Visual 模式: 在 visual 模式下,99 會傳送整個檔案,而不是只傳送選中的內容。
- 潛在的自動補全問題: 有時候,自動補全可能會導致一些問題,例如,程式碼重複等等。
錯誤排除指南
-
檢查日誌: 如果你遇到問題,請先檢查 99 的日誌。 你可以使用
:lua require("99").view_logs()來查看日誌,這能幫助你了解問題發生的原因。 如果你需要更詳細的除錯,可以開啟 DEBUG 等級的日誌。 -
確認 opencode 設定: 請確保你的 opencode 設定正確,且能正常運作。 這是 99 正常運作的基礎。
-
更新插件: 定期更新 99 插件,以獲取最新的修復和改進。
-
檢查你的規則檔案: 如果你使用了自定義規則,請仔細檢查你的規則檔案,確認語法是否正確,並且邏輯是否符合你的需求。
-
尋求協助: 如果你無法解決問題,可以在 GitHub 上提交 issue,或是參加開發者舉辦的 Twitch 直播討論。
總結: 99,讓你的 Neovim 更加智慧
99 是一個非常有潛力的 AI 程式碼輔助工具,它能幫助你更快速、更有效地編寫程式碼。雖然目前還處於早期開發階段,但它已經展現了強大的功能和潛力。 透過本篇文章的介紹,相信你已經對 99 有了一定的了解,並迫不及待想在你的 Neovim 中試用。 趕快安裝設定,體驗 99 帶來的便利吧!
最後,別忘了:
- 99 仍在積極開發中,隨時關注更新。
- 善用日誌,幫助你發現問題。
- 嘗試自定義規則,讓 99 更符合你的工作流程。
祝你在程式設計的道路上,越走越順利!
參考閱讀
https://github.comundefined