一千萬個為什麽

搜索

外部命令中的文件名子串(bang)

是否可以對vim中的外部命令中的表示當前文件的文件名執行bash字符串操作?

示例:</強>

我正在編輯文件 myfile.txt 。使用:!命令%,我可以在vim中的 myfile.txt 上執行命令。例如,要將 myfile.txt 復制到 myfile.ext (只需更改擴展名),我可以編寫 :! cp%myfile.ext 。但是有一些冗余,我想從中推導出 myfile.ext (並避免編寫 myfile )。

在bash中,如果名稱 myfile.txt 包含在變量 $ var 中,我可以編寫 cp $ var $ {var%txt} ext 例如。

有沒有辦法在vim中模仿這個?當然,我不能寫:! cp%$ {%% txt}分機 ...雖然這是我想要的!

最佳答案

您無需外出以保存具有不同擴展名的副本。嘗試以下任一方法,兩者都使用“root”:r 修飾符從文件名中刪除擴展名:

:w %:r.ext
:sav %:r.ext

前者將保存一份副本,但讓您編輯原件。後者將切換,以便您現在編輯副本。

有關Vim提供的許多不同修飾符的詳細信息,請參閱:h filename-modifiers

轉載註明原文: 外部命令中的文件名子串(bang)