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