我想要實現的是在我的vimrc中創建一個簡單的函數,該函數應該在基於作爲第一行提供的函數定義的matlab文件中添加幫助commnent-block。我曾經發現過類似的功能,但我無法再找到它,而其他顯示出來的解決方案使用外部語言如python和perl。我想學習如何編寫自己的函數,同時保持vimrc清潔。Vim腳本和Matlab頭文件模板
功能應該簡單地更換一些佔位符我保存在一個模板,看起來像這些:
function [a,b] = func(c,d)
% a
% INPUTS:
% <+INPUTS+>
% OUTPUTS:
% <+OUTPUTS+>
的基本思路是來圖,MH到MatlabHeader用來解析第一線功能,搜索可能的輸入和輸出變量,將它們保存在兩個單獨的列表中並替換正確的佔位符。
我被困在理解如何添加創建一個預格式化的字符串,應該取代< ++>東西。
這裏是我的代碼:
function! MatlabHeader()
let lista = split(getline("."))
let outputList = matchstr(lista[1],'\(\w,\?\)\+')
let outputs = split(outputList,",")
let length = len(lista)
let inputList = matchstr(lista[length-1],'(\(\w,\?\)\+)')
let inputList = substitute(inputList,"(","","")
let inputList = substitute(inputList,")","","")
let inputs = split(inputList,",")
:%s/<+INPUTS+>/\=inputs/g
:%s/<+OUTPUTS+>/\=outputs/g
endfunction
現在,這「工作」相當精細的一部分的事實,在每個列表中的第二個輸入/輸出的元素會被放置在新行而每一次嘗試的開始添加一個製表符或空格被完全忽略。
非常感謝您的幫助。
嗨Ingo非常感謝你的回答,確實有效。我會按照您的建議查看片段!我不能投你的答案,我太新手了;( –