IDE---Gvim之ubuntu下配置php的ide開發工具

Vim本質上只是一個編輯器。但只要配合一些適當的插件,vim也能變成一個全功能的IDE。筆者使用vim已經有挺長一段時間了,通過反覆的試驗,配置了一個高效的PHP開發環境,實爲居家旅行、謀財害命、殺人越貨必備之良品。

安裝Vim GVIM

普通方式安裝javascript

sudo apt-get install vimphp

sudo apt-get install vim-gtk vim-doc cscopehtml

編譯安裝7.3穩定版:www.kukaka.org/home/showonews/344java

編譯安裝7.3最新版:www.kukaka.org/home/showonews/370vim

卸載Vim GVIM

普通安裝方式卸載eclipse

sudo apt-get remove --purge vim (--purge 是徹底刪除,會連配置文件一塊兒刪除)編輯器

sudo apt-get remove --purge vim-gtk vim-doc cscopesvn

sudo apt-get clean函數

編譯安裝方式卸載工具

進入以前編譯安裝時的目錄:make uninstall

開始配置vim

Linux 下 vim 默認配置文件 /etc/vim/vimrc

用戶默認配置文件 ~/.vimrc

若是想一次配置,全部用戶都能使用,那就修改 /etc/vim/vimrc,若是隻想當前用戶可使用,則修改 ~/.vimrc

針對開發配置
  1. au FileType php,c,java,javascript,html,htm,smarty call SetOption()
  2. function! SetOption()
  3.   set expandtab    " 使用空格代替tab
  4.   set shiftwidth=4 " 設定 << 和 >> 命令移動時的寬度爲 4
  5.   set tabstop=4    " 用4個空格代替1個tab
  6.   set sts=4        " 設置softtabstop 爲 4,輸入tab後就跳了4格.
  7.   set cindent      " C語言方式縮進
  8.   set smartindent  " 智能縮進
  9.   set autoindent   " 自動縮進
  10.   set smarttab     " 只在行首用tab,其餘地方的tab都用空格代替
  11.   set showmatch    " 在輸入括號時光標會短暫地跳到與之相匹配的括號處
  12.   " set fdm=indent " 代碼摺疊
  13.   set lbr
  14.   set tw=500
  15.   set wrap         " 自動換行
  16. endfunction

個性化定製標籤

Gvim 標籤訂製
  1. set guitablabel=%{ShortTabLabel()}
  2. function ShortTabLabel ()
  3.   let bufnrlist = tabpagebuflist (v:lnum)
  4.   let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])
  5.   let filename = fnamemodify (label, ':t')
  6.   return filename
  7. endfunction
Vim 標籤訂製
  1. set tabline=%!MyTabLine()
  2. function MyTabLine()
  3.   let s = ''
  4.   for i in range(tabpagenr('$'))
  5.     " 選擇高亮
  6.     if i + 1 == tabpagenr()
  7.       let s .= '%#TabLineSel#'
  8.     else
  9.       let s .= '%#TabLine#'
  10.     endif
  11.     " 設置標籤頁號 (用於鼠標點擊)
  12.     let s .= '%' . (i + 1) . 'T'
  13.     " MyTabLabel() 提供完整路徑標籤 MyShortTabLabel 提供文件名標籤
  14.     let s .= ' %{MyShortTabLabel(' . (i + 1) . ')} '
  15.   endfor
  16.   " 最後一個標籤頁以後用 TabLineFill 填充並復位標籤頁號
  17.   let s .= '%#TabLineFill#%T'
  18.   " 右對齊用於關閉當前標籤頁的標籤
  19.   if tabpagenr('$') > 1
  20.     let s .= '%=%#TabLine#%999Xclose'
  21.   endif
  22.   return s
  23. endfunction
  24. " 文件名標籤
  25. function MyShortTabLabel(n)
  26.   let buflist = tabpagebuflist(a:n)
  27.   let label = bufname (buflist[tabpagewinnr (a:n) -1])
  28.   let filename = fnamemodify (label, ':t')
  29.   return filename
  30. endfunction
  31. "完整路徑標籤
  32. function MyTabLabel(n)
  33.   let buflist = tabpagebuflist(a:n)
  34.   let winnr = tabpagewinnr(a:n)
  35.   return bufname(buflist[winnr - 1])
  36. endfunction
  37. " vim 標籤樣式
  38. "  TabLineFill  tab pages line, where there are no labels
  39. hi TabLineFill term=none
  40. hi TabLineFill ctermfg=DarkGrey
  41. hi TabLineFill guifg=#777777
  42. "  TabLineSel   tab pages line, active tab page label
  43. hi TabLineSel term=inverse
  44. hi TabLineSel cterm=none ctermfg=yellow ctermbg=Black
  45. hi TabLineSel gui=none guifg=yellow guibg=Black
  46.  
  47. " Develop editing options
  48. au FileType vim setl expandtab
  49. au FileType vim setl shiftwidth=2
  50. au FileType vim setl tabstop=2

個性化定製狀態欄

Statusline
  1. " 顯示狀態欄(默認值爲 1,沒法顯示狀態欄)
  2. set laststatus=2
  3. " Format the statusline
  4. set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}E5%h\ \ \ Line:\ %l/%L:%c
  5.  
  6. function! CurDir()
  7.     let curdir = substitute(getcwd(), '/Users/amir/'"~/""g")
  8.     return curdir
  9. endfunction

用NERDTree實現目錄和文件導航

在進行PHP應用開發時,同時編輯多個文件是很正常的事情。因此必須有一個方便的目錄導航工具,以便在目錄結構間快速切換,找到須要編輯的文件。

vim中提供該類功能的插件不少,比較知名的有project、winmanager等。但筆者我的認爲最好用的仍是The NERD Tree這個插件。NERDTree不但能夠顯示完整的目錄樹結構,還能夠將任何一個目錄設置爲根目錄。而且提供了目錄導航的書籤功能,可謂很是方便。

下載地址:http://www.vim.org/scripts/script.php?script_id=1658

下載文件:NERD_tree.zip

解壓縮時,要把壓縮包中的目錄結構完整的解壓縮到 ~/.vim/ 目錄中。完成後,應該分別找到  ~/.vim/doc/NERD_tree.txt 文件和  ~/.vim/plugin/NERD_tree.vim 文件。而後在vim中輸入命令: helptags  ~/.vim/doc,將NERDTree的幫助文檔添加到vim中。

如今,命令模式下輸入:NERDTreeToggle即可打開或關閉NERDTree

注意:使用過程當中,你可能會由於刪除一個文件夾,而沒有刪除這個文件夾所綁定的標籤,出現如下錯誤

NERDTree: 1 invalid bookmarks w...

解決:打開~/.vim/.NERDTreeBookmarks,刪除裏面無用的標籤便可。

用taglist實現代碼導航

解決了目錄和文件導航問題,咱們還要爲代碼之間的跳轉提供輔助手段,taglist就是這樣一個插件。taglist能夠列出已打開文件中定義的函數常量,甚至變量

下載地址:http://www.vim.org/scripts/script.php?script_id=273

下載文件:taglist_45.zip

壓縮包須要完整解壓縮到 ~/.vim/ 目錄,而且用:helptags ~/.vim/doc命令索引taglist插件的幫助文檔。

taglist插件須要依賴ctags程序才能工做。目前經常使用的ctags版本是Exuberant Ctags

安裝ctags

下載地址:http://ctags.sourceforge.net/

下載文件:ctags-5.8.tar.gz

解壓ctags:tar -zxcf ctags-5.8.tar.gz

進入ctags:cd ctags-5.8

打上PHP補丁(不然按下ctrl+n,連基本的function include等函數都出不來):

wget http://svn.bitflux.ch/repos/public/misc/ctags-php5.patch

patch php.c ctags-php5.patch

編譯安裝:

./configure

make

sudo make install

通過這三步後就生成 /usr/local/bin/ctags

繼續回來修改~/.vim/plugin/taglist.vim

在 if !exists('loaded_taglist')上面加入

let Tlist_Ctags_Cmd="/usr/local/bin/ctags"

或加在~/.vim/.vimrc文件,只要能讓vim開啓時加載的*.vim文件便可

此時Ctags和Taglist已經結合起來,再用vim編輯php文件, 執行 :TlistToggle 就會在右邊出現一個當前文件的 類 函數 變量 等東西

還記得咱們使用netbeans eclipse等大型開發工具的時候嗎,按着 ctrl + 鼠標左鍵 點擊一個函數,就會跳轉到該函數定義處,他其實也是使用的tags跟蹤跳轉,只不過他們會自動去掃描源碼目錄,生成一個tags文件(是否曾經爲netbeans沒完沒了的掃描崩潰過?),而vim須要咱們本身去生成這個tags。這個功能對代碼跟蹤很是有好處,下面咱們就來實現他

在相應的源碼目錄運行ctags -R產生相應的tags文件

cd ~/www/mysite

ctags -R *

打開vim

:cd ~/www/mysite

:set tags=tags

如今,咱們設置好了tags選項,接下來咱們使用它,咱們先來查找一個名叫make_html的方法:

方法一:

:tag make_html

若是make_html方法的定義只存在一個文件中你會看到VIM打開了該文件,並把光標定位到make_html方法所在行上。

若是make_html方法的定義存在多個文件中,會提示:

找到 tag:1 / 14 或更多

這時咱們能夠列出保護這個方法的全部文件

:tselect        "顯示列表

這時會列出全部文件,讓咱們選擇一個文件打開

# pri kind tag                文件
> 1 F C f         make_html         function/my_function.php
   2 F     f         make_html         xxx/xxx.php
鍵入數字和回車(empty cacels) :

根據提示輸入咱們想查看的文件對應的序號而後回車就能夠了。

:tn       "顯示後一個tag到的PHP文件
:tp       "顯示前一個tag到的PHP文件
:tags   "顯示標籤棧

咱們還能夠把鼠標停留在想要跳轉的 類 函數 變量 上面,而後按 ctrl + ] ,回到原來位置是 ctrl + t

方法二:

把鼠標停留在 make_html 上面,而後按ctrl+],怎麼樣,和直接輸入:tag make_html 是如出一轍的吧

如今,咱們已經跳轉到make_html函數的定義處,看到了函數的詳細定義,明確知道如何使用這個函數了,那怎麼回到原來的位置呢,答案是按 ctrl+o 返回。

小技巧:

細心的朋友可能會發現,做爲一個強大的IDE,還應該解決如下幾個問題:

1.左邊目錄樹結構不變。

2.代碼塊註釋,刪除註釋。

3.代碼塊縮進,刪除縮進。

解決問題

1.通常狀況下,咱們會以標籤的方式打開一個文件(讓光標停留在一個要打開的文件上,按 t ),此時左邊沒有目錄樹,輸入 :NERDTreeToggle打開目錄樹,此目錄樹爲新建的,和第一個文件的目錄樹結構不一樣,這不符合咱們普通IDE的習慣,還記得咱們用 Netbeans之類的編輯器嗎?左邊的目錄書結構一直沒變,實際上是全部文件共享一顆樹的緣由,NERDTree也容許咱們共享樹,命令是 :NERDTreeMirror,結合Tlist,個人快捷方式定義以下:

 
  1. map  :NERDTreeToggle
  2. map  :TlistToggle
  3. map  t :NERDTreeMirrorgTwgtw

如今,看看我寫代碼的習慣:

首先,打開vi編輯器。

F2 打開目錄樹

把光標停留在須要創建標籤的文件夾上, :Bookmark 收藏名。

之後只須要 打開目錄樹,Shift+B打開收藏標籤,雙擊一下想打開的標籤,再按一次Shift+B關閉收藏標籤。

鼠標選中須要打開的文件,按 F4 快捷鍵 ,此時,vi會先執行 t (標籤方式打開文件),再執行:NERDTreeMirror共享第一棵樹,後面一串是爲了保持以前打開的文件便籤仍是顯示文件名用的。

怎麼樣,效果和大型IDE差很少了吧。

2.代碼塊註釋,刪除註釋

註釋:ctrl+v 進入列編輯模式,向上或向下移動光標,把須要註釋的行的開頭標記起來,而後按大寫的I,再插入註釋符,好比"//",再按Esc,就會所有註釋了。

刪除:ctrl+v 進入列編輯模式,選中註釋部分,而後按d,就會刪除註釋符號。

3.代碼塊縮進,刪除縮進。

縮進:選擇須要縮進的代碼行(鍵盤鼠標均可以,選中了就行),>(shift+.)

刪除:選擇須要縮進的代碼行(鍵盤鼠標均可以,選中了就行),<(shift+,)

下面是我一直使用的配置文件,有興趣的朋友能夠參考一下

.vimrc

下面兩個放在~/.vim/plugin/下

MY_keymap.vim   鍵盤映射

MY_taglist.vim    taglist插件配置

相關文章
相關標籤/搜索