如何在Neovim中配置<F7>键按缓冲区总数创建inpN.txt文件
Neovim Lua配置:键快速创建递增命名的输入文本文件
实现代码
将以下代码添加到你的Neovim Lua配置文件(如init.lua)中:
-- 映射<F7>,仅在文本文件中创建递增序号的输入文件 vim.keymap.set('n', '<F7>', function() -- 校验当前文件为.txt后缀 local current_buf_name = vim.api.nvim_buf_get_name(vim.api.nvim_get_current_buf()) if not current_buf_name:match('%.txt$') then vim.notify('仅支持在文本文件中使用此功能', vim.log.levels.WARN) return end -- 统计已存在的inpN.txt缓冲区最大序号 local max_inp_num = 0 for _, buf in ipairs(vim.api.nvim_list_bufs()) do if vim.api.nvim_buf_is_loaded(buf) then local buf_name = vim.api.nvim_buf_get_name(buf) local num_match = buf_name:match('inp(%d+)%.txt$') if num_match then local num = tonumber(num_match) if num > max_inp_num then max_inp_num = num end end end end -- 生成新文件名并水平拆分打开 local new_file = string.format('inp%d.txt', max_inp_num + 1) vim.cmd('split ' .. new_file) end, { desc = '水平拆分并创建递增命名的输入文本文件' })
代码说明
- 触发条件校验:仅当当前打开的文件是
.txt后缀时才执行操作,避免在左侧tmux pane的cpp文件中误触。 - 序号计算逻辑:遍历所有已加载的缓冲区,匹配
inpN.txt格式的文件,取最大的序号值,确保新文件序号是下一个递增数字(比如已有inp1.txt、inp2.txt,则生成inp3.txt)。 - 窗口操作:使用
split命令水平拆分当前窗口并打开新文件,文件不存在时Neovim会自动创建。
适配tmux场景的小提示
- 确保右侧tmux pane的Neovim工作目录和左侧cpp文件目录一致,这样生成的
inpN.txt会直接保存在代码所在目录,方便程序读取。 - 如果需要在右侧pane内垂直拆分窗口,只需将代码中的
split替换为vsplit即可。
内容的提问来源于stack exchange,提问作者syedtamal
相关产品推荐
相关产品推荐

