แทนที่รูปแบบด้วยหมายเลขบรรทัดปัจจุบัน


15

ฉันต้องการแทนที่ 'x' ในไฟล์นี้ด้วยหมายเลขบรรทัดปัจจุบัน นั่นคือการเปลี่ยนแปลง

x
x
x

ถึง

1
2
3

สำหรับตอนนี้ฉันใช้ Perl one-liner:

perl -pi -e '$x=$.; s/x/$x/' myfile.txt

ฉันคิดว่า UltraEdit สามารถทำได้ด้วยการเลือกแนวตั้งและแทนที่ สิ่งนี้สามารถทำได้ในกลุ่ม? (ตัวอย่างของฉันที่นี่ถือว่า 'x' คือทั้งหมดที่มีในหนึ่งบรรทัด แต่บรรทัดในไฟล์จริงของฉันมีความซับซ้อนมากขึ้น)

คำตอบ:


23

ใช่เป็นกลุ่มสามารถทำได้! จะค้นหาทั่วโลกสำหรับx, \=printf("%d", line('.')และแทนที่ด้วย ตัวอย่างเช่น:

:%s/x/\=printf("%d", line('.'))

คุณสามารถเปลี่ยนxเป็นการค้นหาอื่นได้หากต้องการ

คำอธิบาย:

นี้แทนที่การเกิดขึ้นของทุกx(หรือสิ่งที่คุณค้นหา) \=ที่มีการลงทะเบียนการประเมินผล รีจิสเตอร์นี้ประเมินโค้ด vimscript และส่งคืนสตริง ในกรณีนี้โค้ดที่กำลังถูกประเมินคือ "พิมพ์บรรทัดที่เราใช้เป็นเลขทศนิยม"


9

เมื่อคุณพูดถึงการเลือกและแทนที่ในแนวตั้งคุณก็สามารถทำได้เช่นกัน ใช้CtrlVเพื่อเลือกล็อคข้อความที่คุณต้องการแทนที่จากนั้น cพิมพ์ 0 เพื่อแทนที่ด้วย 0 จากนั้นเลือก 0s เหล่านั้น:

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

จากนั้นกดg<c-a>( g+ Ctrla):

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

หากคุณเปลี่ยนคอลัมน์เดียวคุณสามารถใช้gvเพื่อเลือกพื้นที่เดียวกันได้อย่างรวดเร็ว

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