標籤彙整: vim

show bom and fileencoding on vim statuline

這樣就看得到了…………..
一直覺得自已不會遇到BOM
不過最近遇到了 ….

~/.vimrc
[sourcecode language=’text’]
set ls=2
set statusline=%<%f %h%m%r%=%{"[".(&fenc==""?&enc:&fenc).((exists("+bomb") && &bomb)?",B":"")."] "}%k %-14.(%l,%c%V%) %P highlight StatusLine ctermfg=blue ctermbg=black [/sourcecode] Ref. http://vim.wikia.com/wiki/Show_fileencoding_and_bomb_in_the_status_line

vim自動補全(autocomplete)

在vim7 後有Omni completion這個功能….
星期五在看othree blog
看到他寫的vim 自動補全

之前看的時後一直沒有太大的衝勁驅始我去用這個功能,也就不放在心上..

而星期五不知道怎麼樣心血來潮..
就仔細看了一下他寫的部份..自已try 了一下………

所以稍為筆記一下….

目前看來是須要裝…
supertab, 和抓phpcomplete.vim(for php)這個檔案來用

supertab 就是用tab 來觸發omni 的自動完成
phpcomplete.vim 就是for php 的自動完成的範本….(不知道這樣形容對不對) PS:這個在$VIMRUNTIME/autoload 下就有了…….

我在vimrc 加入了以下設定
[sourcecode language=’text’]”這是我設定自動完成的選項…基本上有四種…可以看一下vim doc 的options 有寫到..
set completeopt=longest,menu
“這是快捷鍵…..不然每次按^x ^o 很麻煩..
imap [/sourcecode]

使用方法就是….
開xxx.php後
先^L 然後就會啟動omni 了
接下來按tab 就會自動補齊了…..

REF:
http://wiki.geckos.cn/index.php/Vim%E4%B8%AD%E7%9A%84%E4%BB%A3%E7%A0%81%E8%A1%A5%E5%85%A8
http://blog.othree.net/log/vim/

在vim 下debug php (use xdebug)

1.VIM 的部份
在你的vim 下
:version
看看有沒有+python 和+sign
沒的話….
把vim 重裝…
#make install WITH_PYTHON
這樣應該就會有了…

2.安裝Script
去這個地方抓
http://www.vim.org/scripts/script.php?script_id=1929
放到/usr/local/share/vim/vim71/plugin/底下…

3.安裝xdebug
#cd /usr/ports/devel/php-xdebug
#make install
#vim /usr/local/etc/php.ini
[sourcecode language=’text’]
[Zend]
zend_extension = /full/path/to/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_host = localhost
[/sourcecode]
加入上面這幾行..
看一下phpinfo 有沒有出現xdebug

4.
然後開browser run你的url 後面的?XDEBUG_SESSION_START=1 這是重點..
例如 http://example.com/index.php?XDEBUG_SESSION_START=1

5.
#vim xxx.php
然後按F5
下面就會出現
waiting for a new connection on port 9000 for 5 seconds
然後這時後你有五秒去開你的url
例如
http://example.com/xxx.php
再回去看你的vim 就開始在debug ……….

到這邊就差不多了…

PS
1.
如果phpinfo 告訴你
XDEBUG NOT LOADED AS ZEND EXTENSION
那這樣是沒辦法…..去debug 的雖然可以F5 去跑..
不過step over 之類的都不能用…

2.
因為…我在vim 下按 F2 F3 會轉換大小寫…和他的function key 有衝到…
去看debugger.vim 下..
他有這段
map <Leader>dr :python debugger_resize()<cr>
map <Leader>di :python debugger_command(‘step_into’)<cr>
map <Leader>do :python debugger_command(‘step_over’)<cr>
map <Leader>dt :python debugger_command(‘step_out’)<cr>

<Leader> =
所以我step over 是用 do
以此類推..

希望對有用vim 的同好有幫助 。
^^
我終於可以脫離”print 大法”了…..

Ref.
http://2bits.com/articles/using-vim-and-xdebug-dbgp-for-debugging-drupal-or-any-php-application.html
How do debug php with vim and xdebug on linux

VIM — Matching a line break跨行比對&Non-Greedy

Matching a line bread Doc
Non-Greedy Reference

<input name=”inst6″ type=”radio” value=”4″>
<a href=”javascript:;” onMouseOver=”MM_swapImage(‘q2′,”,’images/qa_p_HTC%20TyTN.jpg’,1)” onMouseOut=”MM_swapImgRestore()”><img src=”images/0-HTC%20TyTN.gif” name=”htc” width=”100″ height=”15″ border=”0″ id=”htc”></a>

因為想讓input radio 也有onMouseOver 的效果
所以想把<a href=”javascript:;” onMouseOver=”MM_swapImage(‘q2′,”,’images/qa_p_HTC%20TyTN.jpg’,1)” onMouseOut=”MM_swapImgRestore()”>也加在<input name=”inst6″ type=”radio” value=”4″>這個tag 的前面…然後後面再加</a>
因為很多行我不想一行一行傻傻的改所以…..就用regexp 了…

這邊包含了兩個技巧一個是non-greedy,一個是 Matching a line break
(<input name=”inst[0-9]*.*>)(_s+)(<a href=”javascript:;.{-}>)/31</a>3/gc

這樣就可以全部換掉了…Orz
我沒仔細檢查過,剛剛看replace 完後是很work…..
::-p:

The plugin of VIM =>taglist

要裝taglist 之前會用到
ctags
所以乖乖的先去裝上吧

# cd /usr/ports/devel/ctags/
# make install clean

然後就可以去抓taglist
然後去你vim的資料夾底下解壓就可以
像我的是vim7
# cd /usr/local/share/vim/vim7/
# unzip taglist_XXX.zip

基本上這樣就裝好了
然後你可以參考一下我的.vimrc的配置如下

” FOR Tlist
let Tlist_Ctags_Cmd = “/usr/local/bin/exctags” ” FOR BSD
let Tlist_Auto_Open=1 ” 開啟vim/gvim 的時自動打開 Tlist
let Tlist_Auto_Update=1 ” 自動更新目前的 tag 列表
let Tlist_Enable_Fold_Column=1
let Tlist_Sort_Type = “name” ” 顯示的 tag 排序方式:name/order
let Tlist_WinWidth = 30 ” Tlist 視窗的寬度
let Tlist_Show_One_File = 0 ” 是否只顯示目前文件的 tag
let Tlist_Exit_OnlyWindow = 1 ” 關閉打開的文件的同時,也關閉taglist視窗
let Tlist_Use_SingleClick = 1
map <F8> :Tlist<CR>:<CR> “按F8 自動打開Tlist
map <F9> :wincmd p<CR> “兩個視窗切換