อัพเดทล่าสุดเกี่ยวกับประสบการณ์ของฉัน
ส่วนหนึ่ง0"+y$dd
ในการทำแผนที่ต่อไปนี้เป็นสิ่งที่คุณควรพิจารณาอย่างรอบคอบและปรับให้เข้ากับรสนิยม / เวิร์กโฟลว์ / ประสบการณ์ของคุณ
ยกตัวอย่างเช่นบ่อยครั้งที่ฉันพบว่าตัวเองลงท้ายด้วยหลายบรรทัดในบัฟเฟอร์ที่ฉันเพียงต้องการเรียกใช้เคอร์เซอร์ที่เปิดอยู่ ในกรณีนี้ผมสามารถใช้แทน0"+y$dd:%d<CR>
0"+y$dd
และนี่เป็นเพียงหนึ่งในสถานการณ์ที่เป็นไปได้
คำตอบสุดท้ายสำหรับผู้ที่ชอบ vim
- ตั้งค่า
vim
เป็นEDITOR
/ ของคุณVISUAL
เพื่อให้เมื่อแก้ไขบรรทัดคำสั่งคุณจะใช้vim
ในการแก้ไข
- ใส่ไฟล์
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
ของคุณ~/.vimrc
ลงในแผนที่Leaderd(ซึ่งคุณจะไม่ค่อยใช้เมื่อแก้ไขคำสั่ง) กับการกระทำ "ลบบรรทัดปัจจุบันลงใน+
ทะเบียนโดยไม่ต้องมี EOL ต่อท้าย"
- เมื่อเสร็จสิ้นการแก้ไขคำสั่งในการแก้ไขตี
vim
EscapeLeaderd
- วางคลิปบอร์ดลงในเทอร์มินัล (ขึ้นอยู่กับเทอร์มินัล)
คำตอบเดิม
ฉันมักจะต้องทำเช่นเดียวกันและฉันทำมันดังต่อไปนี้ (ปกติฉันใช้set -o vi
อินbash
ดังนั้นคะแนน 1 และ 2 ในต่อไปนี้จะแตกต่างกันถ้าคุณใช้set -o emacs
ค่าเริ่มต้นตามคำถามของคุณดูเหมือนว่าจุด 1 และ 2 จะรวมเป็นหนึ่งในCtrl+ xตามด้วยCtrl+ eซึ่งยากต่อการพิมพ์ imho .)
- ตีEscapeให้อยู่ในโหมดปกติ
- กดปุ่มvเพื่อเข้าสู่ตัวแก้ไขเพื่อแก้ไขคำสั่ง
- แก้ไขคำสั่งตามที่ฉันชอบ
(นี่คือที่ที่คุณถามคำถาม)
- ตีEscape0"+y$dd:wq,
- หมายเหตุ: 0"+y$ไม่ใช่เพียงแค่"+yyตอนหลังจะคัดลอกบรรทัดใหม่ด้วยและสิ่งนี้จะส่งผลในการดำเนินการคำสั่งเมื่อวางมันในบรรทัดคำสั่ง
- วางคลิปบอร์ดบนบรรทัดคำสั่ง
- วิธีการทำเช่นนี้ขึ้นอยู่กับเทอร์มินัลที่คุณใช้ฉันเดา ผมตีCtrl+ Alt+ ในv
URxvt
- ดำเนินการอนุมัติ / แก้ไขด้วยตนเอง
เห็นได้ชัดว่านี่เป็นเพียงวิธีการแก้ปัญหาซึ่งประกอบด้วยการคัดลอกคำสั่งที่แก้ไขไปยังคลิปบอร์ดก่อนที่จะลบคำสั่งทั้งหมดดังนั้นจึงไม่มีสิ่งใดถูกดำเนินการเมื่อออกจากตัวแก้ไข อย่างไรก็ตามมันเป็นสิ่งที่ดีที่สุดที่ฉันสามารถทำได้ด้วยตัวเอง
ปรับปรุง
ในฐานะที่เป็นของฉันEDITOR
(และVISUAL
) มีค่าเท่ากับเมื่อฉันแก้ไขคำสั่งฉันแก้ไขในvim
vim
ในแง่นี้ฉันได้สังเกตเห็นว่าบัฟเฟอร์ตั้งชื่อ/tmp/bash-fc.random
โดยที่random
เป็นสตริงสุ่มตัวอักษรและตัวเลข 6 ตัว
นี้จะช่วยให้พื้นที่จำนวนมาก possiblities ถ้าคุณใช้vim
เป็นบรรณาธิการของคุณที่คุณสามารถกำหนดการทำแผนที่ของคุณบางอย่างในการดำเนินการทั้งลำดับ.vimrc
Escape0"+y$dd:wqตัวอย่างเช่นคำสั่งเดียวที่คุณไม่ค่อยใช้เมื่อแก้ไขบรรทัดคำสั่งคือLeaderd; ดังนั้นคุณสามารถใส่map
ping ต่อไปนี้ใน.vimrc
ไฟล์ของคุณ
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
ดังนั้นขั้นตอนที่ 4 ในสูตรด้านบนจึงกลายเป็น
- ตี EscapeLeaderd
edit-and-execute-command
ฉันได้พยายามส่วนตัวสถานการณ์นี้โดยเฉพาะและมันก็ต้องการให้ฉันกดทุกครั้งที่ผมทำ