使用vim以相反順序開啟目錄中的所有文件

使用vim以相反順序開啟目錄中的所有文件

如何使用 vim 按相反的字母順序開啟給定目錄中的所有檔案?命令 -

vim *

將按字母順序開啟所有文件。如何:n以相反的順序遍歷文件?我發現使用tac 這裡,這裡顯示文件內容的另一個解決方案這裡,以及 emacs 的解決方案這裡,但它們不是 的解決方案vim

答案1

整體思路可能是反轉結果*

printf '%s\n' * | tac

並使用它xargs來產生vim.這樣做有兩個問題:

  1. 一般來說,檔案名稱可能包含換行符,因此最好用空字元分隔並使用xargs -0.

  2. vim在管道中產生xargs會抱怨輸入不是來自終端。可能會發生奇怪的事情。如果您xargs支援-o/dev/tty在執行命令之前重新開啟子進程中的標準輸入),請使用它。

那麼整個解決方案:

printf '%s\0' * | tac -s "" | xargs -0o vim

筆記:

  • tacPOSIX 不要求;xargs可能不支援所使用的選項。整個方法不可移植。
  • 空字串作為選項參數似乎tac -s將空字元設定為分隔符號而不明確傳遞任何空字元(這可能有問題)。
  • ARG_MAX限制,您無法執行更長的命令。如果檔案較多,擴展*可能超出限制,您可能會得到Argument list too long.如果printf是您 shell 中的內建函數,則此時該限制可能不適用。xargs嘗試生成時它仍然適用vimxargs將檢測到這一點並按順序運行兩個或多個vim進程(如果需要)。然而,這可能不是您想要的。希望,由於您要手動迭代:n,我預計文件數量不會那麼大,所以ARG_MAX不會成為問題。

相關內容