Интегрируйте шпаргалку в Neovim без каких-либо плагинов.

Я видел видео, в котором показано, как интегрировать шпаргалку в Neovim, используя комбинацию Tmux, fzf и сценариев оболочки. Раньше я использовал alacrity + Tmux и отказался от этого рабочего процесса после того, как начал использовать wezterm, который также является кросс-платформенным эмулятором терминала с ускорением на GPU и мультиплексором, реализованным в Rust.



В любом случае, мне нужно простое решение для интеграции шпаргалки в рабочий процесс разработки. Я пытался использовать cheat.sh-vim , но, как я уже говорил, мне просто нужно простое решение. Также доступен другой плагин, но мне не нужен причудливый интерфейс.

В конечном итоге это довольно легко реализовать всего менее чем в 50 строках кода Lua.

Вы можете увидеть это в действии ниже. Теперь я могу легко искать фрагменты кода, документацию или изучать что-то на определенном языке программирования.

А ниже приведен код, который вы можете использовать и улучшить, чтобы он соответствовал вашему рабочему процессу разработки.

local M = {}
function M.cheatsheet()
local input = vim.fn.input("cheatsheet input: ", "", "file")
local cmd = ""
if input == "" then
return
elseif input == "h" then
cmd = ""
else
local lang = ""
local search = ""
local delimiter = " "
for w in (input .. delimiter):gmatch("(.-)" .. delimiter) do
if lang == "" then
lang = w
else
if search == "" then
search = w
else
search = search .. "+" .. w
end
end
end
cmd = lang
if search ~= "" then
cmd = cmd .. "/" .. search
end
end
M.cheatsheet_cmd(cmd)
end
function M.cheatsheet_cmd(cmd)
vim.api.nvim_exec("enew", true)
vim.api.nvim_exec("terminal", true)
local buf = vim.api.nvim_get_current_buf()
vim.api.nvim_buf_set_name(buf, "cheatsheet-" .. buf)
local chan_id = vim.b.terminal_job_id
local cht_cmd = "curl cht.sh/" .. cmd
vim.api.nvim_chan_send(chan_id, cht_cmd .. "\n")
vim.cmd [[stopinsert]]
end
return M
view raw cheatsheet.lua hosted with ❤ by GitHub

Предполагая, что вы поместили этот файл в папку lua, запустите :lua require(“cheatsheet”).cheatsheet() и он должен работать.

Сценарий довольно прост.

  • Запросить ввод пользователя. Бланк для возврата и h для помощи.
  • Отформатируйте ввод в соответствии с требованиями.
  • Создайте новый терминальный буфер. Вы можете изменить его в соответствии с вашими потребностями, например. с помощью разделенного окна или вкладки.
  • Отправьте команду в буфер терминала, запустите ее и выйдите из режима терминала.
  • Теперь курсор должен быть в верхней части окна, и я могу легко читать и дергать вывод.

Также ознакомьтесь с этими статьями!