分页: 1 / 1

我实在搞不通为啥vim的这个函数有错误

发表于 : 2010-12-16 23:23
fanhe

代码: 全选

function Addcs(name)
	let prePath = system("dirname ". a:name)
	execute "echo \"".a:name.'"'
	execute "echo \"".prePath.'"'
	execute "cs add " . a:name . " " . prePath
"	execute "cs add " . a:name
endf
command -complete=file -nargs=1 Addcs :call Addcs("<args>")
然后我在vim运行命令

代码: 全选

Addcs ../cscope.out
总是提示错误,如果用注释的那行代替就能成功,但是我需要添加cscope数据库的时候自动添加路径啊

到底啥问题啊 :em20

Re: 我实在搞不通为啥vim的这个函数有错误

发表于 : 2010-12-17 11:05
lilydjwg
提示什么错误呢?

另外,为什么要用 dirname?

代码: 全选

let prePath = fnamemodify(a:name, ':p:h')

Re: 我实在搞不通为啥vim的这个函数有错误

发表于 : 2010-12-17 13:48
fanhe
lilydjwg 写了:提示什么错误呢?

另外,为什么要用 dirname?

代码: 全选

let prePath = fnamemodify(a:name, ':p:h')
对vim自带的函数不熟,能化为熟悉的方法,多饶几下弯无所谓

错误如下

代码: 全选

../cscope.out
..
处理 function Addcs 时发生错误:
第    4 行:
E563: stat(../cscope.out) 错误: 2
请按 ENTER 或其它命令继续
不用怀疑,绝对有 ../cscope.out 这个文件,因为这本身就是补全过来的

Re: 我实在搞不通为啥vim的这个函数有错误

发表于 : 2010-12-17 13:58
fanhe

代码: 全选

function Addcs(name)
	let prePath = fnamemodify(a:name, ':h')
	execute "echo \"".a:name.'"'
	execute "echo \"".prePath.'"'
	execute "cs add " . a:name . " " . prePath
"	execute "cs add " . a:name
endf
看来用外部函数处理后的字符存在兼容问题啊,输出一样,但是就是执行命令的时候有问题

代码: 全选

../cscope.out
..
添加了 cscope 数据库 ../cscope.out
请按 ENTER 或其它命令继续

Re: 我实在搞不通为啥vim的这个函数有错误

发表于 : 2010-12-17 14:14
lilydjwg
估计是 dirname 输出最后的换行的原因吧。