vim的的代码折叠

vim也是有代码折叠功能的,以前就知道,然而毕竟用的不多,这个功能基本上很少用。随着最近和gvim的亲密接触,对代码折叠功能逐渐熟悉起来。有一次打开一段php的代码 — 比如PEAR.php,发现里面的代码自动被折叠了,将代码展开后,可以看到只要代码两边有/*{{{*/和/*}}}*/,就会被自动折叠。仔细搜索配置,其中有一句是重点:

foldmethod=marker

这样vim就会自动搜索代码,将{{{和}}}之间的内容折叠起来,而且代码结尾有一段小注释也不是无用的废料:

/* vim600: sw=4 ts=4 fdm=marker syn=php
*/

这段注释会被vim读取,并自动设置到环境变量里面。

关于代码折叠的用法,只要在vim中输入:
:help zo
就可以看到了不少相关的快捷键,需要一定的练习才可以得心应手:)

我的gvim配置内容又增加了:

colo zellner
set guifont=Courier_New:h11:cANSI nobackup tabstop=4 shiftwidth=4 foldmethod=marker
au BufRead * simalt ~x
set langmenu=zh_CN.utf-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
set guifont=DejaVu\ Sans\ Mono:h12
source $VIMRUNTIME/../_vimrc
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
language messages zh_CN.utf-8
set helplang=cn
set iskeyword+=

我的.vimrc

set hlsearch ic ai wildmenu fileencodings=utf-8,gbk cindent tabstop=4 shiftwidth=4 foldmethod=marker nocompatible nopaste pastetoggle= <f11>
syn on

pastetoggle=粘贴模式切换可以避免自动缩进的带来的格式影响

    一点 vim相关小发现:

  • google reader的上一篇,下一篇快捷键分别是j,k,和vim的光标移动键一致,不知道是巧合还是有意为之,如果是后者,那么google reader的开发者想必也是vim的粉丝:)
  • 使用firefox查看网页源代码时,按一下”/”,会显示搜索框,与vim的搜索一致,估计firefox的开发者也是vim爱好者:p

作者: 发表于May 23, 2006 at 9:30 pm

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,

5 条评论 »

  1. zuowj 于 2006-06-14 @ 10:41:46 留言

    Hi, 我也是一个vim 的fans 也在做PHP的开发工作. 不知是否能交个朋友.
    我的MSN是 zwj2000@hotmail.com

  2. wei 于 2007-02-09 @ 20:54:00 留言

    opera的Find…也是可以用/调出来,非常方便,查询网页内容或者源代码都可以。

  3. goodloop 于 2008-01-07 @ 22:28:06 留言

    好像vim的作者在google工作呢:)

  4. flz 于 2011-01-17 @ 10:06:19 留言

    是否有方法像notepad++那样实现对括号层次的折叠?如按ALT+4可以将第四层的折叠起来?

  5. Volcano 于 2011-01-17 @ 11:26:20 留言

    说的是这种吗

    phpfolding.vim - http://www.vim.org/scripts/script.php?script_id=1623

    可以自动折叠class或function

    <?php
    /**
    * This is Foo...
    * @author Foo
    */
    class Foo {
    +-- 11 lines: function fooFunction($bar) ** -----------------------------------------
    +--   8 lines: function fooFunction2($bar) ** ----------------------------------------
    +-- 24 lines: function fooFunction3($bar) -------------------------------------------
    } 
    
    +--112 lines: class Foo2 ** -------------------------------------------------------------
    ?>

RSS 为此帖反馈评论 · 反向跟踪 网站

留条评论