背景
C语言使用vim编写时,需要快速对函数进行说明头插入;文章来源地址https://uudwc.com/A/R6gx3
代码
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>
文章来源:https://uudwc.com/A/R6gx3