8
5
2013
10

rst_tables 改进版

本文来自依云's Blog,转载请注明。

rst_tables 是一个用来创建和格式化 rst(reStructuredText)格式文档中的表格用的。此文档里的表格得画成表格的样子,囧死了……比如(网页上显示的可能没对齐,在 Vim 里应该很齐的www):

+----------+----------+-----------------------------------------+
| 格式名称 | 使用频率 | 使用场景                                |
+==========+==========+=========================================+
| markdown | 非常高   | 简单的文字,如博客、简单文档            |
+----------+----------+-----------------------------------------+
| rst      | 较低     | 较复杂的文档,如包含表格或者描述性列表。|
|          |          | 以及 Python 库的文档。                  |
+----------+----------+-----------------------------------------+

所以,作为编辑器之神的 Vim,当然会有更方便的创建这种非人道的表格的办法啦。(其实我是看到 Vimwiki 的表格挺不错的 n(≧▽≦)n

略作搜索,找到了 rst_tables。它是这样子写的(墙外视频演示):

格式名称  使用频率  使用场景
markdown  非常高  简单的文字,如博客、简单文档
rst  较低  较复杂的文档,如包含表格或者描述性列表。以及 Python 库的文档。

每行的单元格间空两格,然后光标放在光标上,按\\c(其实是<leader><leader>ccreate),就创建好啦。如果后期又修改了,按\\fformat)就可以重新格式化啦。

rst 的表格里可以写多行文字,就如前边所示那样。修改表格第一行那些减号的数量后再按\\f,可以调整栏宽。

好啦,rst_tables 本身的介绍至此结束。下面讲讲我作出的改进:

  1. 去除对 vim_bridges Python 库的依赖。根本没大量使用的东西,也没省下几行代码,何必用呢。
  2. 正确对齐和排版中文。官方版考虑了中文字符的宽度,但是用 Python 的 textwrap 来排版,造成各种混乱。我给改成用 Vim 原生排版功能排了。
  3. 使用 Python 3 接口,免得非 UTF-8 'encoding' 时出问题。同时使用了 Vim 7.4 新添加的 Python 接口。
  4. 如果没有 Python 支持,不要载入。
  5. 键映射局部于缓冲区。
  6. 放到 plugin 目录下,因为那些 Python 函数定义不需要载入多次。

安装很简单,把这个文件(使用「Raw」链接来下载)扔到 ~/.vim/plugin 下即可。

Category: Vim | Tags: vim python 中文支持 | Read Count: 6900
Avatar_small
zhongyufei2009 说:
Aug 06, 2013 07:57:09 AM

呀,vim74
不知道有木偶gvim版
到官网瞧瞧去先

eleven.i386 说:
Aug 06, 2013 09:28:06 AM

好像很好的样子.. 心动py3了.. 中文处理不用那么麻烦的说...

Avatar_small
依云 说:
Aug 06, 2013 10:20:29 AM

现在还是 beta 版,官网上肯定没有。这里有我打包的 win32 版: http://lilydjwg.is-programmer.com/pages/19540.html#win-vim 。Arch Linux 64 位版在 lilydjwg 源里。

Avatar_small
λ 说:
Aug 07, 2013 03:00:44 PM

竟然要用 Vim7.4 囧,好吧……
你在 VIM 中用的中文字体不是两个字节宽度的?上面的表格有点乱。

Avatar_small
λ 说:
Aug 07, 2013 03:03:43 PM

DokuWiki 的表格表示法好方便,假如 rst 也添加那种方法就好了。
https://www.dokuwiki.org/wiki:syntax#tables

Avatar_small
依云 说:
Aug 07, 2013 03:15:11 PM

浏览器里渲染得不准吧?这里代码默认的首先字体是 Consolas,很显然中文只能 fallback 到别的字体……

因为 vim 7.4 的 Python 接口好方便啊啊啊,vim.current.buffer.options 就是当前缓冲区的选项字典了~
你升级一下嘛=w=

Avatar_small
λ 说:
Aug 07, 2013 05:31:42 PM

暂时对 Vim 的功能没有特大需求,还是跟着 Gentoo 的包管理走好了。
rst 还提供 csv 和 list 风格的表格表示法,不过在我这里好像有点 bug ,那些选项无法正常使用,Orz

浏览器的字体的确没 fallback 好。不过,我在 Vim 上的非 ASCII 字符 fallback 到了两个 ASCII 字符宽度的,你的好像不是,不然上面各个表头右侧怎么好像少了一个空格,也不是 CSS 样式害的……

Avatar_small
λ 说:
Dec 14, 2013 05:07:44 AM

唔……发现没有一个能够很好地按两位 ASCII 字符宽度显示某些标点符号的 terminal 真是好麻烦啊。

Avatar_small
λ 说:
Jan 23, 2014 08:36:29 PM

试了几下才明白要调整好第一行的格子宽度才能修正好表格 Orz

Avatar_small
λ 说:
Sep 10, 2014 03:08:30 PM

上次我说的标记语言终于实现了(似乎还能改进不少),你可以参考看看。

https://github.com/jakwings/Kaj-Markup-Language

当然不是用的你喜欢的反斜杠来组成语法。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com