ค้นหาเป็นกลุ่มเช่นใน emacs


3

มีวิธีการค้นหาเป็นกลุ่มเหมือนใน emacs หรือไม่?

แม่นยำยิ่งขึ้นบอกว่าฉันเริ่มค้นหาโดยเปิดการค้นหาแบบเพิ่มหน่วย เคอร์เซอร์จะไปที่นัดแรก ฉันกด Enter แล้วก็ 'n' เพื่อไปที่นัดต่อไป ตอนนี้ฉันต้องการเพิ่มตัวละครบางตัวในนิพจน์การค้นหาดั้งเดิมของฉันและค้นหาคู่ที่ตรงกันต่อไป ฉันทำสิ่งนี้ไม่ได้เพราะหลังจากกด 'Enter' โฟกัสจะออกจากพื้นที่ข้อความค้นหา

เทียบเท่า emacs จะเป็น ctrl-s blah ctrl-s ha และฉันจะค้นหาคำว่า 'blahha'

มันสมเหตุสมผลไหม มันเป็นไปได้?

แก้ไข

สถานการณ์ในอุดมคติคือการทำบางสิ่งเช่น / blah & lt; C-S & gt ;, และให้มันข้ามไปที่การเกิดครั้งที่สองของ 'blah' ทันทีในขณะที่ยังคงโฟกัสในบัฟเฟอร์การค้นหา


ทำไมถึงลงคะแนน?
juniper-

ในหัวข้อของการปรับแต่งการค้นหาคุณอาจต้องการดู q/. ดู :h q/ สำหรับข้อมูลเพิ่มเติม. นอกจากนี้ยังมี Vimcast ที่ดีเกี่ยวกับเรื่องนี้ vimcasts.org/episodes/...
Peter Rincker

คำตอบ:


5

สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถนึกได้จากส่วนหัวของฉันก็คือการตี /<C-R>/ จากนั้นจึงเพิ่มข้อความใหม่ของคุณต่อท้าย / จะปรากฏขึ้นเปิดกล่องโต้ตอบการค้นหา <C-R> ช่วยให้คุณสามารถวางจากหนึ่งในการลงทะเบียนของคุณและ / register เป็นบัฟเฟอร์การค้นหาก่อนหน้าซึ่งมีข้อความค้นหาล่าสุดของคุณ

หากคุณพบว่าคุณทำสิ่งนี้มากคุณอาจทำแผนที่เช่นนั้น

nnoremap <leader>/ /<C-R>/

ดังที่ฉันได้กล่าวถึงในความคิดเห็นอื่น ๆ ถ้าคุณต้องการที่จะอยู่ในบัฟเฟอร์การค้นหาคุณสามารถเพิ่มสิ่งนี้ใน vimrc ของคุณ ฉันคิดว่านี่จะทำให้คุณได้ในสิ่งที่คุณต้องการ

cnoremap <C-S> <CR>/<C-R>/

ฉันอาจจะโง่ แต่ก็ไม่ได้ผลสำหรับฉัน
juniper-

<C-R> นี่หมายถึงการควบคุม + R ในเวลาเดียวกัน ถ้ามันไม่ได้ผลฉันก็แปลกใจนิดหน่อย ฉันคิดว่าคำตอบของทอมน่าจะดีกว่าอยู่ดี
Alex

ได้. ฉันโง่. ฉันกดปุ่มควบคุม -R แต่ไม่กดปุ่ม '/' หลังจากนั้น เคล็ดลับหวาน ขอบคุณ!
juniper-

การแก้ไขที่แนะนำไม่ทำงาน กดปุ่ม C-S ขณะที่อยู่ในบัฟเฟอร์การค้นหาไม่ทำอะไรเลย
juniper-

1
<C-s> มักจะถูกกินโดยขั้ว
romainl

8

/<Up> หรือ /<C-P> จะนำคุณไปยังการค้นหาก่อนหน้าและคุณสามารถพิมพ์ต่อไปเพื่อต่อท้าย คุณสามารถเพิ่ม :nnoremap / /<Up> ถึง vimrc ของคุณหากคุณต้องการให้สิ่งนี้เป็นพฤติกรรมเริ่มต้นของคุณ


ใช้งานได้ แต่ก็ยังกดแป้นมากกว่าหนึ่งในอุดมคติ ฉันยังต้องกด 'Enter' หลังจากป้อนการค้นหาดั้งเดิมแล้ว '/' เพื่อค้นหาอีกครั้ง :)
juniper-

ลองเพิ่ม cnoremap <C-S> <cr>/<up> เพื่อ vimrc ของคุณ ฉันคิดว่าจะทำสิ่งที่คุณถาม
Alex

การเปลี่ยนแปลง. vimrc ไม่ได้ทำอะไรมาก เหมือนกับของอเล็กซ์ บางที C-S ของฉันก็ไม่ได้รับการยอมรับเช่นนี้ หรือฉันไม่ได้วางไว้ในตำแหน่งที่เหมาะสมแม้ว่ามันจะถูกเสียงกระทบกันระหว่างสองบรรทัด directiv
juniper-

ขอบคุณที่ช่วยเหลือ!! ทำงานร่วมกับ & lt; C-L & gt; นี่จะเป็นช่วงเวลาที่สำคัญสำหรับฟีเจอร์รับคู่: - / น่าเสียดายที่คุณแพ้การโยนเหรียญ
juniper-

อ๊ะคุณอาจมี & lt; C-S & gt; รับการแมปใหม่ให้กับบันทึก (บอกว่าคุณใช้ Windows และใช้การตั้งค่าเริ่มต้น) คุณสามารถตรวจสอบการแมปของคุณโดยดำเนินการ :map <C-S>
dash-tom-bang
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.