This Vim plugin brings the power of OpenAI's ChatGPT API into your Vim editor, enabling you to request code explanations or improvements directly within Vim. With this plugin, you can effortlessly highlight code snippets and ask ChatGPT to explain, review, or rewrite them, with the option to include additional context for better results.
1) Vim with Python3 support. 1) A ChatGPT API key from OpenAI.
Add your ChatGPT API key to your environment: https://platform.openai.com/account/api-keys
To set up your environment, you can export the OPENAI_API_KEY variable in your terminal:
export OPENAI_API_KEY='your-api-key-here'
And more useful env is proxy:
export OPENAI_PROXY="http://localhost:1087" # with proxy
# or
export OPENAI_API_BASE='https://openai.xxx.cloud/v1' # refer: https://github.com/egoist/openai-proxy
Alternatively, you can add the following lines to your .vimrc
file to set up the chatgpt plugin for Vim:
let g:openai_api_key='your-api-key-here'
To install the chatgpt plugin, simply copy the chatgpt.vim
file to your Vim plugin directory. If you're using vim-pathogen, you can simply add the chatgpt
directory to your bundle
directory.
Finally, to install the openai
Python module, you can use pip:
pip install openai
Detailed Direction For Installation
Additionally, for Azure gpt user:
let g:api_type = 'azure'
let g:chat_gpt_key = 'your_azure_chatgpt_api'
let g:azure_endpoint = 'your_azure_endpoint'
let g:azure_deployment = 'your_azure_deployment'
let g:azure_api_version = '2023-03-15-preview'
In your .vimrc
file you set the following options
let g:chat_gpt_max_tokens=2000
let g:chat_gpt_model='gpt-4o'
let g:chat_gpt_session_mode=0
let g:chat_gpt_temperature = 0.7
let g:chat_gpt_lang = 'Chinese'
let g:chat_gpt_split_direction = 'vertical'
let g:split_ratio=4
let g:chat_gpt_stop = ' '
The plugin provides several commands to interact with ChatGPT:
Ask
: Ask a questionRewrite
: Ask the model to rewrite a code snippet more idiomaticallyReview
: Request a code reviewDocument
: Request documentation for a code snippetExplain
: Ask the model to explain how a code snippet worksTest
: Ask the model to write a test for a code snippetFix
: Ask the model to fix an error in a code snippetEach command takes a context as an argument, which can be any text describing the problem or question more specifically.
To ask the model to review a code snippet, visually select the code and execute the Review
command:
:'<,'>Review 'Can you review this code for me?'
The model's response will be displayed in a new buffer.
You can also use GenerateCommit
command to generate a commit message for the current buffer.
To introduce custom personas into the system context, simply define them in your vimrc
file:
let g:chat_gpt_custom_persona = {'neptune': 'You are an expert in all things Graph databases'}
With the custom persona defined, you can switch to it using the following command:
:GptBe neptune
If you try to switch to a non-existent persona, the plugin will default to the preconfigured default
persona.
You can also set a persona to be loaded by default when Vim starts, by setting it in your vimrc
:
let g:chat_persona='neptune'
You can add custom prompt templates using the chat_gpt_custom_prompts
variable. This should be a dictionary mapping prompt keys to prompt templates.
For example, to add a 'debug' prompt, you could do:
let g:chat_gpt_custom_prompts = {'debug': 'Can you help me debug this code?'}
Afterwards, you can use the Debug
command like any other command:
:'<,'>Debug 'I am encountering an issue where...'
This plugin exposes a binding to open a menu for options on a visual selecition. You can map it like this:
vmap <silent> <leader>0 <Plug>(chatgpt-menu)
1) Enter visual mode by pressing V.
1) Select the lines of code you want to explain, review, or rewrite.
1) Type :Explain
, :Review
, or :Rewrite
, :Fix
, :Test
and press Enter.
This plugin is not affiliated with or endorsed by OpenAI. You are responsible for managing your API usage and any associated costs when using this plugin.