我有這個在我的文件的頂部:的Vim如何使:與ZS摹正常工作匹配
var server = require('http');
var watchr = require('watchr');
var io = require('socket.io');
var fs = require('fs');
我想這個垃圾轉換成適當的VAR列表:
var server = require('http'),
watchr = require('watchr'),
io = require('socket.io')(server),
fs = require('fs');
因此,我的第一步是找到中除第一個之外的所有var
聲明並縮進它們。所以我搜索每一個字var
,在前一行中有另一個var
。
這裏的,由於某種原因的工作正則表達式:
\vvar\_.{-}\zs<(var)@>
說明:
\v Very magic mode (make all special characters special)
var The word var
\_ Spanning multiple lines
. Any charaacter
{-} Non greedy
\zs Actually start higlighting our search here
< A word boundary
(var) The second occurance of the word var
@> Treat the previous thing (var) as the whole match. Otherwise
Vim is too stupid to match consecutive lines and only
matches every other line
現在,當我在我的文件時,Vim打ň正確跳轉到每一個var
聲明除了第一個。好極了!
現在讓我們使用我們值得信賴的:g
命令來運行匹配我們最後的正則表達式的所有行的命令(這將是每一個除了第一個,因爲ñ跳過第一個)
v我p則:
'<,'>g//norm>>
現在我得到:
var server = require('http');
var watchr = require('watchr');
var io = require('socket.io');
var fs = require('fs');
什麼給?爲什麼它縮進我的第一行?我如何使g
與zs
或@>
或任何可怕的Vim正則表達式匹配,我必須弄清楚?
+1爲明確的問題。 –