"我的第一个vim function,
" author: hjjdebug
" date: 2012/07/27 周五
" 功能: MyNl
" 描述,选中一块区域,给该区域内容加上行号。
" 编写,调试,辛苦良多,感受良多, 毕竟又是一片新的编程天地
function! NumberLines() range
let line=a:firstline
let seq=1
while (line <= a:lastline)
call Debug("line = " . line)
let strline=getline(line)
call setline(line,seq.". ".strline)
let seq=seq + 1
let line=line + 1
endwhile
endfun
将上个函数稍加修改,可以改为显示函数中行号,并以msg 方式显示出来。同时将内容copy 到无名寄存器
fun! MyNum() range
let l=a:firstline
let n=0
let str=""
while(l <= a:lastline)
let strline=getline(l)
let str=str.n." ".strline."\n"
let l+=1
let n+=1
endw
echo str
call setreg('"',str,"l")
endf
vim 的语句像一个没有断奶的孩子,每条语句必须有关键词引导或者是命令,
函数是不能单独成一行的,构不成语句,应加关键词call 调用。
函数语句与c 语法类似, 不支持类及方法。 下面是一个关于数组的操作。
fun! MyArray()
let arr1=[[2,3],[3,8],[5,4]]
let arr2=[]
for i in arr1
call add(arr2,[i[1],i[0]])
endfor
call sort(arr2)
echo arr2
endfun
1. 你需要了解怎样加载脚本函数,
source 命令, 加载整个文件. 函数名加!, 重新加载
2. 怎样查询自定义函数(过滤查询)
function
function /<函数名> (过滤查询)
function /<部分函数名> (过滤查询)
3. 怎样调用自己的函数。
call <function_name>
4. 调试函数 set verbose=15
5. 进入调试模式,添加断点: 例如
:breakadd func MyNum
你可以把vim 脚本copy 到一个寄存器中例如copy到无名寄存器,然后执行这个寄存器例如, :@"