ฉันจะใช้คำสั่งกับทุกบรรทัดได้อย่างไร


19

หากฉันต้องการเยื้องบรรทัดทั้งหมดในเอกสารฉันสามารถพิมพ์>Gเพื่อใช้กับบรรทัดปัจจุบันและด้านล่างตามด้วยและ>ggเพื่อใช้กับบรรทัดข้างต้น

มีชุดค่าผสมที่ฉันสามารถใช้เพื่อนำ>ไปใช้กับทุกบรรทัดในคราวเดียวได้หรือไม่?

คำตอบ:


19

คุณกำลังมองหา:>คำสั่งและช่วง1,$( %สั้น ๆ ) สำหรับไฟล์ทั้งหมด

:%>

สำหรับความช่วยเหลือเพิ่มเติมดู:

:h :>
:h :range

5
เพราะชื่อของคำถามนี้ ( "ใช้คำสั่งไปยังทุกสาย") ผมรู้สึกว่ามันเป็นที่น่าสังเกตว่าตัวอย่างเช่นในคำถามที่กล่าวถึงผู้ประกอบการปกติโหมดในขณะที่คำตอบนี้ใช้คำสั่งคำสั่งโหมด> :>สิ่งเหล่านี้ไม่ใช่การพูดอย่างเคร่งครัดในสิ่งเดียวกัน ว่าพวกเขามีชื่อเดียวกันควรได้รับการพิจารณาเรื่องบังเอิญ; อย่าคิดว่าคุณสามารถแลกเปลี่ยนโอเปอเรเตอร์และคำสั่งทั่วไปได้ ยกตัวอย่างเช่นgUผู้ประกอบการแปลงข้อความเป็นตัวพิมพ์ใหญ่ แต่:%gUเป็นไม่ได้คำสั่งที่ถูกต้องเพื่อใช้เดียวกันเพื่อบัฟเฟอร์ทั้งหมด
tommcdo


3

โดยไม่ต้องออกจากโหมดปกติคุณสามารถทำได้โดยง่าย:

gg>G

2
ข้อเสียที่นี่คือคุณสูญเสียตำแหน่งของคุณในไฟล์
TankorSmash

คำตอบอื่น ๆ ทั้งหมดแชร์ว่าข้อเสียและ OP ไม่ได้กล่าวถึง "เคารพตำแหน่งเคอร์เซอร์" เป็นข้อกำหนด
romainl

1
<co> สามารถใช้เพื่อกลับไปยังตำแหน่งก่อนหน้าของคุณ @ วิธีแก้ปัญหาของ romainl ต้องการให้คุณย้อนกลับไปสองครั้งในขณะที่อีกวิธีหนึ่งจะกลับไปหนึ่งครั้ง
Brett Y

แน่นอนคุณสามารถชื่นชมคุณค่าของการรักษาสถานที่ของคุณและวิธีการที่คำตอบที่จะรักษาตำแหน่งนั้นจะมีค่า
TankorSmash

1
นั่นเป็นเหตุผลว่าทำไมมันจึงไม่ถูกลดระดับลง มันเป็นเพียงแค่ข้อความที่บอกว่ามีตัวเลือกที่ดีกว่าที่ไหนสักแห่งและพวกเขาควรจะดูต่อไป ตัวอย่างเช่นในเว็บไซต์การเขียนโปรแกรม SE รหัสเลอะเทอะที่แก้ปัญหาแก้ปัญหาได้ แต่คุณยังคงคาดหวังว่าจะหาวิธีแก้ไขปัญหาอื่นที่ช่วยแก้ปัญหาและดูดี
TankorSmash

3

ตัวเลือกอื่นที่ยังไม่ได้กล่าวถึง:

:g/^/>

นี้จะเรียกใช้คำสั่งบนเส้นทั้งหมดที่ตรงกับรูปแบบ>^

ข้อเสียคือสิ่งนี้จะเขียนทับประวัติการค้นหาของคุณ

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