2
VIM中的字符串格式令我头疼。VIM中的字符串格式(填充)
我想我非常习惯在Python中使用字符串格式,您可以指定 输出字符串将如何分隔,中间有多少空格等等。
所以我有一个VIM插件,以看起来像一个临时缓冲区输出信息:
Line: 1 ==>> ErrorName ==>> File Path: /foo
我建立一个字符串追加到缓冲区之前,一切工作太棒了。但是,只要你有不同的行号(数字明智的),你得到的东西是这样的:
Line: 1 ==>> Error ==>> File Path: /foo
Line: 123 ==>> ErrorNameLong ==>> File Path: /foo
Line: 12 ==>> ErrorShort ==>> File Path: /foo
我曾尝试做着做着标签,而不是空间,但它只能使情况变得更糟(空间更大发展)。所以,我的理想最终结果必须是这样的:
Line: 1 ==>> Error ==>> File Path: /foo
Line: 123 ==>> ErrorNameLong ==>> File Path: /foo
Line: 12 ==>> ErrorShort ==>> File Path: /foo
我清楚地意识到,帮助插件(比如tabular.vim),但因为这是一个插件本身,我不想需要依赖在一个不同的插件只是为了简单的字符串格式。
这是到目前为止,我已经尝试过的事情:
- 标签(和标签+空格)
- 搜索和(在缓冲渲染后和标签用空格)与选项卡代替
在我看来,必须有一个好办法,我只是想念它。
如何在VIM中实现我需要的字符串格式?
起初我怀疑这种方法会起作用。最初抛弃我的是'a:amt - len(a:s)',因为你需要ENOUGH填充才能使它工作。这解决了我的问题,感谢您花时间在这里获取功能。 – alfredodeza
@alfredodeza只有当你接受ascii时,你才应该使用'len()'。尝试用'strwidth()'(仅vim-7.3)或'len(split(a:s,'\ zs'))'(不处理全角字符)替换每个len。 – ZyX
@alfredodeza虽然如果只处理ascii是正常的,那么你可以扔掉这两个函数,并使用内置的printf:'echo printf('Line:% - * u == >>% - * s == >> FilePath%s',8,linenum,12,errmsg,path)'。对于'PrePad',在'%'后面删除'-'。 – ZyX