如何使用VIM编辑表格数据(表格)? 具体来说,BIND(named)DNS db文件

我通常是一个纯粹的,当涉及到眩晕。 我不喜欢重新映射密钥,或者学习依赖一堆插件。 我喜欢像在自己的开发箱上那样,感受到外国拳击的强大。 不过,我确实相信语法文件。 即使这个解决scheme可能不是一个语法文件(bindzone.vim就是我使用的),但是我想要做的事足够糟糕。

我经常查看或编辑标签(或逗号,但这将是一个奖金)分隔的数据。 我讨厌把我的tabstop设置成一些荒谬的数字,以便让所有的事情排成一行。 例如:BIND区域文件是〜40 +,6,2,5,15 +。 所以,即使我可以在一个屏幕上查看他们,如果我设置ts = 40,我不能。 我一直在寻找一个“dynamic标签大小”的解决scheme多年,但没有运气。

我讨厌编辑甚至可视化表格数据的唯一好方法就是将其分发到我的工作站并在Open Office中打开。 一定有更好的方法。

如何改变空格而不是制表符,并只使用R(而不是我)来做你的编辑? 这样你就不会重新排列任何东西(除了一开始就把所有东西都重新排列)。

提交function请求 VIM需要一个选项来显示不同的制表符,就像在每个字处理器中常见的那样。 所以很多人使用vim作为文字处理器,我很惊讶这不是已经在那里。 我build议tabstop被修改为接受一个数组来代替一个整数。

Vim有一个dev-list 补丁 ,据说可以实现variables制表位。 它表示 {1}处于testing阶段。
显然,这将涉及编译你想使用它的服务器的VIM。

另一个select是设置一个自定义文件types,将制表符转换为由特殊字符分隔的空格。 您可以设置自动命令在写入时触发导入(即转换为分隔列)例程和导出例程(转换回制表符分隔),所以它最终会以或多或less透明的方式工作。
所以例如文件

Column 1 header\tColumn 2 header\tcolumn 3 header first row, column 1\tfirst row, column 2\tfirst row, column 3 

会在vim中被看作是类似的东西

 Column 1 header» «Column 2 header» «Column 3 header first row, column 1» «first row, column 2» «first row, column 3 

这或多或less地偏离我的头顶。 可能会有一个vimscript包来实现这个。 如果不是的话,那就不难写了。 您只需确保文件中未实际使用列分隔字符“本”和“”“。 对于一个绑定configuration文件,我会认为任何非ASCII将是安全的。 为了提高鲁棒性,我想你可以给Vim一些选项,让它扫描文件来find一个文件中不存在的集合,或者只是转义任何那些字符。

改为填充看起来像空格 {2}但不是像'\ xa0'或'\ u2002'的字符可能会更好。 再次,这只会工作正确如果填充字符不存在于文件中,或者您有导入例程转义那些。
另外我假定熟悉c风格的反引用:在示例的第一部分中,“\ t”代表一个制表符; \ x和\ u序列是hex和unicode字符表示。

如果你最终实施或find这样的事情,请让我知道。

{1}:http … groups.google.com/group/vim_dev/web/vim-patches?pli=1
{2}:http … http://www.cs.tut.fi/~jkorpela/chars/spaces.html
注意:模糊的老派参考风格是由于我在这个网站上的声誉不足。

我想你可以用Align插件完成你想要的function。 (道歉,如果你已经尝试过了。)

您是否知道您可以通过定义自定义模式自动设置文件的自定义属性? 我意识到这并不能解决你的问题,但是每当你想要alignment你的文件的时候,都不需要input你的定制属性。

  • 添加到你的文件的顶部'#vi:ts = 40'
  • 并记得在你的.vimrc中设置“modeline”

这也适用于vi …

一堆答案不完全是重点,但也许这其中的一些适合你的工作模式:

有一个:%!sed -e“什么”做你需要的东西,并把它放在文件的某个地方的注释中,这样你就可以粘贴它了(我曾经把一个:%!sort -u保存在这种绑定文件中东西的)。

如果它始终是同一台服务器,那么在其上有一个(bash | perl | awk | sed)脚本,可以在vim中同样调用它。

make命令也是有用的,如果你可以把makefile放在那里。

保留所有的数据在SQL中,并从那里生成的文件,而你编辑某些表或视图(我只是半开玩笑)。

使用cut(1)和paste(1)命令(从vim或辅助shell脚本中)来模拟SQL视图。

据我所知,在vim中没有垂直折叠是可能的,但块select(使用ctrl-V)通常是有用的。

macros!