Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用单引号时,Vim替换在命令行模式下未正确发生_Bash_Shell_Vim - Fatal编程技术网

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在将命令行参数传递给被调用的命令之前解析这些参数,它无法按照您定义的方式处

我有一个文件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" 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