Найти в Дзене
Vim

NeoVim как IDE для C++ ( часть 6, перемещение по тексту, нейросеть)

Давайте подключим еще один очень приятный плагин - попрыгунчик
leap.nvim. Само название говорит за себя. Цель этого плагина позволить вам переместиться в любой конец экрана за 4 нажатия. Ссылка: https://github.com/ggandor/leap.nvim
Демо
По картинке может не до конца ясно что происходит. Поэтому поясню.
1) Вы нажимаете <s> что бы активировать режим leap.nvim это поиск вперед (все что ниже). Для поиска назад (все что выше) <S>
2) нажимаете первые 2 символа нужного слова
3) Если слово одно, то мы перейдем к этому слову. Если слов несколько, то мы кликаем на букву символ который светиться в нужном нам слове.
Например мне надо переместиться на слово key
на первое вхождение: жмем Enter
на второе вхождение: Жмем s
на третье вхождение: Жмем f Установка плагина:
nvim ~/.config/nvim/lua/user/plugins/plugins.lua дописываем внутри блока rerurn {} {
-- плагин для скакания по тексту с помощью s
"ggandor/leap.nvim",
enabled = true,
keys = {
{ "s", mode = { "n", "x", "o"
Оглавление


Leap.nvim

Давайте подключим еще один очень приятный плагин - попрыгунчик
leap.nvim. Само название говорит за себя. Цель этого плагина позволить вам переместиться в любой конец экрана за 4 нажатия.

GitHub - ggandor/leap.nvim: Neovim's answer to the mouse 🦘

Ссылка: https://github.com/ggandor/leap.nvim
Демо

По картинке может не до конца ясно что происходит. Поэтому поясню.
1) Вы нажимаете <
s> что бы активировать режим leap.nvim это поиск вперед (все что ниже). Для поиска назад (все что выше) <S>
2) нажимаете первые
2 символа нужного слова
3) Если слово одно, то мы перейдем к этому слову. Если слов несколько, то мы кликаем на букву символ который светиться в нужном нам слове.
Например мне надо переместиться на слово
key
на первое вхождение: жмем
Enter
на второе вхождение: Жмем
s
на третье вхождение: Жмем
f

-2

Установка плагина:

nvim ~/.config/nvim/lua/user/plugins/plugins.lua

дописываем внутри блока rerurn {}

{
-- плагин для скакания по тексту с помощью s
"ggandor/leap.nvim",
enabled = true,
keys = {
{ "s", mode = { "n", "x", "o" }, desc = "Leap forward to" },
{ "S", mode = { "n", "x", "o" }, desc = "Leap backward to" },
},
config = function(_, opts)
local leap = require("leap")
for k, v in pairs(opts) do
leap.opts[k] = v
end
leap.add_default_mappings(true)
vim.keymap.del({ "x", "o" }, "x")
vim.keymap.del({ "x", "o" }, "X")
end,
},

Нейросеть codeium

Codeium · Free AI Code Completion & Chat

ссылка: https://codeium.com/

GitHub - Exafunction/codeium.vim: Free, ultrafast Copilot alternative for Vim and Neovim

ссылка https://github.com/Exafunction/codeium.vim

Лучший способ с ней взаимодействовать с нею.
1) вначале написать комментарий, что вы планируете реализовать.
2) начать реализовывать нужный вам функционал, и когда вам нужна помощь.
3) включить нейросеть что бы она дала нам подсказку... куда двигаться.
Я бы это нейронку сравнил бы с коллегой, который иногда может ляпнуть что то полезное. В постоянно включенном состоянии это адище так как он постоянно пытается угадать что вы хотите делать. Поэтому рекомендую его выключить, и в некоторых случаях его включать. Хотя как я понимаю он учится на вашем коде, и возможно через пару дней он будет работать с вами на одной волне. Но я его использую иногда как help.

Шаг 1

nvim ~/.config/nvim/lua/user/plugins/plugins.lua

дописываем внутри блока rerurn {}

{
'Exafunction/codeium.vim',
event = 'BufEnter',
config = function ()
},

выходим из NeoVim и выполняем в терминале следующее:
Во второй сылке что я дал выше
https://github.com/Exafunction/codeium.vim на гитхабе находим информацию как устанавливать его на NeoVim (даю эту информацию на тот случай) Если спустя время не будут работать прямые ссылки. И тогда вы сможете глянуть на актуальные.

Шаг 2

-3

git clone https://github.com/Exafunction/codeium.vim ~/.config/nvim/pack/Exafunction/start/codeium.vim

Шаг 3

Если мы сейчас запустим NeoVim перейдем в режим редактирования. То увидим что нам надо получить API. Делаем то что нам говорит подсказка

-4
:Codeium Auth

Он скажет что нам надо перейти по ссылке:

-5

Зажимаем <ctrl> и кликаем по ссылке.
И попадаем на окно

-6

И упс... Ключа то и нету.

Все дело в том что мы скопировали не полностью ссылку а только верхнюю ее часть, та что снизу не скопировалась.
Поэтому копируем всю ссылку целиком. Зажимаем <shift> и копируем теперь полностью нашу ссылку <ctrl+shift +c> вставляем ее в браузер <ctrl + shift +v>

-7

И теперь мы получили наш ключ

-8

Шаг 4

1) копируем ключ с сайта. И в NeoVim вводим
2) :
Codeium Auth
3) вставляем наш ключ

-9

Шаг 5

Перезаходим в NeoVim пишем комментарий что мы хотим сделать. И уже на основе нашего комментарий нейронка будет нам подсказывать. Комментарии могут быть на русском языке.
<alt ]> <alt [> с помощью этих клавиш можно листать различные варианты предложений кода.
<tab> принять предложенный код. Он будет вставлен в наш документ.

Шаг 6

Отключаем автозагрузку нейронки, и используем ее только когда это необходимо. И можем настроить клавиши под себя. Создаем файл с настройками для AI Codium

/.config/nvim/lua/user/plugins/configs/codium.lua

добавляем следующее содержимое.

vim.g.codeium_enabled = false -- по умолчаню AI отключен

vim.keymap.set('i', '<c-g>', function () return vim.fn['codeium#Accept']() end, { expr = true, silent = true }) -- принять предложение
vim.keymap.set('i', '<m-k>', function () return vim.fn['codeium#CycleCompletions'](1) end, { expr = true, silent = true }) -- следующее предложение
vim.keymap.set('i', '<m-j>', function () return vim.fn['codeium#CycleCompletions'](-1) end, { expr = true, silent = true }) -- предыдущее предложение
vim.keymap.set('i', '<c-x>', function () return vim.fn['codeium#Clear']() end, { expr = true, silent = true }) -- очистить предложения

-10

Напоминаю, что бы так отформатировать правый столбец, выделяем блок и:
ga <ctrl x> { <enter>
Ранее я описывал как установить этот плагин

Дальше наш вновь созданный файл прописываем тут:

nvim ~/.config/nvim/lua/user/configs_init.lua
require ("user.plugins.configs.codium") -- нейросеть.

-11

Опять таки насчет как отформатировать тут комментарии. Выделяем нужные строки (в нормальном режиме (<esc>) нажимаем V перейти в режим выделения и jk выбираем строки) далее:
ga<ctrl x> -- <enter>

Можно сделать форматирование закрывающихся скобок.
ga<ctrl x> ) <enter>

-12

Если что у Codium есть канал на Discord. Там если будут вопросы можно их задать. Народ там отзывчивый довольно быстро ответят.
помощь:
:help Codeium

назад NeoVim как IDE для C++ ( часть 5, поиск, отступы, подсветка с++)
далее
Сборка и настройка gdb