Bash 使用单引号时,Vim替换在命令行模式下未正确发生
我有一个文件test.txt,其中数据init=6'b000000;我想用init=6'b110111替换它;通过在bash文件中使用vim脚本。我犯了个错误 我正在使用以下命令:Bash 使用单引号时,Vim替换在命令行模式下未正确发生,bash,shell,vim,Bash,Shell,Vim,我有一个文件test.txt,其中数据init=6'b000000;我想用init=6'b110111替换它;通过在bash文件中使用vim脚本。我犯了个错误 我正在使用以下命令: vim -c '%s/init=6'b000000;/init=6'b110111;/g | write | quit' test.txt 这在vim中非常有效,而不是在bash中。这与vim无关,不能在一对其他单引号中嵌入单引号。shell在将命令行参数传递给被调用的命令之前解析这些参数,它无法按照您定义的方式处
vim -c '%s/init=6'b000000;/init=6'b110111;/g | write | quit' test.txt
这在vim中非常有效,而不是在bash中。这与
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
这与
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