我正在研究一个有趣的剧本,其中VIm似乎被证明是非常有用的工具(很多样式/格式等相似的样式),并且我希望能把握当前的状况(自编写以来)转换为Vim课程。
我已经广泛使用代码块来进行多行编辑,但是我认为我已经达到了极限,并且想伸出手来弄清楚如何更动态地进行行编辑。在这种情况下,我要尝试转换的代码块
来自:
rcon.port=25575
rcon.password=strong-password
enable-rcon=true
进入:
- { regexp: '^rcon.port', line: 'rcon.port=25575' }
- { regexp: '^rcon.password', line: 'rcon.password=strong-password' }
- { regexp: '^enable-rcon', line: 'enable-rcon=true' }
为此,第一部分非常简单。按住Shift-I键,然后按ctrl-V键进行编辑,遍历行进行编辑,请键入- { regexp: '^"
进入以下内容:
- { regexp: '^rcon.port=25575
- { regexp: '^rcon.password=strong-password
- { regexp: '^enable-rcon=true
不幸的是,从那里开始,我有点迷茫,因为宏(以及是否过大的杀伤力)对我来说仍然有点不清楚。除了宏之外,还有没有其他方法可以解决此问题?
我不是在寻找完整的解决方案,而只是在这里寻求最佳(或唯一方法)的提示,以及是否有任何以Vim方式考虑这一问题的技巧。
任何指向优质文档的链接/有关宏的学习资源也将非常棒!我还是Vim的新手,所以请忍受...谢谢!
也许类似于以下正则表达式替换:
:%s/^\(.*\)$/- { regexp: '^\1' }/
或在视觉上选择所有相关行:
CTRL-o
:s/^\(.*\)$/- { regexp: '^\1' }/
我想我应该再解释一下:
:进入命令模式。
%应用于所有行。
s替代。
// xxx / yyy /用yyy替换xxx。
^输入字符串开头的锚点
((xxx)(在匹配字符串中)捕获匹配xxx的所有内容。
\ 1(在替换字符串中)替换为任何匹配的(xxx)。
。*匹配任意数量的任何字符。
$输入字符串末尾的锚点。
替换字符串从字面上发出,没有任何解释,除了\ 1之类的东西。
构建@Stephen Warren's,请根据需要回答以下工作:
:%s/^\(\(.\+\)=.\+\)/- regex: '\2', line: '\1' }/
匹配部分为:
从行^
的开头
它有两组而不是一组\(\)
第一组是与整行匹配的外部组
第二组是与=
匹配的内部组
使用一个或多个字符\+
而不是贪婪的*
来匹配=
的任一侧
替换部分:
\1
和\2