อะไรคือสิ่งที่เทียบเท่ากับทุบตี! $ และ !! ในเปลือกปลาหรือไม่


27

ฉันใช้ทุบตีมานานกว่าทศวรรษแล้วและเคยชินกับการพิมพ์! $ เพื่อทำซ้ำการโต้แย้งครั้งสุดท้ายเช่น:

$ mkdir foo
$ cd !$
cd foo

(บรรทัดสุดท้ายนั้นพิมพ์โดยเชลล์เพื่อบอกให้คุณทราบว่าคำสั่งของคุณประเมินเป็นอย่างไร) ในทำนองเดียวกันฉันมักจะต่อไปนี้:

$ make_sandwich
-bash: make_sandwich: Permission denied
$ sudo !!
sudo make_sandwich

ฉันชอบเปลือกปลาจริง ๆ แต่ความทรงจำของกล้ามเนื้อของฉันนั้นค่อนข้างดี ในปลามีค่าเท่ากันหรือไม่? ฉันสามารถกำหนดค่าปลาให้ใช้คำสั่งเดียวกันได้หรือไม่?

คำตอบ:


22

Alt - ลูกศรขึ้น ให้อาร์กิวเมนต์สุดท้ายจากคำสั่งก่อนหน้า รอบต่อมาจะผลักรอบผ่านข้อโต้แย้งก่อน

ฉันไม่พบสิ่งที่น่าพอใจเทียบเท่ากับ !!ยกเว้น ขึ้น แล้วก็ Ctrl -


11

sudo !! (หรือ sudo bang bang) เป็นหนึ่งในคำสั่งที่ใช้บ่อยที่สุดของฉัน ฉันยังคงใช้ทุบตีเก่า ๆ ธรรมดาที่ใช้ได้ดี ขออภัยที่ทราบว่าปลาใช้งานไม่ถูกต้อง googling เล็กน้อยและฉันพบสิ่งนี้:

function sudo
    if test "$argv" = !!
        eval command sudo $history[1]
    else
        command sudo $argv
    end
end

มีตัวเลือกเพิ่มเติมมากมายในเธรดที่นี่: https://github.com/fish-shell/fish-shell/issues/288


ฉันต้องใส่รหัสนั้นที่ไหน ป้อนที่ลงในปลาแล้ว "sudo !!" ส่งคืนข้อผิดพลาดบางบรรทัดด้วย "แหล่งที่มา: ข้อผิดพลาดขณะอ่านไฟล์ '-'"
Benedikt S. Vogler

9

ฉันพบคำตอบที่สมบูรณ์แบบใน รายชื่อผู้รับจดหมายของผู้ใช้ปลา :

function bind_bang
    switch (commandline -t)[-1]
        case "!"
            commandline -t $history[1]; commandline -f repaint
        case "*"
            commandline -i !
    end
end

function bind_dollar
    switch (commandline -t)[-1]
        case "!"
            commandline -t ""
            commandline -f history-token-search-backward
        case "*"
            commandline -i '$'
    end
end

function fish_user_key_bindings
    bind ! bind_bang
    bind '$' bind_dollar
end

มันยอดเยี่ยมมาก! คุณควรพิจารณาแก้ไขคำตอบยอดนิยมเพื่อรวม ...
user1480704

1
ฉันสร้าง ~/.config/fish/config.fish และวางสิ่งนี้ มันทำงานได้ดีมากหลังจากรีสตาร์ทปลา
Katu

2

ฉันมีปัญหาเช่นเดียวกับคุณและฉันแก้ไขโดยใช้ oh-my-fish (เป็นผู้จัดการปลั๊กอินสำหรับ fish เปลือก) https://github.com/oh-my-fish/oh-my-fish . คุณสามารถติดตั้งได้ด้วยคำสั่งนี้:

curl -L https://get.oh-my.fish | fish

จากนั้นติดตั้งปลั๊กอิน bang-bang ด้วยคำสั่งนี้:

omf install bang-bang 

1

ถ้าคุณใช้ !! เฉพาะในบริบทของ sudo !!คุณสามารถกำหนดปุ่มลัดเข้าสู่ ^s (CTRL + s) ซึ่งเติม sudo ให้กับคำสั่งของคุณ:

function prepend_command
  set -l prepend $argv[1]
  if test -z "$prepend"
    echo "prepend_command needs one argument."
    return 1
  end

  set -l cmd (commandline)
  if test -z "$cmd"
    commandline -r $history[1]
  end

  set -l old_cursor (commandline -C)
  commandline -C 0
  commandline -i "$prepend "
  commandline -C (math $old_cursor + (echo $prepend | wc -c))
end

สิ่งนี้อนุญาตให้พิมพ์คำสั่งใด ๆ และเสริม sudo ในขณะที่พิมพ์หรือชอบในกรณีของคุณแทน sudo !!

ดู ความคิดเห็นของ Ahti เกี่ยวกับการอภิปราย GitHub

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