在 vimming 方面,我通常是一个纯粹主义者。我不喜欢重新映射键,或者学习依赖一堆插件。我喜欢在外国盒子上感觉就像在我自己的开发盒子上一样强大。但是,我确实相信语法文件。尽管解决方案可能不是语法文件(我使用的是 bindzone.vim),但我希望它足够糟糕,可以做任何事情。
我经常查看或编辑制表符(或逗号,但那将是一个奖励)分隔数据。我讨厌不得不将我的制表位设置为一些荒谬的数字,以便让所有内容都对齐。示例:BIND 区域文件为 ~40+,6,2,5,15+。因此,即使我可以在单个屏幕上查看它们,如果我设置 ts=40,我也不能。多年来,我一直在寻找“动态标签大小”解决方案,但没有运气。
我讨厌编辑甚至可视化表格数据的唯一好方法是将其 scp 到我的工作站并在 Open Office 中打开它。一定有更好的方法。
如何更改为空格而不是制表符,并仅使用 R(而不是 i)进行编辑?这样你就不会重新对齐任何东西(除了一开始你重新排列所有东西时)。
提交功能请求。VIM 需要一个选项来显示不同的制表位,这在每个文字处理器中都很常见。这么多人使用 vim 作为文字处理器,我很惊讶它还没有。我建议修改制表位以接受数组代替整数。
Vim有一个开发列表补丁,据说可以实现可变制表位。将{1}指示为处于测试阶段。
显然,这将涉及为要在其上使用它的服务器编译 vim。
另一种选择是设置自定义文件类型,将制表符转换为由某些特殊字符分隔的空格。您可以设置自动命令以在读取时触发导入(即转换为分隔列)例程,并在写入时触发导出例程(转换回制表符分隔),因此它最终或多或少地透明地工作。
所以例如文件
在 vim 中会被视为类似
这或多或少不在我的脑海中。很可能有一个 vimscript 包可以实现这一点。如果没有,写起来也不会那么难。您只需要确保列分隔符(此处为“»”和“«”)实际上并未在文件中使用。对于绑定配置文件,我认为任何非 ASCII 都是安全的。为了提高鲁棒性,我想你可以给 vim 一些选项,让它扫描文件以找到文件中不存在的集合,或者只是转义任何那些存在的字符。
最好用看起来像空格{2} 但不是的字符填充,例如 '\xa0' 或 '\u2002'; 同样,只有在文件中不存在填充字符,或者您正在让导入例程转义那些填充字符时,这才能正常工作。
此外,我假设熟悉 c 样式的反引号:在示例的第一部分中,“\t”表示制表符;\x 和 \u 序列是十六进制和 unicode 字符表示。
如果您最终实施或找到类似的东西,请告诉我。
{1}:http...groups.google.com/group/vim_dev/web/vim-patches?pli=1
{2}:http...www.cs.tut.fi/~jkorpela/chars/spaces。 html
注意:混淆的老式参考风格是由于我在这个网站上缺乏声誉。
我认为您可以使用Align 插件完成您想要的工作。(抱歉,如果您已经尝试过。)
您知道您可以通过定义自定义模式行来自动设置文件的自定义属性吗?我意识到这并不能解决您的问题,但可以让您在每次要对齐文件时都不必输入自定义属性。
这也适用于vi...
一堆答案并不完全正确,但也许其中一些适合您的工作模式:
有一个 :%!sed -e 'whatever' 来满足你的需要,并将它放在文件中某处的注释中,以便你可以粘贴它(我曾经在这种类型的绑定文件中保留一个 :%!sort -u东西的)。
如果它一直是同一台服务器,在它的某个地方有一个 (bash|perl|awk|sed) 脚本,可以在 vim 中类似地调用。
如果您可以将生成文件放在那里, :make 命令也很有用。
将所有数据保存在 SQL 中并从那里生成文件,同时编辑某些表或视图(我只是在开玩笑)。
使用 cut(1) 和 paste(1) 命令(来自 vim 或辅助 shell 脚本)模拟 SQL 视图。
据我所知,vim 中不可能有垂直折叠,但块选择(使用 ctrl-V)通常很有用。
宏!