Vim - 快速插入C语言函数注释模板

背景

C语言使用vim编写时,需要快速对函数进行说明头插入;

代码

function! InsertCFunctionHeader()
    " 获取当前行内容
    let line = getline('.')

    " 匹配 C 函数定义
    let matched = matchlist(line, '^\s*\w\+ \+\(\w\+\)(\(.*\))')

    " 如果当前行不是函数定义,退出
    if len(matched) == 0
        echo "Not a function definition!"
        return
    endif

    " 获取函数名和参数列表
    let func_name = matched[1]
    let params = matched[2]

    let current_line_number = line('.')
    let current_line_content = getline('.')
    let write_line_number = current_line_number - 1

    " 插入注释头
    call setline(current_line_number, "")
    call setline(write_line_number, '/* ' . func_name)
    let write_line_number += 1
    call append(write_line_number, ' *')
    let write_line_number += 1
    call append(write_line_number, ' * Parameters:')

    let ii = 0

    " 解析并插入参数注释
    for param in split(params[1:-1], ',')
        let param_name = matchstr(param, '\w\+$')
        if len(param_name) > 0
            let write_line_number += 1
            call append(write_line_number, ' *   ' . param_name . ':')
        endif
    endfor

    let write_line_number += 1
    call append(write_line_number, ' * Returns:')
    let write_line_number += 1
    call append(write_line_number, ' *   ')
    let write_line_number += 1
    call append(write_line_number, ' */')
    let write_line_number += 1
    call append(write_line_number, '')
    let write_line_number += 1
    call append(write_line_number, current_line_content)
endfunction

" 将该函数绑定到一个快捷键,例如 <F5>
nnoremap <F5> :call InsertCFunctionHeader()<CR>

你可能感兴趣的:(vim,c语言,excel)