Bash

當我輸入“vi”但意思是“cd”時自動檢測?

  • February 18, 2019

一天大約 5 次,當我的意思是“cd”時,我鍵入“vi”,最後在 vi 中打開一個目錄。這讓我很生氣。似乎應該有一種方法可以檢測我何時輸入“vi + directory”並自動將其更改為“cd + directory”。想法?

假設您vi使用目錄作為最後一個參數進行呼叫:

vi() {
   if [[ -d ${!#} ]]; then
       cd "$@"
   else 
       command vi "$@"
   fi
}

除了@ChrisDown 的回答,這裡還有另一種方法:繞過目錄

使用這種方法,您可以:

vi ./*

它會在目前目錄中的所有文件上啟動 vi,即使它包含子目錄,繞過那些子目錄

vi() {
 for arg do
   [ -d "$arg" ] || set -- "$@" "$arg"
   shift
 done
 [ "$#" -gt 0 ] && command vi "$@"
}

這個只是做vi,在任何不是目錄的參數上……因此它不會教你將“vi”用於“cd”;)

如果您只是這樣做,它不會呼叫 vi: vi somedirectory(即,輸入錯誤的 vi 而不是 cd)。但是它不會自動 cd 那裡,所以你仍然記得你必須輸入 cd ^^

我使用“兼容”的方式來更改參數列表,以便它可以移植到許多平台。

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