加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – Vim如何制作:g与zs匹配正常工作

发布时间:2020-12-14 05:48:55 所属栏目:百科 来源:网络整理
导读:我在我的文件顶部有这个: 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 = req
我在我的文件顶部有这个:

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之前的每个单词varthat.

这是由于某种原因起作用的正则表达式:

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

现在,当我在我的文件中点击n时,Vim正确地跳转到除第一个之外的每个var语句.好极了!

现在让我们使用我们的trusty:g命令在匹配我们的最后一个正则表达式的所有行上运行一个命令(除了第一个正则表达式之外的所有行,因为n跳过第一个正则表达式)

vip然后:

'<,'>g//norm>>

现在我得到:

var server = require('http');
    var watchr = require('watchr');
    var io = require('socket.io');
    var fs = require('fs');

是什么赋予了?为什么它缩进我的第一行?如何使用zs或@>使g很好玩?或者我必须弄清楚任何可怕的Vim正则表达式的东西?

解决方法

:global只会占用多行匹配的第一行,除非您为执行的命令赋予偏移量:

:g/^var/+norm >>

结果:

var server = require('http');
    var watchr = require('watchr');
    var io = require('socket.io');
    var fs = require('fs');

无论如何,我建议这个更简单的方法:

>将该段加入一行:

vipJ or :'{,'}j<CR>

结果:

var server = require('http'); var watchr = require('watchr'); var io = require('socket.io'); var fs = require('fs');

>使用正确的字符串在正确的位置拆分该行:

:s/; var /,r    /g

结果:

var server = require('http'),io = require('socket.io'),fs = require('fs');

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读