轉載自:http://cc.ecjtu.net/posts/vim-php-ide-ubuntu-NERDtree-taglist-AutoComplPop-ZenCoding
今天在ubuntu下將VIM配置成了PHP的IDE,用到了NERDtree,taglist,AutoComplPop,ZenCoding插件和一些
配置,具體步驟記錄下:
安裝vim:更新下源,sudo apt-get update ,然后在下載安裝vim,sudo apt-get install vim。
設置在上篇文章:這里有介紹
上述設置啟用了格式化高亮、行號顯示,以及括號匹配、自動縮進等編輯功能,對於大多數情況都可以獲得理
想的編輯體驗。不過此時對.php文件的支持還不完善,需要下載專門的php插件。
將其中的php.vim復制到$VIM\vimfiles\syntax目錄中即可。$VIM根據不同系統不同,我的是ubuntu,執行
whereis vim :
root@Cyrec-desktop:/usr/share/vim/vimfiles# whereis vim
vim: /usr/bin/vim /usr/bin/vim.basic /etc/vim /usr/share/vim /usr/share/man/man1/vim.1.gz 可以找到vim安裝
在/usr/share/vim中,下面的/usr/share/vim都用$VIM代替。
一開始在設置里更換主題一直無法顯示,后來找到問題的原因:
一般的Linux發行版默認的終端都是16色的,但事實上幾乎所有的終端都支持256色終端。
1.將Terminal設為Xterm模式:編輯->配置文件首選項->顏色 設置為自定義,內置方案選擇XTerm.
2.vimrc里設置:set t_Co=256
然后就可以隨便color自己喜歡到主題了。我是用的:colorscheme desert。
打造PHP IDE
IDE左側是目錄導航,中間是編輯區域,而右側則是方法列表,用於在已經打開的文件中快速跳轉。在編輯區
域按下CTRL+X鍵,還會顯示已打開文件的列表。
其他諸如自動補全、代碼模板等功能,都應有盡有。看過了漂亮的截圖,我們就來一步步打造PHP IDE吧。
用NERDTree實現目錄導航
在進行PHP應用開發時,同時編輯多個文件是很正常的事情。所以必須有一個方便的目錄導航工具,以便在目
錄結構間快速切換,找到需要編輯的文件。
vim中提供該類功能的插件很多,比較知名的有project、winmanager等。但筆者個人認為最好用的還是The
NERD Tree這個插件。NERDTree不但可以顯示完整的目錄樹結構,還可以將任何一個目錄設置為根目錄。並
且提供了目錄導航的書簽功能,可謂非常方便。
解壓縮時,要把壓縮包中的目錄結構完整的解壓縮到$VIM\vimfiles目錄中。完成后,應該分別找到$VIM
\vimfiles\doc\NERD_tree.txt文件和$VIM\vimfiles\plugin\NERD_tree.vim文件。然后在vim中輸入命令:helptags
$VIM\vimfiles\doc,將NERDTree的幫助文檔添加到vim中。
最后在_vimrc添加如下內容:” NERDTree
map :NERDTreeToggle
重啟vim后,按下F8鍵,就可以在左側看到一個目錄樹了。在目錄樹窗口中按下?鍵可以查看詳細的幫助信息
最常用的操作鍵有:
按鍵
作用
C(大寫C鍵)
將光標所在目錄設置為根目錄
u(小寫u鍵)
轉到上一級目錄
o(小寫o鍵,不是“零”)
展開(或折疊)光標所在目錄的子目錄。如果光標所在位置是一個文件,則在編輯窗口中打開該文件
此外在目錄樹窗口中輸入目錄:Bookmark 收藏名還可以將光標所在目錄添加到收藏夾中。下次使
用:BookmarkToRoot 收藏名可以直接轉到該目錄,並且以該目錄作為根目錄。更多命令可以參考NERDTree的
幫助文檔。
用taglist實現代碼導航
解決了目錄和文件導航問題,我們還要為代碼之間的跳轉提供輔助手段,taglist就是這樣一個插件。taglist可以
列出已打開文件中定義的類、函數、常量,甚至變量。
壓縮包需要完整解壓縮到$VIM\vimfiles目錄,並且用:helptags $VIM\vimfiles\doc命令索引taglist插件的幫助文
檔。taglist插件需要依賴ctags程序才能工作。目前常用的ctags版本是Exuberant Ctags。
sudo apt-get install ctags,然后whereis ctags,找到ctags: /usr/bin/ctags 這目錄下的ctags。
將ctags復制到$VIM\vim72目錄中即可。
最后在/etc/vim/vimrc添加下列內容,設置好taglist插件:
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” => Plugin configuration
“”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"”"
” taglist
let Tlist_Auto_Highlight_Tag = 1
let Tlist_Auto_Open = 1
let Tlist_Auto_Update = 1
let Tlist_Close_On_Select = 0
let Tlist_Compact_Format = 0
let Tlist_Display_Prototype = 0
let Tlist_Display_Tag_Scope = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Exit_OnlyWindow = 0
let Tlist_File_Fold_Auto_Close = 0
let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Hightlight_Tag_On_BufEnter = 1
let Tlist_Inc_Winwidth = 0
利用ctrl+ww來進行兩個窗口之間的切換。
在taglist窗口中,可以使用下面的快捷鍵: 跳到光標下tag所定義的位置,用鼠標雙擊此tag功能也一樣
o 在一個新打開的窗口中顯示光標下tag
顯示光標下tag的原型定義
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出現順序排序間切換
x taglist窗口放大和縮小,方便查看較長的tag
+ 打開一個折疊,同zo
- 將tag折疊起來,同zc
* 打開所有的折疊,同zR
= 將所有tag折疊起來,同zM
[[ 跳到前一個文件
]] 跳到后一個文件
q 關閉taglist窗口在vimrc中加下面設置可以按F6打開關閉taglist"函數和變量列表
map :TlistToggle
用AutoComplPop實現代碼自動提示
點擊下面網址,進去下載autocomplpop插件
下載的是一個zip文件,解壓后會有三個文件夾,分別是autoload,doc,plugin。到Vim的根目錄下,找到名字
和這三個一樣的文件夾。不同系統目錄位置不同。我的fedora是/usr/share/vim/vimfiles
按照文件夾對應的把里面的acp.vim和其他的什么文件都copy過去。然后重啟Vim。這時候可能會有錯誤提示
Error detected while processing /home/carlos/.vim/plugin/acp.vim:
line 13:
***** L9 library must be installed! *****
這是插件放出的一個錯誤提示,查看plugin里的acp.vim可以看到。是缺少L9 library庫。這個也是需要下載的。地址在下面
下載下來,它也是一個插件形式,以同樣的方式copy到Vim目錄下。
安裝完后就可以了。
再就是這個插件默認是沒有設置php自動補全的,可以設置一個PHP函數字典,讓其根據字典的內容進行自動
補全。這個是一個PHP字典:.編輯配置文件.vimrc,在文件后面加上下面的代碼au FileType php setlocal dict+=/etc/vim/php_funclist.txt后面跟着的是字典的目錄地址,根據自己的需求存放在一個地方就好。我是放到了/etc/vim/目錄下。
php_funclist下載:php_funclist.tar.gz
再附加一些自動補全配置(加入到vimrc中):
php 中 一般是會在 "$", "->", "::" 后需要出現自動補全,在 .vimrc 中加入以下代碼:if !exists('g:AutoComplPop_Behavior')
let g:AutoComplPop_Behavior = {}
let g:AutoComplPop_Behavior['php'] = []
call add(g:AutoComplPop_Behavior['php'], {
\ 'command' : "\\",
\ 'pattern' : printf('\(->\|::\|\$\)\k\{%d,}$', 0),
\ 'repeat' : 0,
\})
endif
在 Vim 中實現括號自動補全:
:inoremap ( ()i
:inoremap ) =ClosePair(')')
:inoremap { {}i
:inoremap } =ClosePair('}')
:inoremap [ []i
:inoremap ] =ClosePair(']')
:inoremap < <>i
:inoremap > =ClosePair('>')
function ClosePair(char) if getline('.')[col('.') - 1] == a:char
return "\"
else
return a:char
endif
endf
這樣,寫代碼的時候不再擔心會丟掉右邊的括號了,尤其是函數嵌套的時候。
安裝ZenCoding插件
到http://github.com/mattn/zencoding-vim下載壓縮包,然后解壓到vimfiles文件夾,和上面一樣,將doc plugin
autoload三個文件夾放到相應文件夾下。然后在vim中輸入helptags /etc/vim/doc 導入幫助文件.就OK了。
zencoing可以很方便的寫html,一些常用命令:
輸入 div>p#foo$*3>a 這樣的縮寫,然后按 ctrl + y + , 來展開(注意那個逗號),展開后它應該是這個樣子的
多行縮寫
輸入如下:test1
test2
test3
然后進入行選擇模式,選中這三行按 ctrl + y + ,,接着它會提示你要使用的tag名稱,TAG: 輸入 ‘ul>li* 會變成如下的樣子
- test1
- test2
- test3
如果是輸入blockquote,那么會變成這樣
test1
test2
test3
跳轉到下一個標簽編輯位置
輸入ctrl + y + n 進入插入模式
跳轉到上一個標簽編輯位置
輸入ctrl + y + N 進入插入模式
更新標簽中圖片大小
假如有以下內容
光標移動到img標簽上,按下ctrl + y + i 該插件會自動獲取foo.png的大小並插入寬高屬性 看起來像這個樣子
切換注釋
如有以下段
hello world
光標移動到此段落,輸入ctrl + y + /變成
再次輸入則還原
生成url連接
將光標移動到一個url上,如:http://www.google.com/
輸入ctrl + y + a 它會自動獲取url頁面的標題並生成一個連接
配置OK了,最后上張帥氣的vim圖: