0
我想要一個快速的宏,讓我可以將qty_on_hand之類的文本轉換爲Qty_On_Hand。沒有下劃線的詞應該大寫,因此描述將變成描述。源文本中的案例不一致,因此可能是QTY_on_Hand - > Qty_On_Hand。Vim宏到Camel_Case_With_Underscores
任何想法?
我想要一個快速的宏,讓我可以將qty_on_hand之類的文本轉換爲Qty_On_Hand。沒有下劃線的詞應該大寫,因此描述將變成描述。源文本中的案例不一致,因此可能是QTY_on_Hand - > Qty_On_Hand。Vim宏到Camel_Case_With_Underscores
任何想法?
嘗試以下操作:
:let @t="caw\<C-r>=join(map(split(@\", '_', 1), 'toupper(v:val[:0]).tolower(v:val[1:])'), '_')\n\e"
然後,當你在正常模式下鍵入@t
作爲你的要求,你會得到當前字代替。如果你想只是盲目地取代一切,然後用
:%s/\<\w\+\>/\=join(map(split(submatch(0), "_", 1), "toupper(v:val[:0]).tolower(v:val[1:])"), "_")/g
後g
標誌添加c
,如果你想Vim問你每次更換。
第二個解決方案假定您的源代碼中沒有非ASCII標識符。
奇怪的是,當我運行宏時,它只是用宏的文本替換了單詞。是否有一些引用問題? – 2011-04-05 09:07:34
@Greg Reynolds。我忘了提,'',''和''應輸入爲'',''和''。或者,使用外部雙引號和單引號:':let @ t =「caw \ = join(map(split(@ \」,'_',1),'toupper(v:val [:0])。 tolower(v:val [1:])'),'_')\ n \ e「'。 –
ZyX
2011-04-06 14:49:45