天天看點

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

這兩天一直糾結兩款編輯器——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,如下圖所示:

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

重建索引後,盡然可以使用鍵盤按鍵與滑鼠結合來進行函數追蹤功能了,但是要按ctrl+shift後,在按滑鼠左鍵進行函數追蹤。可我想直接按ctrl與滑鼠左鍵。通過進一步摸索,發現增加了mouse選項,如下圖所示:

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

于是在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
           

這如同在我絕望 中給了我動力。按上面要求更改插件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
           

六、失敗

安裝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] : 

直接回車,出現以下菜單:

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

如果選擇1,更改目錄,則會出現錯誤。錯誤如下所示:

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

隻有重新輸入指令:

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 --alldeps PHP_Beautifier-0.1.15,安裝失敗。如下圖所示:

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

這中間又google,找不到任何有價值的資料。沒辦法,隻有自己研究一下了。根據錯誤,找到檔案,發現錯誤的一行有個fsockopen函數,如下圖所示:

sublime Text 2支援格式化PHP-安裝PhpBeautifier插件過程經曆

直覺告訴我,也許是我的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');
           

這個檔案路徑是在:d:\php\php5/pear/PHP/Beautifier/Filter 目錄,根據上面要求修改

修改php_beautifier.py檔案也費了一點時間,主要是下面這句

cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"
           

浪費一些時間後,靜心研究這個目錄。根據這個目錄的規律,應該是在我的d:\php\php5這個目錄下。是以我改的内容如下:

cmd = 'D:\\php\\PHP5\\php_beautifier'
           

但是仍無法格式化PHP檔案。

檢視一下D:\php\php5這個目錄下的php_beautifier是什麼東東,進去看了才知道,原來是個批處理檔案: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吧。

本篇内容可能有點疏漏,由于是昨晚實踐的結果,今天表述上可能有些偏誤。我想在以後看此文時,站在使用者角度再來完善本篇内容。本人部落格每篇内容都不是完成後就是那個樣子,在回頭看時,對于那些缺陷、或者有更好的解決方案、更好的描述或表達時,我都會時時更新。一起進步吧~