Bash
當我輸入“vi”但意思是“cd”時自動檢測?
一天大約 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 ^^
我使用“兼容”的方式來更改參數列表,以便它可以移植到許多平台。