注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

guoyoooping的博客

audio,picture, text and video

 
 
 

日志

 
 

扩展TxtBrowser  

2010-02-24 21:25:43|  分类: Vim: 学习Vim的心 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  content(Powered by TxtBrowser)
    1. 怎么写扩展
    2. 一些例子
    .   2.1 阅读小说(生成小说的章节目录)
    .   2.2 支持中文风格的标题格式:

Taglist是Vim的一个优秀插件, 我扩展了Taglist, 使文本文档可以生成文档的目录树. 同
时TxtBrowser也支持扩展. 很多Vim高手扩展了TxtBrowser(主要是用于生成目录树的
.ctag文件和语法高亮文件txt.vim).  这些扩展真的非常优秀, 但是有些非常个性化或专
业化的扩展我认为不太适合加到 TxtBrowser的正式发布版里 , 所以以把它们贴在这里,
供需要的朋友参考.

1. 怎么写扩展

首先我先以我的理解解释一下ftplugin/txt.vim文件里用于生成标题标签的语法, 以及
syntax/txt.vim里用于自定义语法元素及其高亮的语法, 仅供参考:

下面是用于生成标题标签的语法:

扩展TxtBrowser - ping - guoyoooping 的博客

下面的语法用于定义语法元素:]

...(正在写呢.)

下面的语法用于定义该语法元素的高亮, 有两种形式, 一种是借用系统中已有的高亮方案,
另一种是自定义颜色(RGB):

...(正在写呢.)

2. 一些例子

2.1 阅读小说(生成小说的章节目录)

网友Mac扩展了.ctags使阅读小说更加方便, 下面是效果图(点击观看大图):

扩展TxtBrowser - ping - guoyoooping 的博客
实现:

把下面的三行加入到你的ftplugin/txt.vim文件下面的句后后面即可:

if (exists('Tlist_Enc_Patch') || has("unix"))

我正在研究可以把自定义的标签放到.vimrc文件里, 这样升级版本就不需要再加了, 敬请
关注.

let s:TBrowser_Config .= '--regex-txt="/^[ \t ]*(第[一二三四五六七八九十百千零]+部[ \t ]*.*)$/\1/c,content/" '
let s:TBrowser_Config .= '--regex-txt="/^[ \t ]*(第[一二三四五六七八九十百千零]+章[ \t ]*.*)$/.   \1/c,content/" '
let s:TBrowser_Config .= '--regex-txt="/^[ \t ]*(第[一二三四五六七八九十百千零]+节[ \t ]*.*)$/.       \1/c,content/" '

相应的语法高亮(网友萧叶提供, 添加在syntax/txt.vim里):

"标题文本: 网络小说标题 (修正)?
syn match txtTitle "^.*第\?\([一二三四五六七八九十百千零]\)\+章\s*[^,。,]\+$"
syn match txtTitle "^.*第\([0-9]\)\+章.*$"
syn match txtTitle "^.*[序楔]\+\s*[^,。,]\+$"

2.2 支持中文风格的标题格式:

有网友提出下面的需求:

"一直在用您的txtbrowser插件,非常感谢!求教一个小问题,我们公司的公文格式规定,
要有一、二、三;(一)、(二)、(三)这样编号,在这种情况下,怎样自定义
txtbrowser的语法,生成正确的大纲呢?谢谢指教!"

扩展TxtBrowser - ping - guoyoooping的博客
 
利用周末的时间, 实现了一下, 上图是效果图, 不过还有点小问题:

    * 只在windows下测试通过, 而且某些格式的高亮有点小问题.
    * 在cygwin下测试没有通过, 大概可能是我的$LANG等环境变量设置的有些问题吧.
    * 没有在Linux下测试过, 最近没有环境, 等有时间再测.

下面是修改的具体方法:

1) 修改ftplugin/txt.vim

这是diff文件(以发布版1.3.5为基础):

#diff -uNp txt_original.vim txt.vim > ftplugin_txt.diff
|--- txt_original.vim    2011-07-15 16:59:28.000000000 +0800
|+++ txt.vim    2011-11-21 11:25:32.612269700 +0800
|@@ -50,6 +50,13 @@ let s:TBrowser_Config .= '--regex-txt="/
|
| "Special process of Chinese(or CJK) tag.
| if (exists('Tlist_Enc_Patch') || has("unix"))
|+
|+    let s:TBrowser_Config .= '--regex-txt="/^([一二三四五六七八九十]+[.]?[ \t]+)(.+$)/\1\2/c,content/" '
|+    let s:TBrowser_Config .= '--regex-txt="/^([一二三四五六七八九十]+、[ \t]*)(.+$)/\1\2/c,content/" '
|+
|+    let s:TBrowser_Config .= '--regex-txt="/^[ \t]*(([一二三四五六七八九十]+)[.]?[ \t]+)(.+$)/.   \1\2/c,content/" '
|+    let s:TBrowser_Config .= '--regex-txt="/^[ \t]*(([一二三四五六七八九十]+)、[ \t]*)(.+$)/.   \1\2/c,content/" '
|+
|     let s:TBrowser_Config .= '--regex-txt="/^[ \t]*(图[ \t]*[0-9a-zA-Z]+[.: ][ \t]*.+$)/\1/f,figures/i" '
|     let s:TBrowser_Config .= '--regex-txt="/^[ \t]*(表[ \t]*[0-9a-zA-Z]+[.: ][ \t]*.+$)/\1/t,tables/i" '
|

2) 修改syntax/txt.vim:

这是diff文件(以发布版1.3.5为基础):

#diff -uNp txt_original.vim txt.vim > syntax_txt.diff
|--- txt_original.vim    2011-07-15 16:59:30.000000000 +0800
|+++ txt.vim     2011-11-21 11:03:59.237269700 +0800
|@@ -40,8 +40,11 @@ syn match txtTitle "^\(\d\+\.\)\+\s*[^,

|                                                           
| "txtTitle: Lines start with Chinese digit and '.'
| "标题文本: 汉字数字加'.、'打头,且该行不含,.。,标点符号
|-syn match txtTitle "^\([一二三四五六七八九十][、.]\)\+\s*[^,。,]\+$"
|-syn match txtTitle "^\([一二三四五六七八九十][、.]\)\+\s*[^,。,]\+,"
|+syn match txtTitle "^\(\s*(\)*\([一二三四五六七八九十]\+)*[、. ]\)\+\s*[^,。,]\+$"
|+syn match txtTitle "^\(\s*(\)*\([一二三四五六七八九十]\+[、. ]\)\+\s*[^,。,]\+[,,]"
|+
|+syn match txtTitle "^(\([一二三四五六七八九十]\+)*[、. ]\)\+\s*[^,。,]\+$"
|+syn match txtTitle "^(\([一二三四五六七八九十]\+[、. ]\)\+\s*[^,。,]\+[,,]"
|
| "txtTitle: Lines start with digit
| "标题文本: 以数字打头, 中间有空格, 后跟任意文字. 且该行不含有,.。,标点符号
  评论这张
 
阅读(2802)| 评论(13)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017