You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:16:09