vim - 如何使用 Vim 替换conf文件中的某些路径?

标签 vim

我有这个

88 ca ca.crt
89 cert client.crt
90 key client.key

在openvpn的client.conf中(数字是vim显示的行号,不是实际的文本),我想将ca.crt clent.crt client.key更改为正确的位置,全部位于'./easy-rsa/2.0/keys/'

我尝试过这种方法:

88,90s;^(\w) (\w);\1 easy-rsa/2.0/keys\2;

结果是“找不到模式”

[已解决]

我用这个解决了这个问题:

:88,90s;\(^\w\+\>\)\s\(\w\+\>\);\1 easy-rsa/2.0/keys/\2;

我在问题中犯的错误是: 1. 引用必须在模式中转义,因此它应该是 \(\) 而不仅仅是 ()

关于解决方案的一些解释: \w 只匹配可以组成单词的字符,因此使用 vim 扩展正则表达式 \+ 来匹配一个或多个 \w\> 表示单词结束

还有一个更简单的解决方案:

88,90s;\s\(\w*\); easy-rsa/2.0/keys/;

很抱歉给您带来了麻烦,我还没有足够的声誉来回答我自己的问题。

最佳答案

您也可以通过以下方式实现相同的目的:

88,99s;\s\zs;easy-rsa/2.0/keys/;

关于vim - 如何使用 Vim 替换conf文件中的某些路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495060/

相关文章:

vim - 如何避免Vim中大文件的语法突出显示?

c - 在 Vim 中重构 C/C++(例如像 Eclipse 中的方法提取)

vim - 如何在VIM中的{}中多行导入函数?

vim - 更正所有出现的拼写错误的单词

Vim:默认的退格行为是什么?

vim - 使用 Vim(不是 gvim)通过 GDB 调试 Go

vim - 如何跳转当前缓冲区中的下一个标签 - vim?

vim - 在 Vim 中多次撤消?

vim - 在 Vim 和 Windows 7 中使用带空格的文件路径

regex - Vim 匹配一个矩形区域