簡體   English   中英

搜索並替換為VIM上的字段

[英]Search and replace with fields on VIM

我想搜索一個字符串,並替換為第一個字符串中包含的第二個字符串。 例如我有以下幾行

    key1: foo
    key2: bar

我正則表達式的正則表達式是:

^\s\+\w:.\+

我想用以下內容代替整行:

foo -> key1
bar -> key2

我該怎么做?

Vim使用\\1 \\2等作為反向引用,因此您應該可以使用:

:%s/^\s\+\(\w\+\): \(\w\+\)/\2 -> \1/g

分解:

  • ^\\s\\+ :字符串開頭的一個或多個空格。 如果可能為零,請使用*
  • \\(\\w\\+\\) :將一組單詞字符捕獲到\\1
  • :文字冒號和空間
  • \\(\\w\\+\\) :第二對的另一個捕獲組
  • /\\2 -> \\1/用反向引用替換。 消除領先的空格,並交換兩組

(這是\\v非常神奇的版本,它將看起來更好,並避免了大量的元字符轉義):

:%s/\v\s+(\w+): (\w+)/\2 -> \1/g

我想出了:s命令,

 %s/\v\s*([^:]*):\zs.*/\1/

替代替代

:%norm <<dWA -> ^]pbD

請注意, ^]是通過按<cv><esc>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM