ตำแหน่งเคอร์เซอร์หลังจากวางใน vi / vim


11

สิ่งหนึ่งที่ทำให้ฉันรำคาญในvi / vim :

ถ้าฉัน "งัด" (aka "คัดลอก") ข้อความบางส่วนให้ย้ายไปที่อื่นในไฟล์และทำ "วาง" เคอร์เซอร์ของฉันจะยังคงอยู่ที่จุดเริ่มต้นของข้อความที่ฉันเพิ่งวาง สิ่งนี้แตกต่างจากสิ่งที่บรรณาธิการสมัยใหม่ทำซึ่งวางเคอร์เซอร์ที่ท้ายข้อความที่ฉันวาง

ตัวอย่างเช่นสมมติว่า "copy buffer" มีคำว่า "ยอดเยี่ยม" ที่ฉันต้องการวางหลังจากคำว่า "an" ในวลี:

This is an editor

ในตัวอย่างเช่นgeditหลังจากวาง:

This is an awesome editor
                  ^ Cursor is here

ในvi :

This is an awesome editor
           ^ Cursor is here

ฉันสามารถเปลี่ยนvi ให้ทำตัวเหมือนgedit (ตัวอย่าง) ในเรื่องนี้ได้หรือไม่?


อะไรคือสิ่งที่แปลกยิ่งกว่าในรายการที่มีเวอร์ชัน Vim ของฉัน: ถ้าข้อความ yanked ยาวเกินหนึ่งบรรทัดเคอร์เซอร์จะอยู่ที่จุดเริ่มต้นของข้อความที่วางมิฉะนั้นมันจะอยู่ที่ท้ายข้อความที่วาง
Alexey

ขออภัยอย่างน้อย
Alexey

คำตอบ:


12

ในกลุ่มให้ใช้gpและgPแทนpและPเพื่อปล่อยเคอร์เซอร์หลังข้อความที่วาง หากคุณต้องการสลับการผูกให้วางบรรทัดต่อไปนี้ใน.vimrc:

noremap p gp
noremap P gP
noremap gp p
noremap gP P

อย่างแปลกประหลาดในกลุ่มpและPปล่อยเคอร์เซอร์ไว้ที่อักขระที่วางล่าสุดสำหรับบัฟเฟอร์อักขระแม้ในโหมดที่เข้ากันได้

ฉันไม่ทราบวิธีการเปลี่ยนแปลงนี้ในรุ่น vi อื่น ๆ


1
ฉันคิดว่า "vi" มักจะเป็น "กลุ่ม" จริง ๆ ใน distros ส่วนใหญ่ใช่ไหม
JoelFan

@JoelFan: distros Linux ที่ไม่ใช่แบบฝังส่วนใหญ่อาจจะ ที่อื่นไม่มี หากคุณตกลงกับโซลูชันเฉพาะกลุ่มเท่านั้นอย่านำ vi เข้าสู่การเล่น: 99% ของการกำหนดค่ากลุ่มนั้นไม่ได้อยู่ในพื้นฐาน vi
Gilles 'หยุดชั่วร้าย'

เกี่ยวกับ "nvi" ฉันสับสนเกี่ยวกับ vi ที่ต่างกันทั้งหมด ฉันส่วนใหญ่ insterested ใน debian และอูบุนตู
JoelFan

1
@JoelFan: nvi เป็น vi พื้นฐานที่ค่อนข้างมีจุดมุ่งหมายเพื่อให้เข้ากันได้กับการใช้งานดั้งเดิมและไม่มีอะไรเพิ่มเติม หากคุณสนใจเฉพาะการติดตั้งเดสก์ท็อปหรือเซิร์ฟเวอร์ที่คุณสามารถติดตั้งโปรแกรมได้อย่างง่ายดายคุณสามารถถือว่า vim นั้นมีให้บริการ ความคุ้นเคยกับการใช้งานน้อยกว่าจะมีประโยชน์เฉพาะในเซิร์ฟเวอร์ที่ถูกล็อคและอุปกรณ์ฝังตัว
Gilles 'หยุดชั่วร้าย'

1
ฉันใช้ "vi" เป็นส่วนใหญ่สำหรับเซิร์ฟเวอร์ที่ฉันสามารถติดตั้งได้ใช่
JoelFan

0

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

ฉันเดิมพันถ้าคุณขุดลึกพอคุณสามารถหาสูตรกลุ่มที่จะใส่ใน. vimrc ของคุณที่จะย้ายเคอร์เซอร์ไปที่จุดสิ้นสุดของการวางของคุณแม้ว่าคุณจะใช้ "p" ก็ตาม


2
Pออกจากเคอร์เซอร์ที่จุดเริ่มต้นของข้อความที่วางใน vi (อย่างน้อยใน nvi และต่อ POSIX)
Gilles 'หยุดชั่วร้าย'

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