在 vim 中使用文件列表打开文件不起作用

在 vim 中使用文件列表打开文件不起作用

vim $(cat filelist)我尝试按照之前的建议使用 vim 打开文件问题

假设我有以下文件:

~/Workspace/bar/foo.cpp

当包含时正确vim $(cat filelist)打开执行。但是,当包含时,该命令不会打开文件。我想知道为什么使用绝对路径会导致命令失败。~/Workspacefoo.cppfilelistbar/foo.cppfilelist~/Workspace/bar/foo.cpp

答案1

这是由于不同类型的扩展在 shell 中执行的顺序造成的。手册bash页说:

扩展是在命令行上被分割成单词后执行的。执行了七种扩展:大括号扩展、波形符扩展、参数和变量扩展、命令替换、算术扩展、分词和路径名扩展。

替换~is 波形符扩展,同时$(...)替换 is 命令。现在您可以看到,执行命令替换后,不再有波浪号替换。使用真正的绝对路径(从文件系统 root 开始/)它可以工作。

但您可以通过以下方式自行执行扩展sed

vim $(sed "s_~_${HOME}_g" filelist)

相关内容