Vim - 快速插入C语言函数注释模板
背景
C语言使用vim编写时,需要快速对函数进行说明头插入;
代码
function! InsertCFunctionHeader()" 获取当前行内容let line = getline('.')" 匹配 C 函数定义let matched = matchlist(line, '^\s*\w\+ \+\(\w\+\)(\(.*\))')" 如果当前行不是函数定义,退出if len(matched) == 0echo "Not a function definition!"returnendif" 获取函数名和参数列表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 += 1call append(write_line_number, ' *')let write_line_number += 1call 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) > 0let write_line_number += 1call append(write_line_number, ' * ' . param_name . ':')endifendforlet write_line_number += 1call append(write_line_number, ' * Returns:')let write_line_number += 1call append(write_line_number, ' * ')let write_line_number += 1call append(write_line_number, ' */')let write_line_number += 1call append(write_line_number, '')let write_line_number += 1call append(write_line_number, current_line_content)
endfunction" 将该函数绑定到一个快捷键,例如 <F5>
nnoremap <F5> :call InsertCFunctionHeader()<CR>