Vim本质上只是一个编辑器。但只要配合一些适当的插件,vim也能变成一个全功能的IDE。笔者使用vim已经有挺长一段时间了,经过反复的试验,配置了一个高效的PHP开发环境,实为居家旅行、谋财害命、杀人越货必备之良品。

安装Vim GVIM

普通方式安装

sudo apt-get install vim

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

卸载Vim GVIM

普通安装方式卸载

sudo apt-get remove --purge vim (--purge 是完全删除,会连配置文件一起删除)

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

sudo apt-get clean

编译安装方式卸载

进入之前编译安装时的目录:make uninstall

开始配置vim

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

用户默认配置文件 ~/.vimrc

如果想一次配置,所有用户都能使用,那就修改 /etc/vim/vimrc,如果只想当前用户可以使用,则修改 ~/.vimrc

针对开发配置

auFileTypephp,c,java,javascript,html,htm,smarty call SetOption()

function! SetOption()

set expandtab    " 使用空格代替tab

set shiftwidth=4 " 设定 <> 命令移动时的宽度为 4

set tabstop=4    " 用4个空格代替1个tab

set sts=4        " 设置softtabstop 为 4,输入tab后就跳了4格.

set cindent      " C语言方式缩进

set smartindent  " 智能缩进

set autoindent   " 自动缩进

set smarttab     " 只在行首用tab,其他地方的tab都用空格代替

set showmatch    " 在输入括号时光标会短暂地跳到与之相匹配的括号处

" set fdm=indent "代码折叠

set lbr

set tw=500

set wrap         " 自动换行

endfunction

个性化定制标签

Gvim 标签定制

set guitablabel=%{ShortTabLabel()}

functionShortTabLabel ()

let bufnrlist = tabpagebuflist (v:lnum)

let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])

let filename = fnamemodify (label, ':t')

returnfilename

endfunction

Vim 标签定制

set tabline=%!MyTabLine()

functionMyTabLine()

let s = ''

fori in range(tabpagenr('$'))

" 选择高亮

ifi + 1 == tabpagenr()

let s .= '%#TabLineSel#'

else

let s .= '%#TabLine#'

endif

" 设置标签页号 (用于鼠标点击)

let s .= '%'. (i + 1) .'T'

" MyTabLabel() 提供完整路径标签 MyShortTabLabel 提供文件名标签

let s .= ' %{MyShortTabLabel('. (i + 1) .')} '

endfor

" 最后一个标签页之后用 TabLineFill 填充并复位标签页号

let s .= '%#TabLineFill#%T'

" 右对齐用于关闭当前标签页的标签

iftabpagenr('$') > 1

let s .= '%=%#TabLine#%999Xclose'

endif

returns

endfunction

" 文件名标签

functionMyShortTabLabel(n)

let buflist = tabpagebuflist(a:n)

let label = bufname (buflist[tabpagewinnr (a:n) -1])

let filename = fnamemodify (label, ':t')

returnfilename

endfunction

"完整路径标签

functionMyTabLabel(n)

let buflist = tabpagebuflist(a:n)

let winnr = tabpagewinnr(a:n)

returnbufname(buflist[winnr - 1])

endfunction

" vim 标签样式

"  TabLineFill  tab pages line, where there are no labels

hi TabLineFill term=none

hi TabLineFill ctermfg=DarkGrey

hi TabLineFill guifg=#777777

"  TabLineSel   tab pages line, active tab page label

hi TabLineSel term=inverse

hi TabLineSel cterm=none ctermfg=yellow ctermbg=Black

hi TabLineSel gui=none guifg=yellow guibg=Black

" Develop editing options

au FileTypevim setl expandtab

au FileTypevim setl shiftwidth=2

au FileTypevim setl tabstop=2

个性化定制状态栏

Statusline

" 显示状态栏(默认值为 1,无法显示状态栏)

set laststatus=2

" Format the statusline

set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}E5%h\ \ \ Line:\ %l/%L:%c

function! CurDir()

let curdir = substitute(getcwd(),'/Users/amir/',"~/","g")

returncurdir

endfunction

用NERDTree实现目录和文件导航

在进行PHP应用开发时,同时编辑多个文件是很正常的事情。所以必须有一个方便的目录导航工具,以便在目录结构间快速切换,找到需要编辑的文件。

vim中提供该类功能的插件很多,比较知名的有project、winmanager等。但笔者个人认为最好用的还是The NERD Tree这个插件。NERDTree不但可以显示完整的目录树结构,还可以将任何一个目录设置为根目录。并且提供了目录导航的书签功能,可谓非常方便。

下载文件: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可以列出已打开文件中定义的类、函数、常量,甚至变量。

压缩包需要完整解压缩到 ~/.vim/ 目录,并且用:helptags ~/.vim/doc命令索引taglist插件的帮助文档。

taglist插件需要依赖ctags程序才能工作。目前常用的ctags版本是Exuberant Ctags。

安装ctags

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

解压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,我的快捷方式定义如下:

map  :NERDTreeToggle

map  :TlistToggle

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+.)

删除:选择需要缩进的代码行(键盘鼠标都可以,选中了就行),

下面是我一直使用的配置文件,有兴趣的朋友可以参考一下

下面两个放在~/.vim/plugin/下

ubuntu15.10 gvim php,IDE---Gvim之ubuntu下配置php的ide开发工具相关推荐

  1. ubuntu体验python_在Ubuntu下配置舒服的Python开发环境

    Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的一个安装和配置步骤,基于 Ubuntu 12.0 ...

  2. 在Ubuntu下配置舒服的Python开发环境

    转载自:http://xiaocong.github.io/blog/2013/06/18/customize-python-dev-environment-on-ubuntu/ Ubuntu 提供了 ...

  3. openocd调试Linux内核,Ubuntu下配置OpenOCD+FT2232

    Ubuntu下配置OpenOCD+FT2232 [1]确认调试器方案 将调试器插到电脑上,lsusb看一下: Bus 003 Device 009: ID 1457:5118 First Intern ...

  4. linux 搭建开发stm32 stlink,Ubuntu下搭建stm32+stlink的开发环境

    Ubuntu下搭建stm32+stlink的开发环境 热度 3已有 15960 次阅读2014-8-19 21:09 | 上周因为忙于别的事情,很久没切到ubuntu下了,这周继续弄了弄. 弄到了一些 ...

  5. Star: Ubuntu下配置和编译cpp-ethereum客户端启动GPU加速交易

    Ubuntu下配置和编译cpp-ethereum客户端启动GPU加速交易 Ethereum,中文翻译是"以太坊",是一个公有区块链的开源项目.因为以太坊是基于P2P网络所以没有中心 ...

  6. ubuntu版php开发工具,Ubuntu 中搭建 LAMP 及 php 开发工具

    Ubuntu 中搭建 LAMP 及 php 开发工具 Step1. 安装 Apache 1.在 terminal 中输入一下命令并执行: sudo apt-get install apache2 2. ...

  7. ubuntu下配置eclipse

    ubuntu下配置eclipse 1.官方下载:http://www.eclipse.org/downloads/ 2.解压到指定目录:/opt 可先解压到当前目录然后 mv eclipse /opt ...

  8. Ubuntu下配置FreeRADIUS + PPTP/L2TP + Mysql + daloRADIUS

    PPTP/L2TP安装方法就不写了,前面好多文章都介绍了安装方法. 下面先安装FreeRADIUS-server Shell 1 2 3 4 5 6 7 #sudo apt-get install m ...

  9. Ubuntu下配置Nginx HTTPS

    HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...

最新文章

  1. VMware虚拟机上的文件如何和Windows进行共享
  2. 世界坐标系空间,页面空间,设备空间,物理设备空间
  3. tomcat(11)org.apache.catalina.core.StandardWrapper源码剖析
  4. 使用yuicompressor 压缩js, CSS
  5. 利用高斯金字塔制作图像显著图
  6. 【TWVRP】基于matalb粒子群算法求解带时间窗的多客户单仓库车辆路径规划问题【含Matlab源码 1407期】
  7. Linux下如何使用搜狗词库
  8. JavaParse入门
  9. android中生成 PDF,Android PDF生成
  10. 深度学习在文本分类中的应用
  11. OpenHarmony恢复启动子系统init进程之服务管理与发布
  12. ShareIntentUtil【调用系统自带的分享的工具类】
  13. Coursera | Andrew Ng (01-week-2-2.5)—导数
  14. 【国产数据库】GBase学习⑤ - gsql 客户端连接工具
  15. matlab-高数 plot 二维画图 绝对值函数 取整函数 分段函数
  16. STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)
  17. javascript中十进制转十六进制代码
  18. 华米的“脱米后遗症”
  19. C语言 输入一个5位正整数,判断它是不是回文数
  20. 浅谈Java三层架构

热门文章

  1. 华为、三星都崴了脚:石墨烯充电还有戏吗
  2. 再破记录!2019天猫双11八小时总成交1504.9亿,开场后8分1秒发货量破1亿
  3. 小米路由器爆款产品遭遇友商恶意抹黑 官方怒晒黑稿...
  4. 三星Galaxy A90翻转摄像头出变故:或仍将采用水滴屏设计
  5. 救救孩子?强制实名游戏不足四成 青少年视力保护状况堪忧
  6. 2999元!联想Z6 Pro开启预售:搭载骁龙855+后置高清四摄
  7. 买写真送手机系列 小米9王源限量版预售将在这些小米之家开启
  8. 安卓APP测试知识大全【面试储备】
  9. Python 使用requests发送POST请求
  10. Flutter 列表踩坑2