ฉันสะดุดคำถามที่คล้ายกันที่อื่นพร้อมคำตอบที่ดีกว่าเมื่อเปรียบเทียบกับGambaiและตัวแปรที่เสนออื่น ๆ มันจะดีขึ้นตั้งแต่
- มันจะดูแลไฟล์ที่สร้างขึ้นโดยวางลงในโฟลเดอร์ tmp เพื่อให้ระบบสามารถลบได้
- มันเป็นโค้ดที่สะอาดกว่า (แม้ว่าคำตอบของ Gambaiสามารถแปลงเป็นฟังก์ชันได้)
มีฟังก์ชั่นในไฟล์เชลล์อยู่แล้วใน repo git ของ ranger:
https://github.com/ranger/ranger/blob/master/examples/bash_automatic_cd.sh
function ranger-cd {
# create a temp file and store the name
tempfile="$(mktemp -t tmp.XXXXXX)"
# run ranger and ask it to output the last path into the
# temp file
ranger --choosedir="$tempfile" "${@:-$(pwd)}"
# if the temp file exists read and the content of the temp
# file was not equal to the current path
test -f "$tempfile" &&
if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
# change directory to the path in the temp file
cd -- "$(cat "$tempfile")"
fi
# its not super necessary to have this line for deleting
# the temp file since Linux should handle it on the next
# boot
rm -f -- "$tempfile"
}
คุณสามารถใส่ฟังก์ชั่นนี้ใน~/.zshrc
ไฟล์shell rc ที่คุณชื่นชอบและสร้างนามแฝงและ / หรือผูกมันเข้ากับคีย์ผสม (อีกครั้งทั้งสองสามารถเข้าไปในไฟล์ rc):
alias nav=ranger-cd
และ / หรือ
# This will run the function by Ctrl+O through returning
# the string "ranger-cd" in addition to a new-line character
# to act as Enter key-press
bindkey -s "^o" "ranger-cd\n"
คำเตือน:การbindkey
ทำงานข้างต้นใน ZSH และคุณควรเปลี่ยนมันตามเชลล์ที่คุณต้องการ
;
แล้วระบุคำสั่งเพิ่มเติมหลังจากเซมิโคลอนซึ่ง - ฉันคิดว่าจะทำงานในจุดที่คุณปิดranger
ขอบคุณ!