Vim 環視和固化分組

原文: https://wsdjeg.spacevim.org/vim-regular-expression-look-around-and-solidified-group/

vim Perl 意義
\@= (?= 順序環視
\@! (?! 順序否定環視
\@<= (?<= 逆序環視
\@<! (?<! 逆序否定環視
\@> (?> 固化分組
\%(atom\) (?: 非捕獲型括號

和 perl 稍有不同的是,vim 中的環視和固化分組的模式的位置與 perl 不同。 例如,查找緊跟在 foo 之後的 bar,perl 將模式寫在環視的括號內, 而 vim 將模式寫在環視的元字符之前。
Perl的寫法

/(?<=foo)bar/

vim的寫法

/\(foo\)\@<=bar

Vim 使用示例

  • 順序環視
    查找後面是sql的my: /my\(sql\)\@=
  • 順序否定環視
    查找後面不是sql的my:/my\(sql\)\@!
  • 逆序環視
    查找前面是my的sql: /\(my\)\@<=sql
  • 逆序否定環視
    查找前面不是my的sql: /\(my\)\@<!sql
  • 固化分組
  • 非捕獲型括號
    意思是,此分組不捕獲,可以理解爲不算在分組信息中
:%s/\%(my\)sql\(ok\)/\1

上面的命令會將 mysqlok 替換爲 ok ,由於 my 爲捕獲在分組中,故組中 \1ok

歡迎加入我們的 QQ 羣,與 vimer 一起交流更多的 vim 使用技巧: 755208473

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章