月度归档:2015年01月

sublime配置全攻略


转自:http://cloudbbs.org/forum.php?mod=viewthread&tid=3620









大家好,今天给大家分享一款编辑器:sublime text2

    我用过很多编辑器,

EditPlus、EmEditor、Notepad++、Notepad2、UltraEdit、Editra、Vim,还有包括netbeans , zendstudio, dreamweaver 等。 最后我遇见了sublime text。  sublime是我见过的最好的编辑器,大型IDE能实现的功能, 用sublime装上相应插件,都能实现。 它是一个小型编辑器, 运行速度很快。现在是鼓起勇气换掉你以前编辑器的时候了。如果你以前没有听说过sublime, 可以看看这个介绍视频:http://v.youku.com/v_show/id_XMzU5NzQ5ODgw.html


  sublime本身功能有限,我们需要装上一些插件使其变得强大。sublime在各个操作系统下都可以运行,但在linux下运行需要注意中文输入的问题。 下面我主要介绍一下常用插件、配置的建议以及在linux下运行的注意事项。


  一,常用插件


       1,package control。 我们用sublime几乎都会首先安装这个插件,这个插件是管理插件的功能,先安装它,再安装其他插件就方便了。  安装方法:

       点击sublime的菜单栏 view->show console ;现在打开了控制台, 这个控制台有上下两栏, 上面一栏会实时显示sublime执行了什么插件,输出执行结果, 如果你安装的某个插件不能正常运行,应该先在这里看看有没有报错。下面栏是一个输入框,可以运行python代码。我们输入下面的代码点击回车运行, 就能安装好package control了。

       


  1. import urllib2,os;pf=’Package Control.sublime-package’;ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),’wb’).write(urllib2.urlopen(‘http://sublime.wbond.net/’+pf.replace(‘ ‘,’%20’)).read())


复制代码


      

       然后我们按住 ctrl+shift+p。此时会输出一个输入框, 输入install。  选择package contrl: install package 回车 ,需要稍定一会儿,右下角状态栏会显示正在连接的提示文字。 使用sublime时注意看右下角状态栏,很多插件的提示信息都显示在这里,这个状态栏很小,初次使用的人都有可能没有注意到它。

    

      QQ截图20120630134759.png 


   稍等一会儿后,它会出现一个插件列表, 你也可以在输入框中输入文字进行搜索插件。 搜索到自己想安装的插件,再选择它,回车。 就自动给你安装好了。


  如果要卸载插件, ctrl+shift+p 输入 remove, 选择package control:remove package 然后再选择已安装的插件, 回车即可卸载。


   如果package control 安装插件时失败了, 我们可以采用手动安装的方式, 在google上去搜索插件, 下载插件的源代码。在sublime的菜单栏点击 preferences->Browse package..  此时会打开插件目录。然后把你下载的插件源代码复制进去就可以了。


  ctrl+shift+p 打开的输入框面板是什么? 英文叫做 “Anything panel” ,任何操作都可以在这个面板里面完成。我暂且翻译为“万能面板”。 打开万能面板有几种方式。  

  ctrl+shift+p 打开时,我们需要在面板中输入一个命令,然后执行命令。所有菜单栏能操作事都可以在这里输入命令进行操作。

  ctrl+p 打开时,能快速查找文件。

  ctrl+r 打开时, 能查找当前文件中的函数。

  ctrl+g 打开时,能跳转到指定行。


  大家开始接触sublime时对它的环境还不是很熟悉,所有我在这里说得有点多, 简单总结一下前面说的。


  控制台的作用: 可以在这里执行python代码,和查看一些执行结果,如果插件运行不正常,可以在这里看看有没有报错。

  右下角状态栏: 很多提示信息都会显示在那里,注意经常查看。

  万能面板:所有的操作都可以在这里进行,又可以在这里输入命令,又可以在这里查找文件,也可以在这里查找函数等等。

  安装插件的方式:除了package control 安装还可以手动安装。

2,ctags。 这个插件能跨文件跳转,跳转到指定函数声明的地方。 使用package control 搜索ctags 进行安装(安装ctags插件就可以了, 还有一个 CTags for PHP 插件没什么用)。注意安装好插件后要需要安装ctags命令。window 下载 ctags.exe  http://vdisk.weibo.com/s/7QZd7 。
将ctags.exe文件放在一个环境变量能访问到的地方。打开cmd, 输入ctags,如果有这个命令,证明成功了。 ubuntu下安装运行命令:sudo apt-get install exuberant-ctags 。 

    然后在sublime项目文件夹右键, 会出现Ctag:Rebuild Tags 的菜单。点击它,然后会生成.tags的文件。

   2.png 


然后在你代码中, 光标放在某个函数上, 点击ctrl+shift+鼠标左键 就可以跳转到函数声明的地方。

3, sublimecodeintel 代码提示。 sublime默认的代码提示只能提示系统函数,用户自己创建的函数、类不能提示。 如果想要提示自己建立的函数。 可以安装sublimecodeintel插件。
3.png 

sublimecodeintel 安装后需要配置,文件:插件目录/.codeintel/config 中 增加


  1. “PHP”: {

  2.         “php”: ‘D:SaeServerphpphp.exe’,

  3.         “phpExtraPaths”: [‘D:SaeServerphpstdlib’],

  4.         “phpConfigFile”: ‘D:SaeServerapachephp.ini’

  5.     },


复制代码




配置了php执行文件的地址, php的配置文件地址, phpExtraPaths 是额外需要代码提示的类库,除了当前项目下的PHP代码可以提示外 phpExtraPaths中定义的目录下的PHP代码也能提示。  D:SaeServerphpstdlib 是SaeServer中 SAE本地模拟文件的目录, 所以配置后不管在哪儿 都能有SAE代码的提示。


  安装sublimecodeintel后, 按alt+鼠标左键也能和ctags一样跳转到函数声明的地方。 但是如果有两个文件声明了同样名称的函数, sublimecodeintel只会跳转到第一个找到的函数, 而ctags会让你选择要跳转到哪个文件。所以我们一般还是用ctags的跳转功能。

4,语法提示。 我们需要在写代码的时候如果有语法错误,能立即提示我们, 可以安装这两个插件:sublimelint 和Phpcs , sublimeint 需要系统有php命令。 所以需要设置好php的环境变量。 sublimelint的语法错误提示是显示在状态栏上面的,所以在编写程序的时候注意时常看看状态栏。 而Phpcs的语法错误提示是在我们保存文件时弹出万能面板显示错误,sublimelint的错误提示实时但不明显。
Phpcs的错误提示不是实时的,但很明显。 因此我们一般这两个插件都要安装。  Phpcs除了代码提示的共,还有其他功能,但是我暂时没有弄明白其他功能怎么用, 大家可以去研究一下,如果知道怎么用了再告诉我一下。

5,goto document。 这个插件能帮助我们快速查看手册。 比如我们在写php代码时, 突然忘记了某个函数怎么用了,将鼠标放在这个函数上,然后按F1,它能快速打开PHP手册中说明这个函数用法的地方。 

    安装好 goto document插件后我们再配置快捷键F1 跳转到文档。 打开sublime的菜单栏Preferences->key bindings -User  设置快捷键:


  1. [

  2.     { “keys”: [“f1”], “command”: “goto_documentation” }

  3. ]


复制代码


这样设置后, 按F1就能跳转到文档了。

6,function name display。 这个插件可以在状态栏显示出当前光标处于哪个函数中。

7,GBK Encoding Support 。 sublime本身不支持GBK编码, 可以安装这个插件让它支持。

8,SVN插件。windows下可以安装Tortoise和 Tortoisesvn的客户端。然后在sublime中在目录或文件右键都可以提交svn了。 在ubuntu下可以安装rabbitvcs 结合这个插件:https://github.com/kervin/sublime-svn/downloads 实现同样的功能。

9,gist。我们建立html文件时,做有些相同的代码。 这时候我们喜欢能有一个代码模板, 不能写重复相同的代码, gits插件能实现代码模板的功能。 它能见我们自己创建的代码模板,代码片段保持在github中的gist下。http://lucifr.com/2012/03/07/sub
… al-snippet-manager/
 这里介绍了详细的用法。

10,代码注释格式化。

additional PHP snippet插件能提示phpdocument格式的代码
4.png 


还能快速输出开源协议, 输入php- 会有提示
5.png 


安装DocBlockr 插件,能形成注释块。不用每次敲注释的斜杠或星号。

11,成对匹配的增强。 像这些符号是成对的:花括号{}, 中括号[],括号:() ,引号“” 等。 这些符号当我们鼠标放在开始符号的位置的时候, 希望能明显看到结尾符号在哪儿sublime默认是下划线,很不明显, 想要明显一点,可以安装插件  BracketHighlighter。


12,格式化PHP代码。  安装 php-beautifier 插件,使用php-beautifier还需要安装 PHP Beutifier的pear包:

pear install PHP_Beautifier

安装好后, 打开PHP文件,ctrl+alt+f 就能为你自动格式化代码。




 


 

 



沙发

 发表于
2012-6-30 16:44:15
 |只看该作者



本帖最后由 luofei614 于 2012-7-3 11:39 编辑

13,Xdebug。  可以安装xdebug插件,做代码调试功能。 这是大型IDE都有的功能, 小型编辑器很少能做到,但是sublime却又相应的插件能实现xdebug的功能。
screenshot.png 


你的PHP需要安装xdebug扩展。使用时需要在项目目录下建立一个.sublime-project文件


  1. {

  2.     “folders”:

  3.     [

  4.         {

  5.             “path”: “D:ysdysdv8”

  6.         },

  7.     ],



  8.     “settings”: {

  9.         “xdebug”: { “url”: “http://yunshangdian.com” }

  10.     }

  11. }


复制代码


path配置项配置了程序所在路径。  

注意给程序设置断点。否则不能见效果。 详细用法见:https://github.com/Kindari/SublimeXdebug


你如果也要写前端代码, 还可以安装一些和html,js相关的插件。如 ZenCoding,jQuery,jQuery Mobile Snippets,jQuery Snippets pack等。


二,配置建议。



用户配置建议(打开菜单栏Preferences->Setting-user):


    {

    “color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,

    “default_line_ending”: “unix”,

    “detect_slow_plugins”: false,

    “font_face”: “Microsoft YaHei”,

    “font_size”: 10.0,

    “auto_match_enabled”: false,

    }


auto_match_enabled设置为false后可以关闭括号的自动完成。如我们输入左括号时sublime自动将右括号打出来了,往往我们不习惯这样, 此时你设置auto_match_enabled为false即可。


快捷键配置的建议(菜单栏Preferences->key bindings -User):



    [

    { “keys”: [“f1”], “command”: “goto_documentation” },

    { “keys”: [“alt+shift+`”], “command”: “clone_file” }

    ]


F1快速打开文档, 这个快捷键的设置前面已经说了。

alt+shift+` 快捷键又有什么用呢? 我们需要同一个文件在左右两栏同时打开。

7.png 


先按快捷键: alt+shift+2 。 此时会出现左右两栏的布局。


再按alt+shift+`(`键是tab键上面个键), 此时会复制一份当前文件, 再把新复制的那份文件拖动到右栏。 这样就实现了同一文件左右两栏同时打开了。


切换回一栏布局,按 alt+shift+1


颜色配置建议:


sublime对无效(invalid)的颜色提示 往往会提示错误。颜色很难看。 可以去掉对invalid的颜色提示。

插件目录下Color Scheme – DefaultMonokai.tmTheme文件中, 删除


  1. <dict>

  2.     <key>name</key>

  3.     <string>Invalid</string>

  4.     <key>scope</key>

  5.     <string>invalid</string>

  6.     <key>settings</key>

  7.     <dict>

  8.     <key>background</key>

  9.     <string>#F92672</string>

  10.     <key>fontStyle</key>

  11.     <string></string>

  12.     <key>foreground</key>

  13.     <string>#F8F8F0</string>

  14.     </dict>

  15.     </dict>


复制代码









成对匹配默认是绿色,有点难看,


插件目录下Color Scheme – DefaultMonokai.tmTheme文件中Class name 键中的:

改为:


  1. <dict>

  2.     <key>name</key>

  3.     <string>Class name</string>

  4.     <key>scope</key>

  5.     <string>entity.name.class</string>

  6.     <key>settings</key>

  7.     <dict>

  8.     <key>background</key>

  9.     <string>#F92672</string>

  10.     <key>fontStyle</key>

  11.     <string></string>

  12.     <key>foreground</key>

  13.     <string>#F8F8F0</string>

  14.     </dict>

  15.     </dict>


复制代码






三,在linux下使用。


    linux下使用时,中文不能输入的问题, 使用scim输入法方式可以解决。具体解决方法:http://www.haogongju.net/art/1312281

  虽然scim能让我们输入中文后, 但是也不是很完美,有候选词不跟随的问题, sublime失焦后候选词会消失的问题。候选词消失的问题,可以把sublime独立到一个单独的工作区中来暂时解决这个问题。


php之php://input


转自:http://www.nowamagic.net/academy/detail/12220520

相关资料:http://php.net/manual/zh/wrappers.php.php

1.php://input
1.1.file_get_contents(‘php://input’, ‘r’); 
php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data
1.2.
1,Content- Type取值为application/x-www-form-urlencoded时,php会将http请求body相应数据会填入到数 组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。(其实,除了该Content-Type,还有 multipart/form-data表示数据是表单数据,稍后我们介绍) 
2,php://input数据,只要Content-Type不为 multipart/form-data(该条件限制稍后会介绍)。那么php://input数据与http entity body部分数据是一致的。该部分相一致的数据的长度由Content-Length指定。 
3,仅当Content-Type为application/x-www-form-urlencoded且提交方法是POST方法时,$_POST数据与php://input数据才是”一致”(打上引号,表示它们格式不一致,内容一致)的。其它情况,它们都不一致。 
4,php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。 

这也帮助我们理解了,为什么xml_rpc服务端读取数据都是通过file_get_contents(‘php://input’, ‘r’)。而不是从$_POST中读取,正是因为xml_rpc数据规格是xml,它的Content-Type是text/xml。 
php://input碰到了multipart/form-data 
1.3.
那么,enctype=multipart/form-data这里的意义,就是将该次http请求头部(head)中的Content-Type设置为multipart/form-data。请查阅RFC1867对 它的描述。multipart/form-data也表示以POST方法提交表单数据,它还伴随了文件上传,所以会跟application/x- www-form-urlencoded数据格式不一样。它会以一更种更合理的,更高效的数据格式传递给服务端
从响应输出来比对,$_POST数据跟请求提交数据相符,即$_POST = array(‘n’ => ‘perfgeeks’)。这也跟http请求body中的数据相呼应,同时说明PHP把相应的数据填入$_POST全局变量。而php://input 输出为空,没有输出任何东西,尽管http请求数据包中body不为空。这表示,当Content-Type为multipart/form-data的 时候,即便http请求body中存在数据,php://input也为空,PHP此时,不会把数据填入php://input流。所以,可以确定:
php://input不能用于读取enctype=multipart/form-data数据。 
1.4.
上一节,我们概述了,当Content-Type为application/x- www-form-urlencoded时,php://input和$_POST数据是“一致”的,为其它Content-Type的时候,php: //input和$_POST数据数据是不一致的。因为只有在Content-Type为application/x-www-form- urlencoded或者为multipart/form-data的时候,PHP才会将http请求数据包中的body相应部分数据填入$_POST全
局变量中,其它情况PHP都忽略。而php://input除了在数据类型为multipart/form-data之外为空外,其它情况都可能不为空。 通过这一节,我们更加明白了php://input与$_POST的区别与联系。所以,再次确认,php://input无法读取 enctype=multipart/form-data数据,当php://input遇到它时,永远为空,即便http entity body有数据。 
1.5.$HTTP_RAW_POST_DATA
相信大家对php://input已经有一定深度地了解了。那 么$http_raw_post_data是什么呢?$http_raw_post_data是PHP内置的一个全局变量。它用于,PHP在无法识别的 Content-Type的情况下,将POST过来的数据原样地填入变量$http_raw_post_data。它同样无法读取Content- Type为multipart/form-data的POST数据。需要设置php.ini中的 always_populate_raw_post_data值为On,PHP才会总把POST数据填入变量$http_raw_post_data。 
1.6.
以此,我们这节可以总结如下: 
1, php://input 可以读取http entity body中指定长度的值,由Content-Length指定长度,不管是POST方式或者GET方法提交过来的数据。但是,一般GET方法提交数据 时,http request entity body部分都为空。 
2,php://input 与$HTTP_RAW_POST_DATA读取的数据是一样的,都只读取Content-Type不为multipart/form-data的数据。 

1.7.总结
1,Content-Type仅在取值为application/x-www-form-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST 
2,PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA 
3, 只有Coentent-Type为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Content-Length指定。 
4,只有Content-Type为application/x-www-from-urlencoded时,php://input数据才跟$_POST数据相一致。 
5,php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini 
6,PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。

2.在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。

3.

sublime之xdebug浏览器插件


1.chrome  xdebug.helper

1.1.安装xdebug.helper

1.2.配置IDEkey选择Other,后面输入sublime.xdebug

1.3.Domain filter:可以输入 你要调试的站点的域名,不输入默认对所有站点显示调试按钮

2.Firefox        The easiest Xdebug

2.1.安装The easiest Xdebug

2.2.点击“更多”或选项,进入设置页面

2.3.IDE key栏输入sublime.xdebug

PHP开发环境搭建


//httpd.conf配置

#START module方式


# 对 PHP 5 用这两行:

#LoadModule php5_module “d:/php5.5/php5.dll”

#AddType application/x-httpd-php .php

# 配置 php.ini 的路径

#PHPIniDir “D:/php5.5”

#END module方式


#START cgi方式

ScriptAlias /php/ “d:/php5.3/”

AddType application/x-httpd-php .php

# 对 PHP 4 用这行

#Action application/x-httpd-php “/php/php.exe”

# 对 PHP 5 用这行

Action application/x-httpd-php “/php/php-cgi.exe”

#END cgi方式


#START fastcgi方式

#ScriptAlias /php/ “d:/php5.5/”

#Action application/x-httpd-php “/php/php-cgi.exe”

#SetEnv PHPRC “d:/php5.5/”

#AddType application/x-httpd-php .php

#LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP20.dll

# 说明:此处的 -processes 3 表示启动三个 php-cgi.exe 进程,

# 关于 FastCgiServer 的详细参数请参考 FastCGI 文档。

#FastCgiServer “D:/php5.5/php-cgi.exe” -processes 3

#END cgi方式

<Directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

    allow from all

</Directory>

//httpd-vhosts.conf

<VirtualHost *:80>

    ServerAdmin [email protected]

    DocumentRoot “D:/apache2.2/htdocs”

    ServerName localhost

    ServerAlias localhost.com

    ErrorLog “logs/dummy-host.localhost-error.log”

    CustomLog “logs/dummy-host.localhost-access.log” common


    <Directory “D:/apache2.2/htdocs”>

    #

    # Possible values for the Options directive are “None”, “All”,

    # or any combination of:

    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

    #

    # Note that “MultiViews” must be named *explicitly* — “Options All”

    # doesn’t give it to you.

    #

    # The Options directive is both complicated and important.  Please see

    # http://httpd.apache.org/docs/2.2/mod/core.html#options

    # for more information.

    #

    Options Indexes FollowSymLinks


    #

    # AllowOverride controls what directives may be placed in .htaccess files.

    # It can be “All”, “None”, or any combination of the keywords:

    #   Options FileInfo AuthConfig Limit

    #

    AllowOverride All


    #

    # Controls who can get stuff from this server.

    #

    Order allow,deny

    Allow from all


</Directory>

</VirtualHost>

//php.ini配置

extension_dir = “./ext/”

//xdebug配置

;xdebug配置
;载入Xdebug
zend_extension=D:/php5.3/ext/php_xdebug-2.2.6-5.3-vc9-nts.dll
;zend_extension= /usr/lib/php5/20090626+lfs/xdebug.so (Linux)


;debug
;开启远程调试
xdebug.remote_enable=On
;允许连接的zend studio的IP地址
xdebug.remote_host="localhost"
;反向连接zend studio使用的端口
xdebug.remote_port=9000
;用于zend studio远程调试的应用层通信协议
xdebug.remote_handler="dbgp"
;开启远程调试自动启动
xdebug.remote_autostart = Off


;profiler
xdebug.profiler_enable=on
;xdebug 的数据文件目录
xdebug.trace_output_dir="d:/xdebug/"
xdebug.profiler_output_dir="d:/xdebug/"
xdebug.profiler_output_name = "cachegrind.out.%c"


;trace  trace中收集的函数参数
;开启自动跟踪
xdebug.auto_trace = On 
;开启异常跟踪
xdebug.show_exception_trace = On 
;收集变量, 收集参数
xdebug.collect_params = On 
xdebug.collect_vars = On 
xdebug.collect_params = '3'
;收集返回值
xdebug.collect_return = On 
;如果设得太小,函数中有递归调用自身次数太多时会报超过最大嵌套数错
xdebugbug.max_nesting_level = 10000 


;//trace文件格式为html
xdebug.trace_format=2
;//追加trace日志,0:覆盖日志
xdebug.trace_options=1


xdebug配置


;xdebug配置
;载入Xdebug
zend_extension=D:/php5.3/ext/php_xdebug-2.2.6-5.3-vc9-nts.dll
;zend_extension= /usr/lib/php5/20090626+lfs/xdebug.so (Linux)


;debug
;开启远程调试
xdebug.remote_enable=On
;允许连接的zend studio的IP地址
xdebug.remote_host="localhost"
;反向连接zend studio使用的端口
xdebug.remote_port=9000
;用于zend studio远程调试的应用层通信协议
xdebug.remote_handler="dbgp"
;开启远程调试自动启动
xdebug.remote_autostart = Off


;profiler
xdebug.profiler_enable=on
;xdebug 的数据文件目录
xdebug.trace_output_dir="d:/xdebug/"
xdebug.profiler_output_dir="d:/xdebug/"
xdebug.profiler_output_name = "cachegrind.out.%c"


;trace  trace中收集的函数参数
;开启自动跟踪
xdebug.auto_trace = On 
;开启异常跟踪
xdebug.show_exception_trace = On 
;收集变量, 收集参数
xdebug.collect_params = On 
xdebug.collect_vars = On 
xdebug.collect_params = '3'
;收集返回值
xdebug.collect_return = On 
;如果设得太小,函数中有递归调用自身次数太多时会报超过最大嵌套数错
xdebugbug.max_nesting_level = 10000 


;//trace文件格式为html
xdebug.trace_format=2
;//追加trace日志,0:覆盖日志
xdebug.trace_options=1