2012-10-03 30 views
5

我想將一大羣標識符從小寫更改爲大寫。我有一個數字(幾百個左右)的唯一標識符以q_開頭的文件。我構造了一個定義這個匹配的正則表達式:(q_\w*),現在我想應用~命令使它們全部大寫(它們當前是小寫的)。我覺得VIM可以做到這一點,但我的技術還沒有,你能幫忙嗎?VIM:選擇一個正則表達式,然後應用一個命令

回答

6

如果你想向上情況下,整個標識,對於文件中的每個標識符,用這個替代命令:

%s/q_\w\+/\U&/g 

訣竅這裏是在替換模式,它引用了整場比賽&。這將取代例如q_identifier1Q_IDENTIFIER1

如果你只想上的情況下q,那麼你可以使用:

%s/q_\(\w\+\)/Q_\1/g 

現在q_identifier1將改爲:Q_identifier1

如果你想向上情況下,一切除了q_,然後用:

%s/q_\(\w\+\)/q_\U\1/g 

現在q_identifier1將改爲:q_IDENTIFIER1

+0

感謝您的快速回答,這似乎是我正在尋找,除了,例如,我有:q_name_confirm - >我想:q_NAME_CONFIRM,與q仍然小寫,感謝 –

+0

與最後一個示例,我收到錯誤:E486:找不到模式:q _ \(\ w + q \) –

+0

是的,刪除了第二個q,它工作的很好!謝謝,還必須將'+'更改爲'*',這有意義嗎? –

0

您還可以使用宏用於此目的:

  • 搜索你的模式:/q_\w*
  • 開始錄製宏:qq
  • 變爲大寫並查找下一個: llve~n
  • 停止錄製您的宏:q
  • 重複作爲必要條件: [email protected]

但僅此而已,否則將包裹和變回小寫(或者你也可以關閉wrapscanignorecase是暫時的)。

相關問題