在.vimrc中运行shell脚本(并处理输出)
我试图从.
vimrc文件中运行一个
shell脚本(脚本中标记了三个问题):
function! CheckMe(file) let shellcmd = 'checkme '.a:file " Start the command and return 0 on success. " XXX: How do you evaluate the return code? execute '!'.shellcmd if !result return 0 endif " Ending up here,the command returned an error. " XXX: Where to you get the output? let pair = split(output,'S') let line = pair[0] let char = pair[1] " Jump to the errenous column and line. " XXX: Why does this not work? normal '/%'.line.'l%'.char.'c' return 1 endfunction 总而言之,如何获得脚本的结果/输出,以及为什么跳转语句不起作用? 额外细节: > shell脚本在成功时返回0,在失败时返回1.如果失败,脚本会将两个数字(行号和列号)打印到stdout,用空格字符分隔. function! CheckMe(file) let shellcmd = 'checkme '.a:file let output=system(shellcmd) if !v:shell_error return 0 endif " Are you sure you want to split on non-blanks? This " will result in list of blank strings. " My variant: let [line,char]=split(output) " Normal is not an execute: this is what it will do: " ?'/? means ?Go to mark /?,produces an error E78 because / " is not a valid symbol for mark. Than normal stops after error occured. " If you need to use variables in nomal use ?execute 'normal '.ncmd?. " And you can not use ?normal? to perform search execute '/%'.line.'l%'.char.'c' " or call setpos('.',[0,line,char,0]) return 1 endfunction
只需输入?’/?即可得到此错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |