Vim For PHP IDE

参考地址:http://cc.ecjtu.net/posts/vim-php-ide-ubuntu-NERDtree-taglist-AutoComplPop-ZenCoding

用NERDTree实现目录导航

注:$VIM = ~/.vim/

在进行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/vimfiles/plugin/NERD_tree.vim文件。然后在vim中输入命令:helptags ~/.vim/doc,将NERDTree的帮助文档添加到vim中。

最后在.vimrc添加如下内容:

” NERDTree

map <F8> :NERDTreeToggle<CR>

特别注意的是> 和:之间一定要有空格,不然F8不可用,而且每次打开vim时会发生“找不到映射”的错误

重启vim后,按下F8键,就可以在左侧看到一个目录树了。在目录树窗口中按下?键可以查看详细的帮助信息

最常用的操作键有:

 按键 作用
 C(大写C键) 将光标所在目录设置为根目录
 u(小写u键) 转到上一级目录
 o(小写o键,不是“零”) 展开(或折叠)光标所在目录的子目录。如果光标所在位置是一个文件,则在编辑窗口中打开该文件

此外在目录树窗口中输入目录:Bookmark 收藏名还可以将光标所在目录添加到收藏夹中。下次使

:BookmarkToRoot 收藏名可以直接转到该目录,并且以该目录作为根目录。更多命令可以参考NERDTree的

帮助文档。


用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。

sudo apt-get install ctags,然后whereis ctags,找到ctags: /usr/bin/ctags 这目录下的ctags。

将ctags复制到$VIM/vim73目录中即可。

最后在/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窗口中,可以使用下面的快捷键:

<CR>       跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
<Space>  显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=            将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q            关闭taglist窗口
在vimrc中加下面设置可以按F12打开关闭taglist
"函数和变量列表
map <F12> :TlistToggle<CR>

用AutoComplPop实现代码自动提示

点击下面网址,进去下载autocomplpop插件

http://www.vim.org/scripts/script.php?script_id=1879

下载的是一个zip文件,放到~/.vim文件夹下,输入命令:

unzip autocomplpop

解压后会有三个文件夹,分别是autoload,doc,plugin。

再就是这个插件默认是没有设置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'   : "\<C-x>\<C-o>", 
            \   'pattern'   : printf('\(->\|::\|\$\)\k\{%d,}$', 0),
            \   'repeat'    : 0,
            \})
endif

在 Vim 中实现括号自动补全:

:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
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 + , 来展开(注意那个逗号),展开后它应该是这个样子的

 <div>
      <p id="foo1">
          <a href=""></a>
      </p>
      <p id="foo2">
          <a href=""></a>
      </p>
      <p id="foo3">
          <a href=""></a>
      </p>
  </div>
  • 多行缩写

输入如下:

test1
test2
test3

然后进入行选择模式,选中这三行按 ctrl + y + ,,接着它会提示你要使用的tag名称,TAG: 输入 ‘ul>li* 会变成如下的样子

<ul>
    <li>test1</li>
    <li>test2</li>
    <li>test3</li>
</ul>

如果是输入blockquote,那么会变成这样

  <blockquote>
      test1
      test2
      test3
  </blockquote>
  • 跳转到下一个标签编辑位置

输入ctrl + y + n 进入插入模式

  • 跳转到上一个标签编辑位置

输入ctrl + y + N 进入插入模式

  • 更新标签中图片大小

假如有以下内容

<img src="foo.png" />

光标移动到img标签上,按下ctrl + y + i 该插件会自动获取foo.png的大小并插入宽高属性 看起来像这个样子

<img src="foo.png" width="32" height="48" />
  • 切换注释

如有以下段

<div>
    hello world
</div>

光标移动到此段落,输入ctrl + y + /变成

<!-- <div>
    hello world
</div> -->

再次输入则还原

  • 生成url连接

将光标移动到一个url上,如:

http://www.google.com/

输入ctrl + y + a 它会自动获取url页面的标题并生成一个连接

<a href="http://www.google.com/"></a>

Zen Coding官方提供的速查手册(PDF):http://zen-coding.googlecode.com/files/ZenCodingCheatSheet.pdf



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值