-- === -- === 运行代码 -- === -- 定义一个映射表,key 是文件类型(或包含多个类型的 table),value 是要绑定的命令 -- 可以通过`echo &filetype`或者`lua= vim.bo.filetype`或者`lua print(vim.bo.filetype)`来获取当前打开文件的文件类型 local keymaps = { [{ "rust", "python", }] = { cmd = ":wall:RunCode", desc = "Save and Run Code" }, markdown = { cmd = ":PeekClose:PeekOpen", desc = "Reload Markdown Preview" }, dart = { cmd = ":wall:Telescope flutter commands", desc = "Save and Open Flutter Commands" }, go = { cmd = ":wall:set splitbelow:sp:term go run %", desc = "Save and Run Go file" }, } -- 创建自动命令组 local ft_group = vim.api.nvim_create_augroup("FileTypeKeymaps", { clear = true }) -- 遍历上面的表,为每个条目创建自动命令 for filetype, mapping in pairs(keymaps) do vim.api.nvim_create_autocmd("FileType", { pattern = filetype, group = ft_group, callback = function(args) vim.keymap.set("n", "r", mapping.cmd, { noremap = true, silent = true, buffer = args.buf, desc = mapping.desc, }) end, }) end return { "CRAG666/code_runner.nvim", dependencies = {}, config = function() require("code_runner").setup({ -- project = { -- ["~/sixsixsix"] = { -- name = "sixsixsix", -- description = "六爻网页排盘", -- command = "cargo run --release" -- }, -- }, filetype = { python = "uv run $fileName", rust = { "cargo run --release", -- "cd $dir &&", -- "rustc $fileName &&", -- "$dir/$fileNameWithoutExt", }, -- typescript = "deno run", -- java = { -- "cd $dir &&", -- "javac $fileName &&", -- "java $fileNameWithoutExt", -- }, -- c = function(...) -- c_base = { -- "cd $dir &&", -- "gcc $fileName -o", -- "/tmp/$fileNameWithoutExt", -- } -- local c_exec = { -- "&& /tmp/$fileNameWithoutExt &&", -- "rm /tmp/$fileNameWithoutExt", -- } -- vim.ui.input({ prompt = "Add more args:" }, function(input) -- c_base[4] = input -- vim.print(vim.tbl_extend("force", c_base, c_exec)) -- require("code_runner.commands").run_from_fn(vim.list_extend(c_base, c_exec)) -- end) -- end, }, }) end, }