当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [已解决]怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-15 23:46 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
一般情况下,字符串都是单引号和双引号,但是PHP有一种特殊的字符串,是以“<<<EOT”开头,EOT(EOT必须在行首,否则语法是错误的)结尾的字符串,类似于下面这种形式:
引用:
$val = 'hello';
$str = <<<EOT
我是一个字符串
变量的值={$val}
EOT;

是向上相当于
引用:
$str = "我是一个字符串\n变量的值={$val}"

而Vim只能识别第二种,第一种无法识别


最后由 iny 编辑于 2009-05-17 12:37,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 0:21 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
其实,你不用EOT,用别的什么也可以,只要前后一致即可。

这种很长文章的字符串变量,一般都是保存在单独的文件里边,用到的时候 include 进来,我觉得没必要显示那么好看吧?

刚刚试验了一下可以正常显示,你说的是高亮显示语法么?



页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 1:15 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
darasion 写道:
其实,你不用EOT,用别的什么也可以,只要前后一致即可。

这种很长文章的字符串变量,一般都是保存在单独的文件里边,用到的时候 include 进来,我觉得没必要显示那么好看吧?

刚刚试验了一下可以正常显示,你说的是高亮显示语法么?



只能识别EOT,也能识别EOT里面的变量{$val},但是不能识别字符串,假如字符串的颜色为绿色,而EOT内部的字符串就不会变成绿色。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 4:44 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
iny 写道:
darasion 写道:
其实,你不用EOT,用别的什么也可以,只要前后一致即可。

这种很长文章的字符串变量,一般都是保存在单独的文件里边,用到的时候 include 进来,我觉得没必要显示那么好看吧?

刚刚试验了一下可以正常显示,你说的是高亮显示语法么?



只能识别EOT,也能识别EOT里面的变量{$val},但是不能识别字符串,假如字符串的颜色为绿色,而EOT内部的字符串就不会变成绿色。


vim这样显示是正确的。可能你的理解有偏差。

还有,不一定非要EOT的,别的什么都可以用,比如你可以这么写:
代码:
$str = <<<AAA
各种各样的文字,段落什么的。。。。。
这里的是纯字符串,里边有html什么的也不会特殊显示。
AAA;


vim的显示如图:
附件:
Screenshot-a.php (-var-www-php) - GVIM.png
Screenshot-a.php (-var-www-php) - GVIM.png [ 89.99 KiB | 被浏览 591 次 ]



页首
 用户资料  
 
5 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 20:34 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
引用:
vim这样显示是正确的。可能你的理解有偏差。

还有,不一定非要EOT的,别的什么都可以用,比如你可以这么写:
代码:
$str = <<<AAA
各种各样的文字,段落什么的。。。。。
这里的是纯字符串,里边有html什么的也不会特殊显示。
AAA;


vim的显示如图:
附件:
附件 Screenshot-a.php (-var-www-php) - GVIM.png 已经无效

是的,不光是EOT,还可以自定义。
不过显示确实不对,就拿你这副图来说,hello是字符串,EOF里面也是字符串,那么除EOF里面的变量之外,其它的字符串也应该和hello是一样的颜色(都是字符串)。
下图是NetBeans IDE里面的显示效果,这样就完全正确了。


附件:
NetBeans_EOT.gif
NetBeans_EOT.gif [ 4.6 KiB | 被浏览 647 次 ]
页首
 用户资料  
 
6 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 20:50 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
iny 写道:
引用:
vim这样显示是正确的。可能你的理解有偏差。

还有,不一定非要EOT的,别的什么都可以用,比如你可以这么写:
代码:
$str = <<<AAA
各种各样的文字,段落什么的。。。。。
这里的是纯字符串,里边有html什么的也不会特殊显示。
AAA;


vim的显示如图:
附件:
Screenshot-a.php (-var-www-php) - GVIM.png

是的,不光是EOT,还可以自定义。
不过显示确实不对,就拿你这副图来说,hello是字符串,EOF里面也是字符串,那么除EOF里面的变量之外,其它的字符串也应该和hello是一样的颜色(都是字符串)。
下图是NetBeans IDE里面的显示效果,这样就完全正确了。


你可以这样理解:vim 用颜色区分了两种不同形式的字符串。

一种是常规的$str='abc';
另外一种是$str=<<<EOT
abc
EOT;



页首
 用户资料  
 
7 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 20:57 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
引用:
你可以这样理解:vim 用颜色区分了两种不同形式的字符串。

一种是常规的$str='abc';
另外一种是$str=<<<EOT
abc
EOT;


只能这样自我安慰了 :em20


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 21:20 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
iny 写道:
一般情况下,字符串都是单引号和双引号,但是PHP有一种特殊的字符串,是以“<<<EOT”开头,EOT(EOT必须在行首,否则语法是错误的)结尾的字符串,类似于下面这种形式:
引用:
$val = 'hello';
$str = <<<EOT
我是一个字符串
变量的值={$val}
EOT;

是向上相当于
引用:
$str = "我是一个字符串\n变量的值={$val}"

而Vim只能识别第二种,第一种无法识别


这个没有什么难,只要改改 syntax/php.vim 就可以实现了。如果你不想修改官方的,可以 cp 过来到自己的 ~/.vim/syntax 目录下进行编辑。

这种语法运用得非常多,并不光是 php 用。其实我在 syntax/lpc.vim 中已经实现了类似的语法着色。另外chip博士在 sh.vim 的脚本里应该也实现了类似的语法的。

理论上,你应该可以在你的 vim 发行版中找到 syntax 目录并自己研究一下相关语法着色。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 21:27 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
poet 写道:
这个没有什么难,只要改改 syntax/php.vim 就可以实现了。如果你不想修改官方的,可以 cp 过来到自己的 ~/.vim/syntax 目录下进行编辑。

这种语法运用得非常多,并不光是 php 用。其实我在 syntax/lpc.vim 中已经实现了类似的语法着色。另外chip博士在 sh.vim 的脚本里应该也实现了类似的语法的。

理论上,你应该可以在你的 vim 发行版中找到 syntax 目录并自己研究一下相关语法着色。


你说到点子上了,就是这个意思
不过我不会修改syntax/???.vim :em06
我的这个问题怎么修改?麻烦指教 :em02


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-16 21:46 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
还是默认的好,要不换个地方还要带着一堆配置文件。。。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-17 10:02 

注册: 2008-09-19 1:03
帖子: 100
送出感谢: 0 次
接收感谢: 1
其实根本不用改的,你自己输入这一行就可以看到效果了:
:hi link phpheredoc string

如果觉得效果满意,把上面一行加入vimrc就可以了。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 怎么才能让Vim识别PHP的EOT字符串?
帖子发表于 : 2009-05-17 12:37 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
starwing 写道:
其实根本不用改的,你自己输入这一行就可以看到效果了:
:hi link phpheredoc string

如果觉得效果满意,把上面一行加入vimrc就可以了。


爽啊,原来这么一句设定就搞定了,太感谢了! :em06


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译