ฉันเห็นนักพัฒนาหลายคนใช้คำสั่งนี้เพื่อตั้งค่าตัวเลือกเป็น vi ฉันไม่เคยเข้าใจการใช้งานจริงของสิ่งนี้?
เมื่อใช้คำสั่ง bash การสลับไปใช้ vi ช่วยอะไรได้บ้าง
ฉันเห็นนักพัฒนาหลายคนใช้คำสั่งนี้เพื่อตั้งค่าตัวเลือกเป็น vi ฉันไม่เคยเข้าใจการใช้งานจริงของสิ่งนี้?
เมื่อใช้คำสั่ง bash การสลับไปใช้ vi ช่วยอะไรได้บ้าง
คำตอบ:
โดยการตั้งค่าการแก้ไข ReadLine ของคุณทั้ง emacs (ค่าเริ่มต้น) หรือ vi ( set -o vi) ที่คุณจะได้เป็นหลักมาตรฐานคำสั่งการแก้ไขของคุณข้ามเปลือกและบรรณาธิการของทางเลือกที่ 1
ดังนั้นหากคุณต้องการแก้ไขคำสั่งในเชลล์คุณใช้คำสั่งเดียวกัน2ที่คุณใช้หากคุณอยู่ในโปรแกรมแก้ไขข้อความ ซึ่งหมายความว่าต้องจำไวยากรณ์คำสั่งเดียวเท่านั้นและ (หากไม่ได้ประโยชน์เพียงพอ) อาจทำให้การแก้ไขของคุณในทั้งสองสภาพแวดล้อมเร็วขึ้นและมีข้อผิดพลาดน้อยลง ...
คุณสามารถใช้ประโยชน์จากความสัมพันธ์นี้ในโหมด vi โดยดึงคำสั่งใด ๆ จากประวัติเชลล์ของคุณกดปุ่มEscapeเพื่อเข้าสู่โหมดคำสั่งแล้วกดปุ่มvซึ่งจะเปิด $ EDITOR ของคุณด้วยคำสั่งที่โหลดเพื่อแก้ไขที่ซับซ้อนมากขึ้นด้วยพลังเต็ม เมื่อคุณแก้ไขคำสั่งเสร็จแล้วเพื่อความพึงพอใจของคุณ:wqและคำสั่งจะถูกดำเนินการในเชลล์ของคุณ
1. แน่นอนว่าคุณใช้ Emacs หรือ Vi / m เป็นเครื่องมือแก้ไขของคุณ
2. หรืออย่างแม่นยำยิ่งขึ้นส่วนย่อยของมัน ...
set -o viที่คนส่วนใหญ่ไม่รู้ นี่เป็นจริงโดยเฉพาะอย่างยิ่งถ้าคุณต้องการออกคำสั่งเดียวกันหลายครั้งด้วยข้อโต้แย้งที่แตกต่างกัน (เป็นคำสั่งหลายบรรทัดคำสั่ง)
set -o viเคล็ดลับคือไม่ได้จริงๆได้เปรียบที่เฉพาะเจาะจงเพื่อ ภายใต้การตั้งค่าเริ่มต้นของset -o EMACSCx, Ce จะแสดงหน้าต่าง emacs (หรือ$EDITORถ้าตั้งค่า) ซึ่งคุณสามารถแก้ไขคำสั่งก่อนที่จะเรียกใช้
โหมด Vi เป็นการปรับปรุงการใช้งานอย่างมากหากคุณใช้ไคลเอนต์ SSH มือถือเช่น ConnectBot สำหรับ Android
นี่คือสาเหตุที่ลดการพึ่งพาคีย์ตัวปรับแต่ง
Vim นั้นใช้งานง่ายกว่าด้วยคีย์บอร์ดเสมือนบนสมาร์ทโฟนหรือแท็บเล็ตมากกว่า ... สิ่งอื่นรวมถึงวิธีการแก้ไขแบบเนทีฟที่สร้างขึ้นใน Android UI กระแทกแดกดันมันเป็นเรื่องง่ายที่จะแก้ไขแหล่ง C กับ Vim ในเซสชั่น SSH กว่าที่จะแก้ไขพูดข้อความโต้ตอบแบบทันทีด้วยวิดเจ็ตการแก้ไขของแพลตฟอร์มเองเพื่อจุดประสงค์นั้น
โหมด Shell vi ให้ประโยชน์ที่คล้ายคลึงกัน
มันช่วยให้คุณแก้ไขสิ่งต่าง ๆ ที่บรรทัดคำสั่งโดยใช้โหมด vi และการดำเนินงาน
ตัวอย่างจะช่วยทำให้ชัดเจนมากขึ้น:
คุณพิมพ์ cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
แต่คุณได้รับข้อผิดพลาด - คุณควรพิมพ์file1.txtไม่ได้file1.xt
โดยไม่ต้องตั้งค่าตัวเลือกนี้คุณกดลูกศรขึ้นและจากนั้นกดปุ่มลูกศรซ้ายและปล่อยให้มันซ้ำสำหรับ ... 35 ครั้งจนกว่าคุณจะได้รับการแล้วคุณพิมพ์พิเศษ.xt tการกดแป้นพิมพ์ทั้งหมด: 37
ด้วยชุดตัวเลือกนี้คุณสามารถ (ตัวอย่าง) กดลูกศรขึ้นหนึ่งครั้งจากนั้นหนีสำหรับโหมดคำสั่ง 0 เพื่อไปที่จุดเริ่มต้นของบรรทัดแล้ว/xt[return]ไปที่xtและจากนั้นคุณสามารถพิมพ์iสำหรับโหมดแทรกและพิมพ์ t ที่ขาดหายไป นี่อาจดูซับซ้อนอย่างเมามันในบางประเด็น แต่ถ้าคุณเป็นผู้ใช้กลุ่มคำสั่งเหล่านี้เป็นที่รู้จักกันดีอยู่แล้ว การกดแป้นทั้งหมด: 9
Alt+Bs หรือ a Ctrl+Alt+] .ในโหมด Emacs ด้วยดังนั้นนี่ไม่ได้เป็นตัวอย่างที่ดีสำหรับฉัน
Up, Ctrl+Alt+], ., Right, t, Enter= 8. Vi โหมด: Up, F, ., a, t, Enter= 7. :)
Escอยู่ในนั้นเช่นกันมันเป็นความร้อนแรง
ฉันไม่แน่ใจว่ามีข้อได้เปรียบโดยตรง ฉันเป็นviผู้ใช้งานมานานกว่า 20 ปี ฉันยังเป็นscreenผู้ใช้งานได้นานขึ้นและใช้งานโปรแกรมอื่น ๆ ที่ใช้viคีย์ เป็นเรื่องธรรมดาที่ฉันจะตั้งโหมด "vi" เป็น bash แต่ฉันยังทำงานกับเซิร์ฟเวอร์หลายร้อยเครื่องในงานของฉันส่วนใหญ่ถูกตั้งค่าเป็นโหมด "emacs" เริ่มต้น ดังนั้นฉันต้องใช้ทั้งสองโหมด แต่มันเป็นเพียงเรื่องของการตั้งค่า
sshใช้งาน แน่นอนว่ามันไม่ได้ช่วยอะไรตอนที่ฉันใช้เครื่องจักรที่ไม่มี.bashrcสิ่งของอยู่
ข้อได้เปรียบหลักคือการแก้ไขคำสั่งของคุณ หากคุณคุ้นเคยกับ Vim และชอบปรัชญาของผลประโยชน์จะต้องชัดเจน หากคุณมีประสบการณ์กับหน่วยความจำของกล้ามเนื้อนิ้วของคุณจะทำให้คุณแก้ไขคำสั่งทุบตีของคุณในความเร็วฟ้าผ่า
หมายเหตุ : หากคุณไม่ชอบการแก้ไข modal คุณยังควรเรียนรู้ที่จะใช้ประโยชน์จากโหมด emacs (ค่าเริ่มต้น) นี่คือบางส่วนแป้นพิมพ์ลัดที่ดีเป็นที่จะทำงานเกี่ยวกับกระบวนการใด ๆ ที่มีเช่นreadlinebash
หากคุณคุ้นเคยviคุณจึงตั้งเป็นโหมด vi เป็นตัวแก้ไขเชลล์ของคุณ นั่นเป็นเหตุผลที่ชัดเจน ส่วนอีกคนหนึ่งคือเมื่อbashไม่สามารถใช้ได้โดยเริ่มต้นในบางระบบปฏิบัติการ (ส่วนใหญ่ใช้ระบบปฏิบัติการยูนิกซ์เช่น AIX, Solaris) ดังนั้นประวัติเปลือกไม่สามารถใช้ได้ดังนั้นวิธีที่คุณได้รับคำสั่งที่ผ่านมาโดยการตั้งค่าแก้ไขเปลือกviและEsc, Ctrl+ KหรือCtrl+L
มันสามารถช่วยให้คุณนำทางและแก้ไขบรรทัดคำสั่งได้อย่างง่ายดายโดยใช้ทางลัดของกลุ่มเช่นเลื่อนไปทางขวาหนึ่งคำได้อย่างรวดเร็วลบคำ
โดยทางลัดเริ่มต้นเมื่อคุณต้องไปที่จุดสิ้นสุดของบรรทัดคุณต้องCtrl+ eในขณะที่set -o viคุณเพิ่งกด$เช่นในกลุ่ม
อาจจะช้าไปงานปาร์ตี้ แต่สำหรับฉันที่ใช้โหมด vi เป็นเรื่องเกี่ยวกับการสร้าง Scrips เชิงโต้ตอบ ..
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
ตัวอย่างง่ายๆของสิ่งที่อาจจะค่อนข้างซับซ้อน .. การใช้ESCkvทำให้คุณเข้าสู่เซสชัน vi ที่คุณสามารถปรับเปลี่ยนสคริปต์และจากนั้น:wqมันจะทำงาน
viโหมด แต่เป็นตัวอย่างที่ดีของรหัส bash (1) การใช้เอาต์พุตจากlsเป็นอินพุตกับการประมวลผลประเภทอื่น ๆ เป็นความคิดที่ไม่ดี (2) $(…)ไวยากรณ์สำหรับการทดแทนคำสั่งถูกพิจารณาอย่างกว้างขวางว่าอ่านได้ง่ายกว่า`…`ไวยากรณ์ (3) คุณควรอ้างอิงตัวแปรเชลล์ทุกครั้งยกเว้นว่าคุณไม่มีเหตุผลที่ดีและคุณแน่ใจว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่