VimLM: Інтеграція допомоги ШІ в Vim

В основі своїй, великі мовні моделі (LLMs) генерують фрагменти тексту — фрагменти коду, пояснення, рефакторинги — які розробники повинні оцінювати та інтегрувати в свої проекти.

Vim, з його ефективними можливостями маніпулювання текстом і навігації, забезпечує ідеальне середовище для використання потужності LLM. Його модальний дизайн перетворює редагування на плавний, керований клавіатурою діалог: витягувати фрагменти в регістри для подальшого використання, стрибати між файлами за допомогою міток або переписувати блоки з точністю — все це, зберігаючи неперервну концентрацію.

VimLM має на меті безшовно інтегрувати LLM у цей робочий процес.

Початок роботи

Встановлення

Встановіть VimLM за допомогою простого pip-командного рядка:

$ pip install vimlm

Для більш детальної інформації та останніх оновлень відвідайте репозиторій GitHub.

Запуск

Запустіть VimLM зі свого термінала:

$ vimlm

pic

Ви побачите розділений інтерфейс: панель редагування зліва та вікно відповіді LLM справа. У правому вікні з’являться результати роботи AI-помічника.

Основний робочий процес

Запит до AI

Щоб задати запит LLM, натисніть ``

У командному рядку з’явиться “VimLM:” — готовий для вашого вводу. Напишіть свій запит і натисніть Enter.

pic

Наприклад, попросіть допомогу у створенні розширення для Chrome:

Create a Chrome Extension for copying selected content from webpages

pic

pic

Відповідь передається асинхронно до розділеного вікна, дозволяючи вам продовжувати редагування в іншому вікні.

Щоб зосередитися тільки на згенерованому контенті, використовуйте `` для закриття порожнього вікна і максимізації вікна відповіді:

pic

Наступні запитання

Коли вам потрібно вдосконалити або налаштувати відповідь AI, натисніть `` для того, щоб зробити наступний запит.
Попередній контекст зберігається.

Наприклад, якщо ви помітили, що згенерований код використовує застарілу версію маніфесту:

Use manifest V3 instead

pic

Розгортання згенерованого коду

Щоб витягнути блоки коду з відповіді та зберегти їх як окремі файли, використовуйте команду !deploy у подальшому запиті ``:

pic

pic

Застосування пропозицій до вашого коду

Відкрийте файл, який ви хочете редагувати: :e popup.js (або vimlm popup.js у терміналі)

pic

pic

Зробіть вибір і натисніть `` та задайте конкретне питання про вибраний код:

how to get rid of html tags from item.content

pic

pic

Коли ви побачите рішення, яке вам подобається, натисніть `` для застосування запропонованого виправлення коду безпосередньо до вашого вибору.

pic

pic

gg=G автоматично відступає увесь файл:

pic

Якщо запропоновані зміни коду не відповідають вашому початковому вибору, натисніть gv, щоб повернутися до попереднього вибору, а потім використовуйте o, щоб перемикатися між початковою та кінцевою точкою для коригування за потреби.

Додавання контексту

VimLM за замовчуванням працює з багатошаровим контекстом — ваш активний вибір і весь поточний файл автоматично додаються разом із запитами. Але як зазначив творець Vim Брам Муленар, файл рідко існує сам по собі. Ви можете використовувати !include, щоб додати більше контексту до запиту:

AJAX-ify this app !include ~/scrap/hypermedia-applications.summ.md

Це можна використовувати для автоматизації рутинних частин розробки, таких як перевірка змін для повідомлення про коміт:

Git commit message for the code changes !include $(git diff popup.js)

pic

Або для генерації змін у журналі після оновлення версії:

Summarize the changes !include $(git log - oneline -n 50)

Ви також можете використовувати фільтрацію та зворотній зв'язок, щоб зосередитися на конкретних шаблонах, як у терміналі:

Diagnose server errors !include $(grep -r "500 Internal Error" ./fuzz | head -n 5)

Ex Commands

Для часто використовуваних робочих процесів LLM, VimLM надає команду :VimLM, що дозволяє створювати та зберігати повторно використовувані шаблони запитів. Ось кілька прикладів:

" Debug CI failures using error logs  
:VimLM Fix Dockerfile !include .gitlab-ci.yml !include $(tail -n 20 ci.log)  
" Generate unit tests for selected functions and save to test/  
:VimLM Write pytest tests for this !include ./src !deploy ./test  
" Add docstrings to all Python functions in file  
:VimLM Add Google-style docstrings !include % !continue 4000

Зміна моделі LLM

За замовчуванням VimLM використовує неконтрольовану модель Llama 3.2 3B з лімітом токенів 2000. Ви можете переключитися на будь-яку модель, сумісну з MLX:

"LLM_MODEL": "mlx-community/DeepSeek-R1-Distill-Qwen-7B-4bit",  
"NUM_TOKEN": 32768

Збережіть у ~/vimlm/cfg.json і перезапустіть VimLM.

Висновки

Ефективність Vim і можливості LLM — це ідеальна комбінація. VimLM заповнює цей пробіл, надаючи вам AI-помічника, не залишаючи улюблений редактор. Незалежно від того, чи пишете ви код, виправляєте помилки або досліджуєте нові фреймворки, VimLM допомагає вам залишатися в потоці, використовуючи потужність AI.

Перекладено з: VimLM: Bringing AI Assistance to Vim