Skip to content

Chatblade integration for Neovim

Notifications You must be signed in to change notification settings

cmpadden/llm.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

llm.nvim banner

Leverage llm, a CLI utility and Python library for interacting with Large Language Models, from your Neovim editor.

Setup

Prerequisites

  1. Install the llm CLI
  2. Set the API key for the LLM provider of your choice

Installation & Configuration

-- lazy.nvim
{
  "cmpadden/llm.nvim",
  keys = {
    { "<leader>x", ":LLM<cr>", mode = "v" },
  },
  cmd = {
    "LLM",
  },
  opts = {
    -- `llm` flag configuration parameters
    model             = "claude-3.5-haiku",  -- TEXT            Model to use
    system            = nil,                 -- TEXT            System prompt to use
    continue          = nil,                 --                 Continue the most recent conversation.
    conversation      = nil,                 -- TEXT            Continue the conversation with the given ID.
    template          = nil,                 -- TEXT            Template to use
    param             = nil,                 -- <TEXT TEXT>...  Parameters for template
    option            = nil,                 -- <TEXT TEXT>...  key/value options for the model

    -- nvim-specific configuration parameters
    insert_as_comment = true                 -- BOOL            Insert the prompt response as a comment
  }
}

Usage

Bindings

Select text, and send it to LLM with your key binding of choice. For the example of <leader>x, you can visually select a line or paragraph, send it to LLM, and the response will be inserted below your cursor.

vip<leader>x

Commands

The following user commands have been made available. This allows you to handle sessions so that you can send snippets to LLM, and ask follow-up questions with persisted context.

Command Parameters Description
LLM string? Prompt LLM with visual selection and/or an additional query

Motivation

If all you wish to do is to pass text to llm from your Neovim session, then you may be better off defining a key binding like so:

vim.keymap.set("v", "<leader>x", ':!LLM -e -r<CR>')

However, llm.nvim intends to offer some quality of life improvements over such a bindings.