วิธีกำหนดคำสั่งใหม่ในตัวจัดการไฟล์ ranger


1

ฉันต้องการความสามารถในการกำหนดคำสั่งใหม่ใน ตัวจัดการไฟล์เรนเจอร์ โดยพิมพ์สิ่งที่ชอบ:

:newcmd myarg

และเรียกใช้รหัสโดยอำเภอใจด้วย

คำสั่งคำสั่งควรมีสิทธิ์เข้าถึงสถานะของโปรแกรมเช่นไดเรกทอรีปัจจุบันและไฟล์ที่เลือก

มีวิธีทำเช่นนั้นหรือไม่?

คำปฏิเสธ : ฉันได้สร้างคำถามนี้และตอบด้วยตนเองเพราะไม่มีแหล่งข้อมูลที่ดีในเรื่องนี้ คำตอบเพิ่มเติมเป็นมากกว่าการต้อนรับ


@ fixer1234 ขอบคุณสำหรับคำติชม เพิ่มคำปฏิเสธคำตอบด้วยตนเอง แต่ถ้ามันกว้างเกินไปปิดฉันไม่คิดว่าการตอบคำถามด้วยตนเองควรสร้างความแตกต่าง สิ่งที่ฉันไม่เข้าใจคือสาเหตุที่กว้างเกินไปฉันเชื่อว่าฉันเคยเห็นคำถามที่เทียบเคียงได้หลายข้อในอดีต ฉันอาจถาม: วิธีการสร้างคำสั่งใหม่เพื่อทำ X สำหรับ X ที่แตกต่างกัน 3 ตัวที่ฉันมีอยู่ในใจ แต่ฉันรู้สึกถึงพื้นฐานที่อนุญาตให้เขียนคำสั่งใด ๆ โดยพื้นฐานแล้วสามารถครอบคลุมได้ในคำตอบ ถ้ามันปิดฉันจะทำอย่างนั้น
Ciro Santilli 新疆改造中心 六四事件 法轮功

@ fixer1234 บางทีมันอาจจะเกี่ยวกับปริมาณของคำตอบที่มีอยู่: ฉันคิดว่ามีข้อมูลมากมายเกี่ยวกับ Excel อยู่แล้วดังนั้นสิ่งที่ไม่เหมือนเลเซอร์ที่เฉพาะเจาะจงก็ไม่มีประโยชน์ แต่เรนเจอร์ยังไม่ได้ :-)
Ciro Santilli 新疆改造中心 六四事件 法轮功

เราได้รับคำถามมากมายจาก Excel ที่ OP กำหนดความต้องการและขอให้ผู้คนส่งมอบวิธีการแก้ปัญหา ผู้ที่ได้รับการรักษา "กว้างเกินไป" ที่นี่คุณได้ให้วิธีแก้ปัญหาของคุณเองและข้อจำกัดความรับผิดชอบนั้นชัดเจนดังนั้นฉันไม่คิดว่าคุณจะมีปัญหา ฉันเดาว่าใครก็ตามที่ตั้งค่าสถานะนี้ในคิวการตรวจสอบกำลังตอบสนองต่อสิ่งนั้น
fixer1234

คำตอบ:


1

แก้ไข ~/.config/ranger/commands.py มีบางสิ่งที่ชอบ:

from ranger.api.commands import *

class newcmd(Command):
    def execute(self):
        if not self.arg(1):
            self.fm.notify('Wrong number of arguments', bad=True)
            return
        # First argument. 0 is the command name.
        self.fm.notify(self.arg(1))
        # Current directory to status line.
        self.fm.notify(self.fm.thisdir)
        # Run a shell command.
        self.fm.run(['touch', 'newfile')

ตอนนี้คุณสามารถพิมพ์:

:newcmd myarg

เพื่อเรียกใช้คำสั่งที่กำหนดไว้

ตัวเลือกเพิ่มเติมสามารถดูได้ที่: https://github.com/hut/ranger/blob/9c585e48e14525f11d2405ea0bb9b5eba92e63e9/ranger/config/commands.py

จากนั้นคุณสามารถไปอีกขั้นหนึ่งแล้วกำหนดแผนที่สำหรับแผนที่เช่นเพิ่มไป ~/.config/ranger/rc.conf:

map ,n console newcmd
map ,m newcmd default-arg 

และตอนนี้คุณสามารถพิมพ์:

  • ,n เขียน newcmd บนบรรทัดสถานะและเตรียมให้ผู้ใช้ป้อนอาร์กิวเมนต์แรก
  • ,m และเรียกใช้คำสั่งทันทีด้วยอาร์กิวเมนต์เริ่มต้น

ทดสอบกับแรนเจอร์ 1.6.1

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.