轉自:http://blog.csdn.net/zm2714/article/details/8076077
這兩天一直糾結兩款編輯器——eclipse和sublime Text。
eclipse的php插件不支持塊注釋收縮狀態下的格式化
eclipse的php插件功能的格式化代碼功能如果雞肋,無法配置PHP格式化模板。而且不支持代碼注釋在收縮的情況下的格式化功能,這是本人花了幾個小時的嘗試下,無意間的收獲經驗。一開始我以為是eclipse的版本問題,換了好幾個版本,同時也更換php插件,都無法解決,因為我是格式化我本來項目中的一個文件,而那個文件就有大量的塊注釋。一按快捷鍵ctrl+shift+F就會出現假死現象,花了幾個小時都無法解決問題,后來嘗試寫一個簡單的PHP代碼,卻可以格式化代碼了,最終將注釋塊全部展開,這時也可以格式化PHP代碼了。o~上帝,然而無法同Java一樣,PHP插件中無法配置PHP格式化模板,這讓我不太滿意。當然,這些都不是大問題,問題是,前幾天我認識了sublime text 這款軟件,功能非常強大。但是....
sublime text的缺點
用了sublime text,總體感覺很棒。只是以下幾個內容不太滿足要求:
1、不支持outline大綱
2、函數追蹤功能效果不好。而且操作不習慣。我安裝的是CTags,配置快捷鍵,按兩下F1進行函數追蹤,按一下F1,再按一下F2退回。如果能Ctrl+鼠標左鍵來實現這個功能的話,將會習慣很多。也比較方便。
其實PHP格式化功能,可以通過edit->line->Reindent 重縮進功能進行處理。效果也挺不錯。但無意在網上看到了這樣一款插件:PhpBeautifier ,經過幾個小時的研究,最終在sublime text 下成功通過PhpBeautifier插件實現PHP代碼格式,效果不錯,在此記錄一下昨晚解決事情的經歷並分享實現PhpBeautifier格式化PHP代碼的方法。
修正上面第二點:函數追蹤功能 2012-11-11光棍節22:28記錄
——sublime text可以實現ctrl+鼠標左鍵來進行函數追蹤
可能是我的ctags.exe版本原故,導致無法通過ctrl+鼠標左鍵來進行函數追蹤效果。今天在“CTags的官方網站”下載了最新版的ctags.exe,放到我的sublime text目錄下。注意,要在環境變量增加你的ctags.exe的路徑。比如我的路徑為:C:\Sublime Text 2.0\ctags.exe,那么我在環境變量path中增加:C:\Sublime Text 2.0,如下圖所示:
重建索引后,盡然可以使用鍵盤按鍵與鼠標結合來進行函數追蹤功能了,但是要按ctrl+shift后,在按鼠標左鍵進行函數追蹤。可我想直接按ctrl與鼠標左鍵。通過進一步摸索,發現增加了mouse選項,如下圖所示:
於是在Mouse Bindings-user中復制Mouse Bindings-Default的代碼,並去掉shift,實現了ctrl+鼠標左鍵進行函數追蹤功能。同時,定位到目標文件后,按下ctrl+鼠標右鍵會返回到原文件中。非常方便。
2012-11-12 記:似乎不是ctag.exe版本問題。在公司電腦中,ctags.exe仍是以前版本。但是Preferences->Package Settings->CTags->也出現了Mouse Bindings -Default和Mouse Bindings-User這兩項。奇怪,為什么以前沒有這兩項呢?還是我以前沒注意?
實現sublime text 支持 PhpBeautifier經歷
一、失敗
看到PhpBeautifier的介紹,心動不已,立即在sublime text中進行安裝,安裝后無法使用,根據習慣檢查一下 Preferences->package setting中插件內容,並未出現PhpBeautifier;輸入ctrl+shift+p,輸入format ,顯示 format php,執行,無任何效果。為什么會在sublime text中安裝的插件不成功?為這問題折騰了一個多小時,仍未解決。
二、失敗
百度,無任何資料。google,找到了這樣一篇資料:
- 在 Sublime Text 裡的格式化 PHP 代碼
- 由於某些原因,需要處理一堆比較舊的PHP代碼,
- 而且編程風格也不統一,所以需要先統一後再處理會比較方便.
- 不過於由 Pear 的東西有點參差不齊.所以整合到 Editor 內的過程也不太順利.
- 來記錄一下.
- # 更新已有的 Pear 套件
- # 之後安裝 PHP_Beautifier
- # 再列出使用方法
- cd /Applications/XAMPP/xamppfiles/bin
- sudo ./pear update-channels
- sudo ./pear upgrade-all
- sudo ./pear install --alldeps PHP_Beautifier-0.1.15
- ./php_beautifier --help
- # 修正出現 Cannot redeclare class Config 錯誤
- # 切進 PHP_Beautifier 的 Filter 目錄
- cd /Applications/XAMPP/xamppfiles/lib/php/pear/PHP/Beautifier/Filter
- # 打開下面兩個檔案
- - Pear.filter.php
- - phpBB.filter.php
- # 注解掉下句這句
- require_once ('PEAR/Config.php');
- # 安裝 Sublime Text 2 的 PhpBeautifier 套件
- cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/
- git clone https://github.com/SublimeText/PhpBeautifier.git PhpBeautifier
- cd PhpBeautifier/
- vim php_beautifier.py
- indent = "-t"
- cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"
- # 最後在需要美化/格式化的代碼編輯界面裡就可以格式化了
- Open File > Command+Shift+P > Format PHP > Enter
在 Sublime Text 裡的格式化 PHP 代碼 由於某些原因,需要處理一堆比較舊的PHP代碼, 而且編程風格也不統一,所以需要先統一後再處理會比較方便. 不過於由 Pear 的東西有點參差不齊.所以整合到 Editor 內的過程也不太順利. 來記錄一下. # 更新已有的 Pear 套件 # 之後安裝 PHP_Beautifier # 再列出使用方法 cd /Applications/XAMPP/xamppfiles/bin sudo ./pear update-channels sudo ./pear upgrade-all sudo ./pear install --alldeps PHP_Beautifier-0.1.15 ./php_beautifier --help # 修正出現 Cannot redeclare class Config 錯誤 # 切進 PHP_Beautifier 的 Filter 目錄 cd /Applications/XAMPP/xamppfiles/lib/php/pear/PHP/Beautifier/Filter # 打開下面兩個檔案 - Pear.filter.php - phpBB.filter.php # 注解掉下句這句 require_once ('PEAR/Config.php'); # 安裝 Sublime Text 2 的 PhpBeautifier 套件 cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/ git clone https://github.com/SublimeText/PhpBeautifier.git PhpBeautifier cd PhpBeautifier/ vim php_beautifier.py indent = "-t" cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier" # 最後在需要美化/格式化的代碼編輯界面裡就可以格式化了 Open File > Command+Shift+P > Format PHP > Enter這如同在我絕望 中給了我動力。按上面要求更改插件PhpBeautifier目錄下的php_beautifier.py,測試失敗。又折騰了好長時間。都無法格式化PHP代碼。
三、失敗
繼續google,沒找到這方面相關資料。已經晚上11點了,從8點多開始,都搞了快3個小時。絕望、崩潰、淚流滿面....
四、phpCodeBeautifier批量php程序代碼美化工具
終於又讓希望恢復了點,找到了上面這款工具——phpCB.exe,根據參數來對PHP文件進行格式化。
進行測試,可以對指定目錄下的PHP文件格式化,效果不錯。缺點是需要在命令行下使用非常長的命令參數來美化程序,一次只能美化一個PHP文件。
即使如此,我又把目標放到sublime text上,我感覺,還是可以實現的,是不是我在哪地方有了疏漏。
五、重大發現
我在次轉向上面那篇文章。由於着急,只顧着修改php_beautifier.py的文件,而忽視了一個重要內容。安裝perl!在sublime text 中安裝PhpBeautifier插件的確需要安裝perl,請參考:
https://github.com/SublimeText/PhpBeautifier#readme
相關內容如下:
- Installation
- Install php-pear and php-cli with your package manager :
- •php-pear & php5-cli with Debian
- •php-pear & php with Archlinux
- Install php beautifier from pear channel : sudo pear install --alldeps channel://pear.php.net/php_beautifier-0.1.15
- Clone or download the files and copy them to your Packages folder. You can access it via Preferences -> Browse Packages in sublime text
Installation Install php-pear and php-cli with your package manager : •php-pear & php5-cli with Debian •php-pear & php with Archlinux Install php beautifier from pear channel : sudo pear install --alldeps channel://pear.php.net/php_beautifier-0.1.15 Clone or download the files and copy them to your Packages folder. You can access it via Preferences -> Browse Packages in sublime text
六、失敗
安裝perl這一問題,也是困難重重。不是安裝 ActivePerl for Windows 的版本。網上一些安裝辦法現在也無法適用。具體安裝請看下面鏈接中的文章。
安裝參考:http://wangye.org/blog/archives/266/
昨晚也不管什么目錄配置了,一路回車,安裝OK——這樣安裝的是在默認目錄下,我的目錄為 d:\php\php5,所以今天在虛擬機重現安裝時,我想便於管理,我想安裝到d:\php的perl目錄下。但是在配置那個菜單,選擇1,配置基本目錄時,確發現問題:
在cmd命令中輸入:
d:\php\php5> php go-pear.phar
出現:
Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :
直接回車,出現以下菜單:
如果選擇1,更改目錄,則會出現錯誤。錯誤如下所示:
只有重新輸入命令:
d:\php\php5> php go-pear.phar
出現:
Are you installing a system-wide PEAR or a local copy?
(system|local) [system] :
回車后出現:
1-12,'all' or Enter to continue:時,直接回車安裝到默認目錄,或者輸入“all”來配置目錄。
安裝perl成功后,要在d:\php\php5 目錄下找到 PEAR_ENV.reg文件,執行導入即可。
收藏1:http://www.cnblogs.com/heiing/archive/2011/12/07/2279405.html
收藏2:http://www.cnblogs.com/heiing/archive/2012/09/07/2674807.html
解決sublime text使用PhpBeautifier插件的問題
終於接近尾聲了,perl安裝成功。現在安裝PHP_Beautifier,即然上面是通過perl安裝的。那我在這也通過perl安裝吧。
根據http://pear.php.net/package/PHP_Beautifier/download 上面提供的安裝方法,在命令中輸入:
- pear install PHP_Beautifier-0.1.15
pear install PHP_Beautifier-0.1.15
安裝失敗。通過上面文章中介紹的命令:pear install --alldeps PHP_Beautifier-0.1.15,安裝失敗。如下圖所示:
這中間又google,找不到任何有價值的資料。沒辦法,只有自己研究一下了。根據錯誤,找到文件,發現錯誤的一行有個fsockopen函數,如下圖所示:
直覺告訴我,也許是我的PHP環境限制了該函數。找到php.ini,找到:disable_functions = escapeshellcmd,escapeshellarg,fsockopen ,果然如此,去掉fsockopen,重啟apache,通過官網提供的命令,安裝成功。
安裝sublime text的PhpBeautifier插件
通過sublime text的package控制器直接安裝 或者在https://github.com/SublimeText/PhpBeautifier 下載PhpBeautifier,解壓到sublime text/data/package目錄下
下面以我安裝的路徑d:\php\php5為例
- # 修正出現 Cannot redeclare class Config 錯誤
- # 切進 PHP_Beautifier 的 Filter 目錄
- cd /Applications/XAMPP/xamppfiles/lib/php/pear/PHP/Beautifier/Filter
- # 打開下面兩個檔案
- - Pear.filter.php
- - phpBB.filter.php
- # 注解掉下句這句
- require_once ('PEAR/Config.php');
# 修正出現 Cannot redeclare class Config 錯誤 # 切進 PHP_Beautifier 的 Filter 目錄 cd /Applications/XAMPP/xamppfiles/lib/php/pear/PHP/Beautifier/Filter # 打開下面兩個檔案 - Pear.filter.php - phpBB.filter.php # 注解掉下句這句 require_once ('PEAR/Config.php');這個文件路徑是在:d:\php\php5/pear/PHP/Beautifier/Filter 目錄,根據上面要求修改
修改php_beautifier.py文件也費了一點時間,主要是下面這句
- cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"
cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"浪費一些時間后,靜心研究這個目錄。根據這個目錄的規律,應該是在我的d:\php\php5這個目錄下。所以我改的內容如下:
- cmd = 'D:\\php\\PHP5\\php_beautifier'
cmd = 'D:\\php\\PHP5\\php_beautifier'但是仍無法格式化PHP文件。
查看一下D:\php\php5這個目錄下的php_beautifier是什么東東,進去看了才知道,原來是個批處理文件:php_beautifier.bat。於是我將內容改為:
- cmd = 'D:\\php\\PHP5\\php_beautifier.bat'
cmd = 'D:\\php\\PHP5\\php_beautifier.bat'
奇跡出現了。終於可以通過phpbeautifier插件集成到sublime text中用來格式化PHP代碼。
資源下載
本資源包括
1、go-pear.phar
2、sublime text 2插件
3、命令行格式化工具及實例
下載地址:http://download.csdn.net/detail/zm2714/4652014
總結
早就聽說過perl的大名,但是從未接觸過並學習perl的相關知識。這次由於將phpbeautifier插件集成到sublime text中,對perl也有了進一步了解。對於PHP開發人員,了解、掌握並熟練運用perl的模塊解決問題,也是非常有必要的。對於我本人,掌握php、Python、我想還需要掌握perl了。我將簡稱為3P吧。
本篇內容可能有點疏漏,由於是昨晚實踐的結果,今天表述上可能有些偏誤。我想在以后看此文時,站在用戶角度再來完善本篇內容。本人博客每篇內容都不是完成后就是那個樣子,在回頭看時,對於那些缺陷、或者有更好的解決方案、更好的描述或表達時,我都會時時更新。一起進步吧~