当使用单引号时,Vim替换在命令行模式下不能正确发生[重复]。

问题描述 投票:0回答:1

我有一个文件test.txt,数据init=6'b000000;我想在bash文件中使用vim脚本将其替换为init=6'b110111;。我得到的错误是

我正在使用下面的命令。

vim -c '%s/init=6'b000000;/init=6'b110111;/g | write | quit' test.txt

在vim中可以完美运行,在bash中不行。

bash shell vim substitution
1个回答
2
投票

这与以下情况无关 Vim你不能将一个单引号嵌入到一对其他单引号中。shell在将命令行参数传递给调用的命令之前会对它们进行解析,它无法按照你定义的方式处理内部的单引号。

里面的单引号字面需要保留后再传给命令。所以使用双引号并转义内部的引号

vim -c "%s/init=6\'b000000;/init=6\'b110111;/g | write | quit" file

或使用单引号,但在里面加入一个多级双引号。

vim -c '%s/init=6'"\'"'b000000;/init=6'"\'"'b110111;/g | write | quit' file
© www.soinside.com 2019 - 2024. All rights reserved.