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

如何在Vim中通过命令为新建文件选择不同的模板

实现Vim C模板按需选择的配置方案

第一步:移除原有自动加载模板的配置

你原有配置会在所有新建.c文件时自动加载默认模板,先删除或注释掉这段配置里的对应规则:

原有配置中的 autocmd BufNewFile *.c 0r ~/.vim/templates/skeleton.c 行直接删除或注释即可,保留augroup框架不会影响后续配置。


方案一:为常用模板定义独立命令

适合模板数量少、使用频率高的场景,直接在vimrc中添加如下配置,为每个模板绑定自定义命令:

" 按需定义不同C模板的调用命令,命令名可以根据自己习惯修改
command! CNormal 0r ~/.vim/templates/skeleton.c
command! CKernel 0r ~/.vim/templates/skeleton_kernel.c
command! CUtils 0r ~/.vim/templates/skeleton_utils.c

使用方式:新建.c文件后,在普通模式输入对应命令回车即可加载模板,比如输入:CKernel就会导入内核开发用的C模板。

方案二:交互式菜单选择模板

适合模板数量较多的场景,无需记忆多个命令,通过选择列表调用模板,在vimrc中添加如下配置:

function! LoadCFileTemplate()
    " 按自己的实际模板数量和名称修改列表内容
    let template_list = [
        \ "请选择要使用的C模板:",
        \ "1. 默认通用模板",
        \ "2. 内核模块开发模板",
        \ "3. 命令行工具模板",
        \ "4. GUI应用开发模板",
        \ "5. 不使用模板"
        \ ]
    let sel = inputlist(template_list)
    if sel == 1
        0r ~/.vim/templates/skeleton.c
    elseif sel == 2
        0r ~/.vim/templates/skeleton_kernel.c
    elseif sel == 3
        0r ~/.vim/templates/skeleton_utils.c
    elseif sel == 4
        0r ~/.vim/templates/skeleton_gui.c
    endif
endfunction
" 定义调用选择菜单的命令
command! LoadCTpl call LoadCFileTemplate()
" 可选:给C文件绑定快捷键触发菜单,默认<leader>是\键,按\ct即可调出
autocmd FileType c nnoremap <buffer> <leader>ct :call LoadCFileTemplate()<CR>

使用方式:

  • 新建.c文件后输入:LoadCTpl回车即可调出选择菜单,输入对应数字回车即可加载对应模板
  • 也可以直接按\ct(默认leader键为\)快速调出选择菜单

可选进阶:新建.c文件时自动弹出选择菜单

如果不想每次手动调用命令,可以配置新建.c文件时自动触发模板选择,添加如下配置即可:

if has("autocmd")
    augroup templates
        autocmd!
        autocmd BufNewFile *.c call LoadCFileTemplate()
    augroup END
endif

新建.c文件时会自动弹出选择列表,选择对应模板即可,选最后一项“不使用模板”就会创建空白文件。


内容的提问来源于stack exchange,提问作者shino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:45:01