Интегрируйте шпаргалку в 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 |
Предполагая, что вы поместили этот файл в папку lua
, запустите :lua require(“cheatsheet”).cheatsheet()
и он должен работать.
Сценарий довольно прост.
- Запросить ввод пользователя. Бланк для возврата и
h
для помощи. - Отформатируйте ввод в соответствии с требованиями.
- Создайте новый терминальный буфер. Вы можете изменить его в соответствии с вашими потребностями, например. с помощью разделенного окна или вкладки.
- Отправьте команду в буфер терминала, запустите ее и выйдите из режима терминала.
- Теперь курсор должен быть в верхней части окна, и я могу легко читать и дергать вывод.
Также ознакомьтесь с этими статьями!