ทำไมคำสั่งขีดล่าง _ จึงมีประโยชน์


15

ฉันสับสนเล็กน้อยว่าทำไมคำสั่งขีดล่าง_ซึ่งกระโดดไปที่จุดเริ่มต้นของบรรทัด (COUNT - 1) th ด้านล่างเคอร์เซอร์ได้รับรหัสของตัวเอง เมื่อผมจะใช้มากกว่านี้+หรือ^?

คำตอบ:


16

คำถามที่ดี!

การเคลื่อนไหวด้วยตัวเองคุณพูด_ถูกไม่ใช่กุญแจที่มีประโยชน์โดยเฉพาะ:h _

                            *_*
_  <underscore>     [count] - 1 lines downward, on the first non-blank
            character |linewise|.

คำสำคัญที่นี่คือ "linewise" ดังนั้นถ้าเป้าหมายของคุณเป็นเพียงการเลื่อนเคอร์เซอร์ไปแล้ว^, jและทั้งหมดได้งานทำและมีไม่มากที่จะจุด+ _แต่เป็นอาร์กิวเมนต์ดำเนินการให้_มีประสิทธิภาพสุด

_จำนวนมากของทางลัดคู่สำคัญเป็นทางลัดจริงเพียงเพื่อ ตัวอย่างเช่น,

dd -> d_
cc -> c_
yy -> y_
Y  -> y_

ฯลฯ เนื่องจากเป็นการเคลื่อนไหวแบบ linewise โดยทั่วไปจะเลือกทั้งบรรทัดเพื่อดำเนินการโดยไม่คำนึงถึงตำแหน่งที่เคอร์เซอร์ของคุณเริ่มต้นในขณะที่^เพิ่งเปลี่ยนจากตัวละครของคุณไปเป็นแบบแรกที่ไม่ว่างเปล่า

มันช่วยฉันได้เมื่อคิดเกี่ยวกับการเคลื่อนไหว linewise vs blockwise เพื่อจินตนาการว่าฉันกำลังกดอย่างใดอย่างหนึ่งvหรือVขวาก่อนการเคลื่อนไหว ดังนั้นผมคิดว่าd^จะเป็นเทียบเท่ากับv^dและฉันคิดd_ที่จะเทียบเท่าหรือV_d V^dแน่นอนคุณยังสามารถแทนที่การเคลื่อนไหวเพื่อบังคับให้ linewise หรือ characterwise ดังนั้นdv_จริงๆแล้วเหมือนกันกับd^หรือv^dและdVwเหมือนVwdที่เหมือนd_กันทุกประการ

สาเหตุที่เป็นพิเศษคือ "count-1th" บรรทัดนั้นเพื่อให้1dd(ซึ่งจริงๆแล้วd1_) ลบหนึ่งบรรทัดทั้งหมด2dd(ซึ่งจริงๆแล้วd2_) ลบ 2 บรรทัดทั้งหมด3ddลบ 3 บรรทัดทั้งหมด ฯลฯ


1
เอาล่ะ แต่ฉันจะใช้มันจริงเหรอ? ddจะง่ายกว่าd_และง่ายกว่า3yj 4y_
Toothrot

5
@toothrot หากคุณกำลังสร้างโอเปอเรเตอร์ของคุณเองและต้องการทำงานในบรรทัดถัดไปn
DJMcMayhem

5
@Toothrot ฉันคิดว่าฉันต้องการที่จะชี้แจงว่าเล็กน้อย ในการแก้ไขเสียงเรียกเข้าแบบวันต่อวันไม่มันไม่มีประโยชน์อย่างยิ่ง ฉันแทบไม่เคยใช้เลย เหตุผลที่มีประโยชน์ก็เพราะว่ามันเป็นนิยามของคำสั่งที่มีประโยชน์มากมาย ddอาจจะสะดวกสบายกว่าd_แต่เพราะเป็นเพียงการทำแผนที่ไปยังdd d_และยังมีประโยชน์ใน vimscript
DJMcMayhem

9
การกระทำบางอย่างที่ทำหน้าที่ "เคลื่อนไหว" อาจไม่มีทางลัดอื่น บางอย่างเช่น "gU_" จะเป็นตัวพิมพ์ใหญ่ทุกอย่างในบรรทัดปัจจุบันแม้ว่าเคอร์เซอร์จะไม่อยู่ที่จุดเริ่มต้นของบรรทัด
bmb

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