VOoM(原VOOF):vim实现带折叠双栏树状文本管理

重要说明:自v4.0开始,VOoM支持html、vimwiki、wiki等格式的标题,本文有待更新。
  Vim[1]加装VOoM插件,实现了带折叠的双栏树状文本管理 [2]/[3],为我几年来的寻找画上了近乎圆满[4]的句号。只须在txt文本的标题行增加 {{{1、{{{2…… 或其他自定义的简单标识,利用VOoM就可以生成目录树,与正文分居两窗口,实现光标点击跳转,以及对节点的层级、顺序管理。即,VOoM让txt成为最通用的资料库,让Vim成为最方便的个人信息管理软件。

一、VOoM界面预览及视频演示界面视频
二、VOoM基本教程安装python支持基本操作
三、高级使用:改进VOoM快捷调用更快捷定义标题行高亮标题行并隐藏标识符自定义标识符在html中变通使用
四、总结
附录:注释文章更新历史

一、VOoM界面预览及视频演示

1. VOoM界面预览

  VOoM:vim outliner
  上图是善用佳软使用Vim VOoM的实际截屏,从中可以看到如下特点:
  * 两栏;
  * 左侧目录可折叠/展开(正文也可以折叠,本例未采用);
  * 点击目录可实现正文跳转;
  * 标题高亮。

2. VOoM视频演示

  下面的视频是使用vim的outliner功能,来写日记的示例。有助于初学者感性认识及理解Vim,内容包括:
  * 用fdm=indent实现基于缩进的长文本折叠管理。
  * (2分10秒开始) 下载安装VOoM插件。
  * VOoM的使用。
  * (3分20秒开始) 自定义语法文件,高亮标题。
  需要说明的是视频中未能展示节点管理(改变层级、调整顺序)功能。

二、VOoM基本教程

1. 安装VOoM

  VOoM插件的安装与使用极为简单,有基础者可以略过本段。
  * 到Vim官方网站VOoM主页下载最新版:http://www.vim.org/scripts/script.php?script_id=2657
  * 解压到vim安装目录/vimfiles/下。(比如在我这里,就是把 voom.zip 中的 doc目录、plugin目录,复制到 c:\Program Files\gvim\vimfiles\ )
  * 重启Vim。
  * 打开自带的示例文件 simple_outline.txt (可能位于 x:\soft\Vim\vimfiles\voom_samples\)。
  * 在命令行模式键入(注意大小写):Voom 并回车。

  如果顺利:现在就能看到左侧的树状目录了。
  如果不顺利:Vim提示出错,比如“E370: could not load library python27.dll” 等,说明PC上需要安装 VOom 依赖的 Python 环境。详情见下。

2. VOoM 与 python

  VOoM 为什么依赖 Python?答案是运行效率。用 Python 扫描文本检测 fold marker 的速度,相当于 vim 脚本的10倍。作者在帮助文档的“Why VOoM uses Python”一节,给出了详细的测试代码和测试结果。
  所谓 VOoM 需要 Python支持,具体包括两方面:
  ① GVIM.exe 支持 Python;
  ② 系统中安装有对应版本的Python环境。
  条件①通常具备,因为官方发布的gVim默认是支持 Python的。
  条件②可能会有些问题:如果你没有安装Python,这时就需要根据gvim的版本,安装合适版本的Python:gvim7.3需要Python 2.7,gvim7.2需要Python 2.4。安装Python时最好在C根目录。如果你的Python版本与gvim版本不对应,一种办法是换用正确版本的Python;一种办法是重新编译gvim,让它支持你已经安装的Python版本(不会编译的请到 这里下载)。
  为了这样一个插件而安装Python,对普通用户是否值得?这是一个爱屋及乌、见仁见智的问题。笔者不做程序开发,安装JRE是因为FreeMind;安装.Net是因为EverNote v3.5;安装Python是因为VOoM与UltiSnips;安装Ctags、taglist是因为TxtBrowser……

3. VOoM 基本操作

  鼠标方式:Vim并不排斥鼠标。如果想用鼠标操作VOoM,则它与类似软件并无区别,无须解释。
  键盘方式:Vim的长处还是键盘。要点如下,详见帮助文档。
  1. 基本操作之Tab:在左右 [6]两个窗口之间切换焦点;
  2. 基本操作之跳转到目录:在目录树侧,可通过↑↓来打开正文的相应位置,→←来展开/折叠父子节点。
  3. 节点基本操作:在目录树buffer中,如下快捷键可用:
    i I a A:修改当前节点标题行。
    <LocalLeader>i、I:在当前节点前、后插入新节点。(LocalLeader默认为\,也可自定义)
    ctrl+方向键:上下移动节点(调整顺序);左右移动节点(调整级别)。
    dd yy pp:删除、复制、粘贴节点。

三、高级使用:改进VOoM

1. 更快捷调用VOoM

  默认情况下,需要键入 :Voom回车 来调用VOoM插件。此过程需要注意输入法状态、vim模式、大小写,不算简便。因此,可以自定义热键。
  我的选择是映射为 F11 ——选择 F11 是因为数字11的形状与双栏式结构很相像,便于记忆。
  具体做法是在 _vimrc 中增加一句 “map <F11> :Voom<CR>”——放到 _vimrc中因为此命令常用。

2. 更快捷定义标题行

  如果认为 {{{1 这样的字符串也不便于键入,不妨进行自定义。举例如下。

例1:基本做法
  imap [1 {{{1
  imap [2 {{{2
  imap [3 {{{3
  实现了插入模式的映射,即键入 [1 可以得到 {{{1 …… 当然,也可用缩写代替映射。

例2:改进做法(推荐)
  imap [1 <esc>$a {{{1
  map [1 <esc>$a {{{1
  功能同上,但不限模式、光标无须准确定位。

例3:Geek做法(供参考)
  设定1/2/3级标题,在 MS Word 中的默认热键是 ctrl+alt+1/2/3。按照“不同软件的操作方式尽可能一致”原则,也力争在VOoM中保持同样热键。但是,Vim map 并不支持 ctrl-数字,所以,ctrl+alt+数字也是做不到的。一定要实现?请用万能的AutoHotkey :

^!1::
IfWinActive, ahk_class Vim
{
sendinput {esc}$a {{}{{}{{}1
}
else
sendplay ^!1
return

3. 高亮标题行、隐藏标识符

  为实现高亮效果,可以使用如下syntax代码:

syn match zhead0 “^.+{{{d”
hi zhead0 gui=bold guibg=black
syn match zhead1 “^.+{{{1”
hi zhead1 gui=bold guifg=red guibg=black
syn match zhead2 “^.+{{{2”
hi zhead2 gui=bold guifg=green guibg=black
syn match url “S*://S*”
hi url guifg=lightblue gui=underline

  但是,标题行突出显示后,{{{1 这样的标示符更加刺眼。能否将之隐藏呢?Vim 当然不会让你失望,只需稍修改上述高亮规则即可。笔者在初学 vim syntax 时,曾苦苦探寻实现方式。而现在,可以直接给出两种做法:
  一是利用零宽断言(:h zero-width)让标题不包括{{{d,代码如下:

syn match zhead0 "^.+({{{d)@="
syn match zkey "{{{d"

  二是利用contain参数,代码如下:

syn match zkey "{{{d" contained
syn match zhead0 "^.+{{{d" contains=zkey

  对于zkey的隐藏,可以直接设定前景色与背景色相同,但更推荐 hi link zkey ignore 的做法。同理,zhead0 也可以不做直接设定,而是 hi link zhead0 MatchParen 或其他预设风格。

4. {{{2 标识符的自定义等

  {{{1、{{{2……这样的标识符用来表示标题。VOoM称之为“起始折叠标记”(start fold marker),它是通过 foldmarker 选项来定义的。比如 set fmr=<<<,>>> 或 set fmr=[[[,]]] ,这样就可以使用 <<<2 或 [[[2 来表示二级标题。
  另外,除了数字表示级别外,还可以紧跟如下字母(及组合):x 表示标记(目录树第二列显示x),可用来标出某些重要标题。= 表示起始节点,即:Voom时的起始节点。o 表示open,即该目录树完全展开。除了在标题行直接增加这些标记外,也有相应快捷键操作。

5. 在html中变通使用vim-VOoM

  工具固然有好坏之分,但多数情况下,用户应用水平对最终效果的影响更大。而学会变通使用,闻一知二、举一反三,是显著提升应用效果的关键。
  txt需要额外标记才能使用VOoM,而html是已经附有标记的、扩展后的txt。其中,标题行以及层级已由h标签进行了标示。所以,理论上,html应该可以“不加修改”、“快速”使用VOoM功能。
  所谓好工具,就是理论上应该能做到的事,实际上也能做到。对着VOoM想一下,答案有了!
  实现方法:很简单,只须设定

:set fmr=</h,}}}

再:Voom 即可(对于自己的html笔记文档,可增加modeline)。
  
  上述操作效果如图。美中不足的是,目录行首的h起始标签有些碍眼。
  最理想的效果参见此文,通过修改voom.py(v2.0)中第59行开始的函数:def makeOutline(body, lines),在 74 行之后,增加如下两行:
  del_html_re = re.compile(‘<.*?>’)
  tline = del_html_re.sub(”, tline)
把html标签全部清空即可——此修改当然有副作用,所有尖括号内容均被忽略,请慎用!感谢 vfantasie @ newsmth.net 网友提供上述代码,相关讨论参见此处

四、总结

  如果说Vim是单一txt文件编辑利器,Vim加wiki类扩展则实现了多个txt的管理,那么VOoM就实现了以txt为文本资料库的管理。凭着Vim方便的加密、查找、替换、语法高亮、折叠功能,再加上VOoM的树状管理,我自己认为找到了理想的文字笔记管理方案。

附录:注释

  [1]: 参见Vim–普通人编辑利器、更多vim文章
  [2]: 关于纯文本资料管理。txt是最简单,也是最基本的文件格式,很多人对它情有独钟。通过软件为长篇txt增加目录功能,一直是某些开发者和用户的梦想,为此,有了《超级小巧的5款免费树状笔记软件》。
  [3]: 关于双栏树状结构。我最早是利用 UltraEdit 的 function list 实现长篇txt的目录导航。后来转到 Vim 后,一直试图用tag、folding来模拟此功能,但都不满意。对于较少使用高级文本编辑器的用户而言,双栏树状结构的典型例子是 MS Word 的“文档结构图” [5]
  [4]: 近乎圆满,是因为 Vim 并不适合处理太大的txt文件。当然,这个大小是相对的,与硬件及Vim激活的功能多少有关。 更新:而VOoM处理长文本,也会较占资源,主要是扫描正文生成outline。VOoM作者的2002年旧电脑(1.6GHz Pentium 4 Mobile)上,附带的 calendar_outline.txt (3.2 Mb, 56527 lines, 4160 headlines)会在更新后有明显停顿(小于1秒)。但要说明的是:仅阅读跳转仍然流畅;减少标题行能大幅度提高效能。总之,我相信当前情况下,10MB txt,上千个节点是可以正常使用的。
  [5]: MS Word 文档结构图是处理长文档极为重要的工具,也是我推荐的Word视图,我在 Word 2003 中调用此功能的“快捷键”是 alt+v d ,可参见 [视频教程] WPS处理长文档的技巧
  [6]: 用户也可以自定义目录窗口的位置:上、下、左、右,及其大小。建议放在默认位置,即左侧。

附录:文章更新历史

  2010-09-16:感谢知无兄协助更新本文。
  2010-04-18:VOOF改名为VOoM;html利用h标签更完美。
  2010-03-24:补充目录、总结。
  2010-03-20:补充在html中利用h标签,实现目录的做法。
  2010-03-03:全面更新文章;VOOF升级到v1.92。
  2009-12-09:改进实现^!1/2/3功能的AutoHotkey脚本。
  2009-11-11:补充“隐藏标示符”。
  2009-11-09:补充截屏,增加改进部分与Python,算是下篇。
  2009-11-06:补充视频,修改并发表,算是上篇。
  2009-05-27:长期跟踪vim.org的习惯让我在第一时间发现了刚刚诞生的VOOF。一试之下,赞叹不已!立即在水木社区vim版 发文推荐。>

《VOoM(原VOOF):vim实现带折叠双栏树状文本管理》有88个想法

  1. “近乎圆满,是因为 Vim 并不适合处理太大的txt文件”
    就我使用经验而言,vim打开大文本文件比我用过的其他软件个要快的多,翻屏速度也不卡(主频2.4,内存512M)。也许我打开的文件不算是最大的(文本10M左右)?大家能否推荐一下打开较大快头的文本文件(>10M)的编辑器还有什么?

    1. 在我用过的编辑器中,百G以上的大文件,大概只有emeditor可以驾驭。

      可惜现在40美元的价格稍贵了一点。

        1. 谢谢回复.还好我还不至于用到编辑上G的文本文件(难以想象).vim对我而言足以.深入学习中…

  2. 您好,善用佳软,可否写一编文章专门介绍一下vim排版?
    【善用佳软:你们说的排版具体指什么?Vim是纯文本纯辑器,几乎没有格式,更无版式。】

    1. 安装python2.4呗。或者(如果已经装有不同版本的Python2.x)重新编译一下,把python2.6编译进去。
      最好的解决办法是换Linux,就像我这样。

  3. 可不可以把视频中的极点皮肤发给我?(是极点吧)谢谢!
    【善用佳软:极点5.2,实际是没有skin,但仍需skin目发和文件,freewbskinnoneskin.ini 内容如下:】
    [状态栏]
    状态栏自动定位=1
    隐藏状态栏=1
    透明度=0
    字号=9
    候选窗按钮文件名=nofile.ini
    图像宽度=75
    图像高度=20
    文本框top=4
    文本框left=20
    文本框right=68
    文本框bottom=16
    状态栏无法自动定位时的位置=0

    [候选窗]

    候选窗光标跟随=0
    汉字候选窗透明度=20
    候选项数=2
    汉字候选窗字号=12
    汉字候选窗圆角弧度=14
    汉字候选窗采用单线框=1
    候选框使用透明边框=0
    汉字候选框式样=3
    自动缩放背景图=0
    汉字候选使用背景图=0
    候选窗背景色=238,238,238
    候选窗前景色=0,0,0
    候选窗边框色=176,176,255
    候选汉字颜色=0,0,0
    候选字提示码颜色=47,3,222
    自动词组前景色=0,0,0
    背景图片文件=no_bmp.bmp
    横坐标=105
    纵坐标=322

  4. 安装了python2.4.3重启后使用正常,感谢xbeta。这也是目前最理想的使用组合了。
    为了提高可读性,请教xbeta如何实现以下类似UE的模板效果:
    输入Alt+1自动输出下面模板,^为鼠标定位位置
    〓〓〓〓〓〓〓〓〓〓
    ^ {{{1

    【善用佳软:
    :map <a-1> <esc>O———————-<cr>{{{1<esc>bi
    :imap <a-1> <esc>O———————-<cr>{{{1<esc>bi

  5. 我原本安装的是python2.6
    也报了2.4dll的问题,下了一个2.4版本的dll,
    dll的错没有,但是还有其他错误,是python interface的问题,重新下载了python-enabled vim的exe替换了,就ok了

  6. xbeta可以试试把python24.dll放到C:Windowssystem32下(这是默认位置)或者gvim.exe所在目录。但即使这样还是会有问题:这个插件是Python写的,其中引用了几个Python文件,所以必须安装Python,否则脚本不能运行,就像运行.Net程序必须安装.Net Framework一样。不过Windows版的Vim编译时用的Python版本有点低。

  7. 博主有办法把 {{{1 这些东西隐藏掉么,比如在语法文件中设置为背景色,同时还要保存之前的标题语法高亮?
    【善用佳软:可以。vim能做的事有很多,能个性化的地方更是超乎想象。
    把 “^.+{{{d” 中的 {{{d 改为 ({{{d)@= ,这样标题行高亮就不包括这个标识了。
    然后,重新定义标识的前/背色相同即可。
    相关知识 :h /zero-width】

  8. 有点不明白为什么善用佳软从来不用带图片的笔记.因为很多教程什么的都有图片.即使学会了,以后也可以拿出来回顾一下.毕竟人的脑袋总有想不起来的一天.
    【善用佳软:因为我经常读、经常写,但极少复制下载。】

  9. xbeta,我对笔记的苛刻要求和你简直一模一样,要求用最简单的htm实现文字+图片,同时不影响htm源码的阅读、编辑和树状快速定位(VOOF)。仔细看了前面《我这样记笔记:gvim+。。。》和《大道至简,终于。。。》二文,但对详细实现仍比较模糊,恳请xbeta照顾下我等html半文盲,给一个全面的htm笔记源码模板。在下感激不尽~~~!!!
    【善用佳软:讲完基础内容之后,会就此做一个总结。】

  10. 要求用最少的htm标识,最直观的文本格式来编辑带图的内容,同时方便地通过gvim来调用浏览器打开阅读,是最理想的笔记了。这里介绍过比较优秀的笔记软件我都用过(正版和盗版),但都不满意,唯有随心所欲的自行控制htm显示,随心所欲的快速自行编辑内容,才是我的最佳笔记方式。
    另外我还担心由于htm用到不合规范的源码,导致若干年后的htm笔记浏览器显示有问题,不知道会不会杞人忧天了。

  11. 弱问一下,在insert模式下怎么移动光标比较方便?方向键太远了?
    另外,map :tabnew里面M-t代表什么按键啊?

  12. 用gVim来写文章,一个自然段就是一行,常常会碰到由于是文章的一段话,这一行字会特别长的情况,打开自动折行,要好几行甚至十多行才能显示完全。这这种情况下,vim只会在在当前窗口下能把整个段落完全显示的时候,才将其显示;而在不能完整显示的情况,它会用@来代替,请问有没有办法让vim在当前窗口能显示这行字的多少就显示多少,而不要等整行字都能显示时才将其显示出来?谢谢。

    附件为截图。

    1. 查到解决方法:
      set display=lastline即可。
      另外还可以用gj和gk可以上下移动屏幕显示的一行。

      新的问题出现了:如果一行文本有几千汉字时,gVim的支持非常差,右边滚动条滚动和鼠标滚动毫不自然,有时很难凭借滚动来移动到自己想要到的位置。如果用gj和gk来移动,尤如隔靴搔痒,gVim的高效性荡然无存。不知道善用佳软是如何用gVim来操作中文长行的,期待你的回复。

      1. 老兄,可以试着在模式行中加上set fo+=mM,然后就能自动对中文换行了,注意是真正的换行,不是折行,如果修改后可以用gq命令重新格式化,用起来相当方便。

        感谢佳软,一直想在VIM下写日志什么的,但总是觉得管理起来麻烦,以前都是用UE写的,这次终于知道什么是“圆满”了,多谢佳软。

        我已经把一年多的日志都合并在一起了,用VIM编写,还可以用X加密,只是文件大了有些慢。

  13. 【善用佳软:因为我对Python并不“理解”,并且是很早之前安装的VOOF,所以,现在无法提供细致的解决办法。我争取找一台无VOOF和Python的PC,再试一下问题和解决办法。】

    输入“:Voof”报错“无法加载库 python26.dll”
    于是跟着文中的介绍下载了“Gvim 7.2 with Python 2.5/2.6 support Windows binaries”(http://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/),将相应文件替换后还是报相同的错误。
    于是下载并安装了python2.6 for windows(http://download.csdn.net/source/676273
    ),结果还是不行。
    很想在用上为善用佳软长期寻找画上完美句号的Voof,可是却被这一问题阻挠,希望能得到你的帮助。

    1. 找到原因了,安装python之后,要在系统环境变量把它的路径加入,让vim可以找到它。就解决了你的问题,再谢谢佳软

  14. Voof的这个方法是不是有问题,当你要记录的文本里面本身就含有{{{n的时候,tree就乱了。

    对于想对一些程序或者数学公式做笔记的人来说,{{{n出现的概率太大了。

  15. 一、VOOF視頻演示
    這邊的flash檔
    用 firefox 3.5.8 + flash player 10
    沒辦法正常顯示耶@@
    (xbeta注:视频存放在youku.com,或许是你的IP不在许可范围内。正如大陆 网友无法访问youtube一样。)

  16. Voof 插件改成 VOoM 啦? 善用兄你看看VOOF主页是不是这么个意思?
    (xbeta注:感谢提醒,将尽快更新 )

  17. 问个弱点的问题,就是Voof基本操作的——
    “(localleader) i、I:在当前节点前、后插入新节点。”到底是按哪个呀?我实在是Vim功力太浅,求教~~~
    (xbeta注:localleader是vim的概念,就是一个引导键。voom.txt的帮助文档中也有说明,如下。简单说就是默认情况下为“”,也可自定义。 )
    <LocalLeader> is used to start many outline operations while in a Tree buffer.
    By default, it’s backslash. For example, “i” inserts new node. To change it to another character, assign maplocalleader in .vimrc:
    let maplocalleader=’,’

  18. 安装的时候老是提示无法加载Python24.dll,原来是Python V2.4安装的时候安装
    到D:Program Files下了,所以无法加载,具体原因不知道,后来把电脑重启了下,重新
    卸载安装了下Python V2.4版本,问题解决,可以正常使用Voom2.0版本,用Voom2.1的时候还
    是提示有问题,具体没记录,先用着Voom2.0再说.

  19. 我也摸索了几天,感觉很好,我之前喜欢用Notepad记笔记,就是觉得没有structure,这个倒是解决了。只是—–
    Edit a headline (line with a numbered fold marker) in voom.vim and go back into the Tree: the outline will be updated.

    , move node or a range of sibling nodes up/down.
    , promote/demote.

    这个C-up,down,left,right的对目录的排序和缩进功能,怎么都不灵。。。
    先是报告E21:cannot make changes, ‘modifiable’ is off,
    我设置成modifiable:
    :set modifiable
    再次实验C-right,没想成了删除操作
    其他几个组合也一样不work,查看了半天郁闷也没找到原因。。。不知有何高见。
    另外网上这个voom的讨论太少了,貌似并不普及。。。不知道txtbrowser是不是更普及些,回头试试看。。

    我一直在用linux但vim还是新手,楼主可否把你的IM发出来让兄弟加加,随时学习请教:)

    1. 我刚发现这个Node管理的高级feature原来只是在Gvim中work,真的很方便!遗憾的是在命令行vim中不work!搞不懂为何如此,因为gvim和vim使用同样的vimrc配置文件。我是ubuntu1004.

        1. 谢谢 avikf.
          跟原作者沟通过,新版即将出现了。我最开始的那个问题是这个插件在gnu screen下的问题。我想是跟热键冲突有关。不使用gnu screen没有问题。与gvim还是vim无关。

          目前的结论是:
          在ubuntu console和gnu screen下,C-right/up/down/left和u/d/h/l都不work,但<>可以缩进和缩出
          在x环境下的gnome-terminal等终端下单独运行vim没有问题。

          跟作者沟通的一些总结:
          I guess you are having problems with Ctrl-Up/Down/Left/Right mappings
          in console Vim. Ctrl- mappings are often not recognized in console
          Vim. This is why all VOoM Ctrl- mappings have equivalents with
          , which is by default. u/d/r/l moves nodes
          up/down/right/left. These should work everywhere. You can also use <> to move left/right.

          > I’m using vim from gnome-terminal in ubuntu 10.04.
          > > 1) just to clarify my previous issue:
          > > this is really strange…it (the Ctrl mapping on the tree in the left
          > > panel) works some days ago for unknown reason, but now it doesn’t work
          > > again and report E21 (see below screenshot).
          > > :set modifiable this doesn’t make it work
          First of all, DO NOT set Tree buffer to ‘modifiable’. A Tree buffer is
          a special buffer and must not be edited directly. The E21 errors are
          expected from time to time. Just ignore them.

          Make sure you are not in Insert mode when in Tree buffer. All mappings
          are for Normal, some also work in Visual mode.

          Ctrl-Up/Down/Left/Right mappings are likely not recognized in console
          Vim. There is a trick to check what Vim sees when a particular key
          combination is hit: go to command line, hit Ctrl-v, type your key
          combination. For example, after Ctrl-Up on Windows I get “” in
          gvim.exe, “I” in vim.exe. So in console Vim on Windows Ctrl-Up means
          I.

          > > just tested the udrl, doesn’t work either. no any response.
          > > but <> work fines.
          > > how to debug this issue?
          This is strange. Check if your is set to something other
          than backslash.
          :echo exists(‘maplocalleader’)
          If it’s 1,
          :echo maplocalleader

          Note that VOoM modifies Vim buffer, not the file. Before
          outline operations VOoM checks If the Body buffer is ‘readonly’ or
          ‘nomodifiable’.

          I forget to tell that you can list mappings (:help map-listing).
          Try the following, cursor in Tree buffer
          :nmap
          There are should be least 61 mappings in the output. It should make it
          clear what your is. If you still think there is
          something wrong with VOoM mappings, please email me output of the
          above command. You can copy the output to clipboard like this
          :redir @+
          :nmap
          :redir END

          > I’m using Voom for quite a few days to format some of my commonly used
          > > txt notes. so far so great. thanks again for your work.
          > > during my usage, I just to consult you about some features that I can’t
          > > easily find a solution out of it:
          > >
          > > 1) does it support the auto numbering (like in MS word?)
          > > say, if I number the nodes like this:
          > > 1.1
          > > 1.1.1
          > > 1.1.2
          > > 1.2
          > > 1.2.1
          > >
          > > but later I want to promote the 1.1.1 to 1.2, is it possible to automate
          > > the whole numbering to the following without chaning all of these
          > > numbers manually?
          > > 1.1
          > > 1.2
          > > 1.2.1
          > > 1.3
          > > 1.3.1
          No, this is not supported. It’s hard to implement because such format
          is a pain to work with. You can write a script that adjusts headline
          numbering. There are at least two scripts that outline this format:
          http://www.vim.org/scripts/script.php?script_id=2899
          http://www.vim.org/scripts/script.php?script_id=2993

          > > 2) is there a way to print Voom-ed txt with the index, to pdf (or other
          > > format), with all tags, like the way we do from word to pdf?
          You will need a converter script to do that. I have no intention to
          write converters.

          > > 3) plus, I’m seeking for a way to convert jpg file to ascii, I really
          > > think if this is done, along with the 2 features above, we can almost
          > > totally abandon MS word…
          I think you are looking for a light-weight markup language such as
          reStructuredText or a Wiki.

          I will upload new VOoM version in a few days. It will have support for
          outlining Wiki-style headlines. Such feature was requested by another
          user and it turned out to be easy to implement.

  20. 我正用chm reader的插件,但是在开启vim后,不知道怎么调用这个插件了。在nautilus里直接用firefox开chm文件跳出的是下载窗口。您要是有时间能邮件答复我就最好不过了,谢谢了先!

  21. 请问善用佳软,我的gVim怎么老是把»显示成“禄”呢?
    还有,为什么我的gfw设置了之后无效,提示“无效的guifontwide”

  22. “重要说明:自v2.0开始,Voof(Vim Outliner Of Folds)改名为VOoM(Vim Outliner of Markers),本文尚未更新。”
    “本文已经更新”或“本文随时更新”

    善用佳软:多谢。换了如下说法:
    重要说明:自v4.0开始,VOoM支持html、vimwiki、wiki等格式的标题,本文有待更新。

  23. 我想知道隐藏“{{{1”这样的语法文件是哪个,我尝试修改colors下的文件和syntax下的vimwiki.vim,vim.vim都无效

    (xbeta注:
    就是你当前的“文件类型”对应的syntax,而不是一个通用的syntax。
    比如,我经常使用.html文件,借助Voom进行层级管理,这时对应的syntax就是html.vim。
    下一次,在txt中用Voom,就要再修改txt.vim来隐藏。
    )

  24. 前两天看的时候,没搞出来。
    今天又试了一下,终于明白了,原来要在自己的文件头上,加上那两行。

    PS:我是把 * [ ] Todo Something  
    定义成缩进行,
    这样左边列表对Todo完成度一目了然。
    感觉有点酷的。

  25. 因为换公司,需要换回windows一段时间,想用cygwin搭个类似的舒服的环境,其他都还好,在vim上碰到大麻烦!
    vim733 for win是好的,只需安装python就好。
    但不知道如何支持中文,另外windows下还不知道怎么搞顺手。
    cygwin自带的vim不支持python,因此没法装voom!需要重新编译vim…太折腾
    搞了半天没有搞定。
    感慨阿。舒服的环境一旦习惯了,再换实在太麻烦。

  26. 关于把txt文档转换成word的问题

    自从学会使用Vim,我的大部分文件都用它写了,但我们公司内部通用的文档格式是Word的doc格式,于是我就先用txt的文件写,然后复制、粘贴到word里,问题来了,有的时候弄到Word里之后,发现还要修改,或者领导要求修改,这种情况下就不能再用Vim了,不然已经调整好的格式会全部丢失。我的问题是:有没有插件能让Vim打开Word文档,对里面的文字编辑,保存后又不损失调好的格式和样式?

    盼望大侠指教!

    xbeta注:
    简单回答:不能。因为vim只是纯文本编辑器,而word文档并非纯文本格式。
    更准确讲:理论上可以(从doc中抽取纯文本,编辑完成后,再智能判断文本改变的内容,还原回对应的格式),但实际上恐怕没有人去做这种开发。

    1. @Tom, 我也有这方面的问题,目前的解决方案是用Vim+Voom写txt2tags格式的文档,然后转成HTML,之后再复制到Word,基本上格式不用动,只需要做简单的几个调整,比如调整图片大小什么的。

  27. 你好,按照博主的方法,使用hi link key ignore的方法,但是却没有达到预期的效果,仅仅是当前行看不到marker,我所在的网络没办法看视频,能具体看下设置标题高亮以及隐藏marker的代码么 ?(博主给的pattern有错,好几个地方应该加的,却没有)

  28. 关于安装部分,请补写详细点。我这种新手就是被安装第二步给误导了
    以下是VOomdocvoom.txt中的安装部分内容
    llation [[[1~
    *voom_install*
    Copy content of the plugin folder (file “voom.vim”, directory “voom” with
    Python files) to your local Vim plugin folder: >
    $HOME/vimfiles/plugin/ (Windows)
    $HOME/.vim/plugin/ (*nix)
    Copy “doc/voom.txt” to the local doc folder. >
    $HOME/vimfiles/doc/ (Windows)
    $HOME/.vim/doc/ (*nix)
    This will make commands Voom, Voomlog, Voomexec, Voomhelp available in any
    buffer.

    Execute the :helptags command to install “voom.txt” as Vim help and to
    generate help tags (|add-local-help|): >
    :helptags $HOME/vimfiles/doc
    :helptags $HOME/.vim/doc

    VOoM can also be run from any directory without installing anything, see
    Overview -> QUICK DEMO.

发表评论

电子邮件地址不会被公开。 必填项已用*标注