Sublime text追蹤函數插件:ctags 和php代碼格式化


轉自: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,找到了這樣一篇資料:

 

  1. 在 Sublime Text 裡的格式化 PHP 代碼   
  2.   
  3. 由於某些原因,需要處理一堆比較舊的PHP代碼,  
  4. 而且編程風格也不統一,所以需要先統一後再處理會比較方便.  
  5. 不過於由 Pear 的東西有點參差不齊.所以整合到 Editor 內的過程也不太順利.  
  6. 來記錄一下.  
  7.   
  8.  # 更新已有的 Pear 套件  
  9.  # 之後安裝 PHP_Beautifier  
  10.  # 再列出使用方法  
  11.  cd /Applications/XAMPP/xamppfiles/bin  
  12.  sudo ./pear update-channels  
  13.  sudo ./pear upgrade-all  
  14.  sudo ./pear install --alldeps PHP_Beautifier-0.1.15  
  15.  ./php_beautifier --help  
  16.     
  17.  # 修正出現 Cannot redeclare class Config 錯誤  
  18.  # 切進 PHP_Beautifier 的 Filter 目錄  
  19.  cd /Applications/XAMPP/xamppfiles/lib/php/pear/PHP/Beautifier/Filter  
  20.     
  21.  # 打開下面兩個檔案  
  22.  - Pear.filter.php  
  23.  - phpBB.filter.php  
  24.     
  25.  # 注解掉下句這句  
  26.  require_once ('PEAR/Config.php');  
  27.     
  28.  # 安裝 Sublime Text 2 的 PhpBeautifier 套件  
  29.  cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/  
  30.  git clone https://github.com/SublimeText/PhpBeautifier.git PhpBeautifier  
  31.  cd PhpBeautifier/  
  32.  vim php_beautifier.py  
  33.     
  34.      indent = "-t"  
  35.      cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"  
  36.     
  37.  # 最後在需要美化/格式化的代碼編輯界面裡就可以格式化了  
  38.  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

相關內容如下:

 

  1. Installation  
  2. Install php-pear and php-cli with your package manager :  
  3.   
  4. •php-pear & php5-cli with Debian  
  5. •php-pear & php with Archlinux  
  6. Install php beautifier from pear channel : sudo pear install --alldeps channel://pear.php.net/php_beautifier-0.1.15  
  7.   
  8. 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 上面提供的安裝方法,在命令中輸入:

 

  1. 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為例

 

  1. # 修正出現 Cannot redeclare class Config 錯誤  
  2.  # 切進 PHP_Beautifier 的 Filter 目錄  
  3.  cd /Applications/XAMPP/xamppfiles/lib/php/pear/PHP/Beautifier/Filter  
  4.     
  5.  # 打開下面兩個檔案  
  6.  - Pear.filter.php  
  7.  - phpBB.filter.php  
  8.     
  9.  # 注解掉下句這句  
  10.  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文件也費了一點時間,主要是下面這句

 

  1. cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"  
cmd = "/Applications/XAMPP/xamppfiles/bin/php_beautifier"
浪費一些時間后,靜心研究這個目錄。根據這個目錄的規律,應該是在我的d:\php\php5這個目錄下。所以我改的內容如下:

 

 

[python] view plain copy
print ? 在CODE上查看代碼片 派生到我的代碼片
  1. cmd = 'D:\\php\\PHP5\\php_beautifier'  
cmd = 'D:\\php\\PHP5\\php_beautifier'
但是仍無法格式化PHP文件。

 

查看一下D:\php\php5這個目錄下的php_beautifier是什么東東,進去看了才知道,原來是個批處理文件:php_beautifier.bat。於是我將內容改為:

 

[python] view plain copy
print ? 在CODE上查看代碼片 派生到我的代碼片
  1. 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吧。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM