2011-10-13 55 views
4

我一直在使用Vim一段時間,並且我已經意識到每次我這樣做時它有多強大。我知道的一件事是,每次使用都會讓我對全新的命令有一個全新的學習體驗,一旦我瞭解它們,這些命令總能派上用場。Vim中的正則表達式

我注意到的一件事是,很多用戶在正則表達式中回答Vim問題。像這樣的事情::s/\(\S\+\)/"\1"/(據說這是一個很棒的正則表達式)。所以我有兩個關於這個問題。

  • (a)如果我不使用正則表達式,我沒有充分利用Vim的全部功能嗎?沒有任何命令可以做任何正則表達式會做什麼? (b)如果您認爲正則表達式值得學習,請指向我閱讀從介紹到高級水平的材料。如果有幫助,我主要使用Vim編寫TeX文件和Python腳本。

謝謝SO社區,你搖滾。

回答

9

a)在我看來,如果你不使用它,並且你現在工作的方式讓你感到高興,那就留下吧。一旦時間到了,你開始需要的東西正則表達式你會學到它們。在你需要的範圍內。大多數人以這種方式使用它們。

很少有人知道他們到了這樣的地步,讓我們說寫自己的語法文件或類似的東西。 b)Vim有自己特殊的正則表達式(one of many),但是除了Vim的幫助之外,我首先向Perl推薦一本入門書籍。例如,Learning Perl。它有一個很好的溫和的方法,以便表達式開始有意義(並且您不只是將它們作爲一個線程來解決某個特定問題)。開始Perl(免費版!)可以是found here

關於正則表達式的高級書籍是Mastering Regular Expressions,以及該系列的類似書籍。另外,中級和掌握Perl也不錯。

+1

這正是我所需要的,非常感謝您閱讀該書的鏈接!如果我需要學習,我現在知道該去哪裏看看。 – eqb

2

基本上正則表達式對搜索和替換最有用。許多問題可以通過搜索有問題的文本並用聰明的方式將其替換爲期望的文本來解決。這並不總是最好的解決辦法,很少是唯一的辦法。 正則表達式找到一個模式,所以如果你想要編輯在一堆的地方,有一個類似的模式文本,你可以經常用正則表達式 防爆辨別出來:

/my name is .* 

會發現「我的名字是」 「我的名字是喬」 或其他任何與「我的名字是」
.匹配任何字符和*告訴Vim匹配0到以前的符號無窮大(在這種情況下.或任何東西)
開始這可能是正則表達式的最簡單形式。對於更高級的用法,請使用Idigas提供的答案

+0

+1初學者的例子。謝謝! – eqb