Linux

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

  • June 4, 2021

vim $(cat filelist)我嘗試按照這個早先問題的建議使用 vim 打開文件。

假設我有以下文件:

~/Workspace/bar/foo.cpp

當contains時vim $(cat filelist)~/Workspace正確打開執行。但是,當包含. 我想知道為什麼使用絕對路徑會導致命令失敗。foo.cpp``filelist``bar/foo.cpp``filelist``~/Workspace/bar/foo.cpp

這是由於在 shell 中執行不同類型的擴展的順序。bash手冊頁說:

將其拆分為單詞後在命令行上執行擴展。執行的擴展有七種:大括號擴展、波浪號擴展、參數和變數擴展、命令替換、算術擴展、分詞和路徑名擴展。

替換~is 波浪號擴展,而您的$(...)is 命令替換。現在您看到在執行命令替換後,不再有波浪號替換。使用真正的絕對路徑(從文件系統 root 開始/)它會起作用。

但是您可以自己執行擴展sed

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

引用自:https://unix.stackexchange.com/questions/652771