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

Vim、Emacs配置和使用
回复
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

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

#1

帖子 fanhe » 2010-12-16 23:23

代码: 全选

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
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#2

帖子 lilydjwg » 2010-12-17 11:05

提示什么错误呢?

另外,为什么要用 dirname?

代码: 全选

let prePath = fnamemodify(a:name, ':p:h')
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

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

#3

帖子 fanhe » 2010-12-17 13:48

lilydjwg 写了:提示什么错误呢?

另外,为什么要用 dirname?

代码: 全选

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

错误如下

代码: 全选

../cscope.out
..
处理 function Addcs 时发生错误:
第    4 行:
E563: stat(../cscope.out) 错误: 2
请按 ENTER 或其它命令继续
不用怀疑,绝对有 ../cscope.out 这个文件,因为这本身就是补全过来的
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45
送出感谢: 0
接收感谢: 9 次

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

#4

帖子 fanhe » 2010-12-17 13:58

代码: 全选

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 或其它命令继续
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#5

帖子 lilydjwg » 2010-12-17 14:14

估计是 dirname 输出最后的换行的原因吧。
回复

回到 “Vim和Emacs”