Bash มีคุณสมบัติที่คล้ายกันเช่นการบันทึกอัตโนมัติและการเน้นของปลาหรือไม่?


37

ฉันเพิ่งสังเกตเห็น 2 คุณสมบัติในปลาและสงสัยว่าใครรู้ว่าสิ่งเหล่านี้ยังมีอยู่ใน Bash?

การเน้นไวยากรณ์

เอสเอส # 1

ข้อมูลจำเพาะ:

  • คุณจะสังเกตเห็นได้อย่างรวดเร็วว่าปลาทำการเน้นไวยากรณ์ขณะที่คุณพิมพ์ คำสั่งที่ไม่ถูกต้องจะมีสีแดงตามค่าเริ่มต้น:
  • คำสั่งอาจไม่ถูกต้องเนื่องจากไม่มีอยู่หรืออ้างถึงไฟล์ที่คุณไม่สามารถดำเนินการได้ เมื่อคำสั่งใช้ได้ถูกต้องคำสั่งนั้นจะปรากฏเป็นสีอื่น
  • fish จะขีดเส้นใต้พา ธ ไฟล์ที่ถูกต้องขณะที่คุณพิมพ์
  • สิ่งนี้บอกคุณว่ามีไฟล์ที่ขึ้นต้นด้วย 'somefi' ซึ่งเป็นข้อเสนอแนะที่มีประโยชน์เมื่อคุณพิมพ์

แนะนำอัตโนมัติ

เอสเอส # 2

ข้อมูลจำเพาะ:

  • fish แนะนำคำสั่งในขณะที่คุณพิมพ์และแสดงคำแนะนำทางด้านขวาของเคอร์เซอร์เป็นสีเทา
  • มันรู้เส้นทางและตัวเลือก
  • หากต้องการยอมรับคำแนะนำอัตโนมัติให้กดลูกศรขวาหรือ Control-F หากการบันทึกอัตโนมัติไม่ใช่สิ่งที่คุณต้องการเพียงแค่เพิกเฉย

4
เกี่ยวกับอะนาล็อกที่ใกล้เคียงที่สุดที่bashมีการเติมข้อความอัตโนมัติ น่าเสียดายที่การfishเขียนสคริปต์เป็นเรื่องbashธรรมดามากจนเป็นสิ่งที่แย่มากสำหรับสิ่งที่ฉันทำอยู่เป็นประจำ
DopeGhoti

1
@DopeGhoti - ด้วยเหตุนี้ฉันจึงถามคำถามที่ 8-)
slm

2
ลองใช้ลิงค์ ssh แฝงสูงคุณจะเกลียดคุณสมบัติแบบอินไลน์อย่างรวดเร็ว
llua

1
@slm ส่วนใหญ่เป็นกรณีมุมและบางคนก็น่ารังเกียจกว่าคนอื่น ๆ แต่มันอาจไม่ดีนักเมื่อคุณถูกปรับใช้ในสภาพแวดล้อมที่หลากหลาย "การให้บริการนักฆ่า" สำหรับ 4.3 มีcd -@, wait -n, globasciirangesและ$BASH_COMPATซึ่งคนจำนวนมากต้องการ ที่เหลือเกือบทั้งหมดเป็นเพียงการดับเพลิง
Chris Down

1
@strugee มีปากกาเน้นข้อความ zsh - github.com/zsh-users/zsh-syntax-highlightingฉันพบมันผ่าน oh-my-zsh ที่เจ๋งมาก
โจบล็อค

คำตอบ:


2

ฉันไม่แน่ใจเกี่ยวกับการเน้น Bash แต่คุณลักษณะการทำให้สมบูรณ์อัตโนมัติของ Bash มีแนวโน้มที่จะแนะนำอัตโนมัติตามที่คุณกล่าวถึง

แม้ว่าการเติมข้อมูลอัตโนมัติของ Bash จะไม่สามารถแสดงคำแนะนำได้ตามที่คุณต้องการ แต่จริง ๆ แล้วมันจะเติมเนื้อหาเมื่อคุณกด [TAB] หากมีตัวเลือกมากมายสำหรับการเติมเนื้อหาให้สมบูรณ์คุณกด [TAB] สองครั้งและจะแสดงตัวเลือกทั้งหมด

ตัวอย่างเช่น:

$ cat /etc/pa[TAB]

=> ไม่มีอะไรเกิดขึ้น

$ cat /etc/pa[TAB][TAB]
pam.d/       passwd       paths        paths.d/

=> แสดงไฟล์ / dirs ทั้งหมดที่ขึ้นต้นด้วย "/ etc / pa"

คุณสามารถกำหนดค่าให้ทำการเติมอัตโนมัติด้วยคำสั่งพารามิเตอร์ไฟล์ / ไดเรกทอรี ... หรือเล่นกับมันเช่นการเขียนโปรแกรม
ข้อมูลเพิ่มเติมได้ที่: http://www.linuxjournal.com/content/more-using-bash-complete คำสั่ง

หากคุณต้องการข้ามไปยังคำสั่งที่ผ่านมากด ^ R แล้วพิมพ์ตัวอักษรบางตัว:

(reverse-i-search)`cd': cd ..

=> ข้ามไปยังคำสั่งสุดท้ายเริ่มต้นด้วย "cd"

ฉันรู้ว่านี่ไม่ใช่สิ่งที่คุณต้องการ แต่เกือบจะทำแบบเดียวกันและช่วยให้คุณสะดวกสบายพอ


8
ขอขอบคุณที่สละเวลาตอบคำถามนี้และเสนอข้อเสนอแนะนี้ ฉันคุ้นเคยกับคุณสมบัตินี้และใช้งานทุกวันคุณสมบัติที่ฉันต้องการคือมันจะทำแบบไดนามิกโดยไม่ต้องกด [TAB] [TAB] เพื่อเริ่มต้น
slm

2

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

ฉันพบที่ใกล้ที่สุดคือhttps://github.com/dvorka/hstrกล่องคำแนะนำเชลล์


นอกเหนือทุบตี:

ฉันไม่ได้ทดสอบ แต่มีเพียง "พอร์ตทางเลือก" เดียวที่ฉันพบว่าถูกเขียนขึ้นสำหรับzsh: https://github.com/zsh-users/zsh-autosuggestions

บาง qwant'ing ยังนำฉันไปhttps://websetnet.com/shell-packs-power-python-bash/และhttps://github.com/xonsh/xonshนามแฝงhttp://xon.shบางทีมันอาจจะยัง รองรับที่นอกกรอบ

... แต่ฉันค่อนข้างแน่ใจว่าคุณไม่สนใจทางเลือกอื่นในการทุบตีเพราะคุณเพียงแค่เปลี่ยนเป็นปลา;)

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