ฉันจะดึง (คัดลอก) อักขระเดียวที่เคอร์เซอร์วางอยู่ได้อย่างไร


49

ฉันรู้หลายวิธีในการคัดลอกสิ่งต่าง ๆ :

yiw= ดึงในคำปัจจุบัน
yaw= ดึงทุกคำ (รวมถึงช่องว่างท้าย)
yy = ดึงสายปัจจุบัน
3yy= ดึงสามบรรทัดที่เริ่มต้นที่ปัจจุบัน
yap= ดึงทุกย่อหน้า (รวมถึงขึ้นบรรทัดใหม่)

ฉันยังสามารถลบหรือเปลี่ยนอักขระเดียว:

x= ลบอักขระภายใต้เคอร์เซอร์
r= แทนที่อักขระใต้เคอร์เซอร์

แต่คุณจะคัดลอกอักขระเพียงตัวเดียวในโลกได้อย่างไร?

แรงจูงใจของฉันคือฉันกำลังเขียนโปรแกรมใน Perl 6 และตัวดำเนินการบางตัวเป็นอักขระ Unicode ตอนนี้ฉันกำลังใช้รหัส Perl 6 Config :: INI ของ tadzikเป็นจุดเริ่มต้นสำหรับ parser ที่กำหนดเองเช่นและฉันอยากจะคัดลอกตัวอักษรภาษาฝรั่งเศสตัวเดียว (ตัวดำเนินการไฮเปอร์)จากบรรทัดนี้ :

my %hash = $<sections>».ast;

ฉันสามารถใช้โอเปอเรเตอร์ไฮเปอร์เวอร์ชัน "Texas" สองตัวละคร>>แต่ฉันคิดว่ามันดูดีกว่าและคลุมเครือน้อยกว่า>>>:

my %hash = $<sections>>>.ast;

ป้อนคำอธิบายรูปภาพที่นี่
ป้อนคำอธิบายรูปภาพที่นี่


1
ได้อย่างง่ายดายเขียนการดำเนินการกับการเคลื่อนไหวตามปกติ:yl
VanLaser

@VanLaser ความคิดที่ดี! ฉันคิดว่าการเคลื่อนไหวจะไม่ทำงานเพราะฉันต้องการตัวละครตัวเดียวเท่านั้น แต่ข้อเสนอแนะของคุณใช้งานได้ดีสำหรับ ASCII โพสต์ว่าเป็นคำตอบและฉันจะโหวตให้ ที่น่าสนใจมันไม่ได้ทำงานกับตัวละคร Unicode นี้ แต่ytX(" yank til X") ดูเหมือนว่าจะทำงานเมื่อXเป็นตัวละครทางด้านขวา
Christopher Bottoms

ฉันสงสัยว่าเป็นตัวละครตัวหนึ่งไม่ว่าจะเป็น Unicode หรือไม่มีตัวละครสองตัวซ่อน / แทนที่ด้วยconcealคุณสมบัติVim ?
VanLaser

@VanLaser ดูเหมือนว่า "อักขระ" สองตัว
Christopher Bottoms

BTW คุณจะแนะนำ»ตัวละครอย่างไร
VanLaser

คำตอบ:


41

การเขียนการดำเนินการดึงด้วยการเคลื่อนไหว "หนึ่งตัวอักษรไปทางขวา" ที่ใช้บ่อยควรทำงาน: yl.

BTW (เพื่อแสดงความคิดเห็นในความคิดเห็น OP) สำหรับฉัน»สามารถดึงในลักษณะนี้ใน gVim หรือ terminal Vim บางทีปัญหาการเข้ารหัส (ไฟล์)?


4
Yanking ก็»ใช้ได้ดีสำหรับฉันเช่นกัน ฉันใช้vyเพื่อดึงตัวละครตัวเดียว ไม่แน่ใจว่าทำไมฉันถึงใช้สิ่งนั้นมากกว่าylฉันอาจมีเหตุผลสักครั้ง แต่ตอนนี้มันเป็นแค่ภาพสะท้อน
jjaderberg

3
ฉันมักจะy<space>คิดว่ามันเป็นตัวละครที่อยู่ใต้เคอร์เซอร์และฉันจะเพิ่มมันเป็นคำตอบ แต่หลังจากตรวจสอบความช่วยเหลือที่ฉันตระหนัก<space>และlเป็นสิ่งเดียวกัน
Brett Y

เป็นเรื่องที่ดีและดูเหมือนจะตีได้ง่ายกว่ายกเว้นบางทีเมื่อมีการใช้พื้นที่ในฐานะผู้นำ
VanLaser

1
@jjaderberg ฉันชอบความคิดเห็นของคุณโปรดโพสต์มันเป็นคำตอบ ขอบคุณ!
Christopher Bottoms

1
@ brettanomyces ฉันชอบความคิดเห็นของคุณกรุณาโพสต์มันเป็นคำตอบ ขอบคุณ!
Christopher Bottoms

14

ปกติฉันกดvy( visual yank ) บางครั้งxu( ลบเลิกทำ ) ด้วย นอกจากนี้หากคุณต้องการดึงถ่านก่อนเคอร์เซอร์lvyคุณสามารถกดXuฉันคิดว่านั่นเป็นเหตุผลที่ฉันกดxuกระแสไฟ :-)

โปรดทราบว่าXuจะทำให้เคอร์เซอร์ของคุณเลื่อนไปที่อักขระนั้น


hvyคุณหมายถึง ฉันพยายามแก้ไข แต่เห็นได้ชัดว่าการแก้ไขอักขระหนึ่งตัวในคำสั่ง vim ไม่ใช่การเปลี่ยนแปลงที่สำคัญที่จะยอมรับได้
Shahbaz

9

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

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