Note

最近Cursorを巷でよく見かける。 Nvimで対抗すべくavante.nvimというCursorライクに操作できるプラグインを導入する

導入

以下のReadmeを参考に導入を進める。 GitHub - yetone/avante.nvim: Use your Neovim like using Cursor AI IDE!

ReadMEに記載されている以下の内容をそのままNvimのプラグインフォルダへ。

{
  "yetone/avante.nvim",
  event = "VeryLazy",
  lazy = false,
  version = false, -- set this to "*" if you want to always pull the latest change, false to update on release
  opts = {
    -- add any opts here
  },
  -- if you want to build from source then do `make BUILD_FROM_SOURCE=true`
  build = "make",
  -- build = "powershell -ExecutionPolicy Bypass -File Build.ps1 -BuildFromSource false" -- for windows
  dependencies = {
    "stevearc/dressing.nvim",
    "nvim-lua/plenary.nvim",
    "MunifTanjim/nui.nvim",
    --- The below dependencies are optional,
    "hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
    "nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
    "zbirenbaum/copilot.lua", -- for providers='copilot'
    {
      -- support for image pasting
      "HakonHarnes/img-clip.nvim",
      event = "VeryLazy",
      opts = {
        -- recommended settings
        default = {
          embed_image_as_base64 = false,
          prompt_for_file_name = false,
          drag_and_drop = {
            insert_mode = true,
          },
          -- required for Windows users
          use_absolute_path = true,
        },
      },
    },
    {
      -- Make sure to set this up properly if you have lazy=true
      'MeanderingProgrammer/render-markdown.nvim',
      opts = {
        file_types = { "markdown", "Avante" },
      },
      ft = { "markdown", "Avante" },
    },
  },
}

APIはOpenAIのものとClaudeが利用できるが、デフォルトではClaudeが利用されている。 → Claudeのモデルの方が精度が良いらしい。

deepseekを利用

ClaudeのAPIKeyは発行しておらず、また金額も増しそうなためdeepseekを使いたなとissueを探してたところ以下で対応可能とのこと。 Add DeepSeek Provider Support by Plastikov · Pull Request #1038 · yetone/avante.nvim · GitHub

deepseekのAPIはOpenAIのものと変わらないのでエンドポイント諸々をdeepseekのものに変更する形で対応できるっぽい。

以下の内容をoptsに記載する。

  opts = {
    provider = "deepseek",
    auto_suggestions_provider = "deepseek",
    vendors = {
      deepseek = {
        __inherited_from = "openai",
        api_key_name = "DEEPSEEK_API_KEY",
        endpoint = "https://api.deepseek.com/v1",
        model = "deepseek-chat",
        timeout = 30000,
        temperature = 0,
      },
    },
 

Linuxの環境変数を設定する。

export DEEP_SEEK_API=DEEPSEEKのAPIKEY

追記

公式の推奨通りclaude 3.5 sonnetにモデルを変更したところ開発者体験が向上した。 deepseekのモデルより数段精度が高そう。