我有一些包含数据(如 cvs)并使用制表符格式化的文本文件,但列的大小并不完全相同。
vim 中的默认格式为:
int1 longvalue1 string1
int2 anotherlongvalue2 string2
vim 可以对不同的列使用不同的制表位吗?显示将是
int1 longvalue1 string1
int2 anotherlongvalue2 string2
此功能(由编辑器自动完成)通常称为Elastic tabstop。此类补丁已被提出包含在 Vim 中(例如,请参见此处),但它们还远未包含在 Vim 中(并且几乎没有进展)。
作为解决方法,您可以:set ts
设置一个较大的值(尽管会导致巨大的差距),或者使用像Align 这样的插件 - 帮助人们对齐文本、eqns、声明、表格等或Tabular - 用于文本过滤和对齐转换的 Vim 脚本将制表符转换为适当数量的空白(可能是暂时的;重新转换为:write
)。
谢谢 Ingo,插件 Align 是我需要的。我想替换<tab>
符号并且插件不替换这些边界(典型的边界是=
并且不应该被替换)。
因此,我创建了一个函数来替换它们:
" :DoAlign command to format the text as an array by replacing the <tabs>.
" Requires the Align-plugin
fun! DoAlignFunction()
%s#\t#==motiv==#g
%Align
%s#==motiv==##g
endfunction
command! DoAlign call DoAlignFunction()
所以我可以(不选择任何文本)用:DoAlign