เหตุใดการเปลี่ยนกะทำงานเฉพาะในโหมดแทรกเท่านั้น?


13

เพิ่งลองวางเนื้อหา (ใน Git Bash บนเซิร์ฟเวอร์ CentOS) เป็นไฟล์โดยใช้ vim
ฉันเพิ่งเปิดไฟล์และลองใช้shift+ insertและฉันสังเกตว่าครึ่งแรก (คร่าว ๆ ) จะถูกตัดออก แต่ถ้าฉันตั้งเสียงเรียกเข้าเป็นโหมดแทรกและกดshift+ insertทุกอย่างจะถูกวางอย่างสมบูรณ์แบบ
แค่สงสัยว่าทำไมถึงเป็นแบบนี้?

ขอบคุณ


เฮ้ฉันมีสองนิ้วหัวแม่มือเช่นกัน !!! : D
RonJohn

คำตอบ:


24

ทั้งShift+ Insertและ "การวาง " ในเทอร์มินัลจะทำงานในลักษณะเดียวกัน - พวกเขาเลียนแบบการกดปุ่ม

นี่คือความแตกต่างที่สำคัญซึ่งมักเป็นไปไม่ได้ที่เทอร์มินัลจะสร้างคุณพิมพ์หรือวางหรือไม่ หมายเหตุ : เทอร์มินัลบางตัวรองรับโหมด " แปะติดวงเล็บ " หลังจากความคิดเห็นของ @ Josh ฉันยังเจอปลั๊กอินแปะเป็นกลุ่มในxtermซึ่งคุณอาจสนใจ

ข้อมูลที่วางของคุณจะหายไปจนถึงตัวอักษรตัวแรกที่เข้าสู่โหมดแทรก คุณอาจพบว่าเคอร์เซอร์ของคุณถูกย้ายและส่วนอื่น ๆ ของไฟล์มีการเปลี่ยนแปลง (เช่น: เปลี่ยนกรณี / ลบ / etc) ...

โดยสรุปหากคุณวางข้อความที่คุณต้องการแทรกลงในไฟล์ให้เข้าสู่โหมดแทรกก่อน


ลองคัดลอกข้อความต่อไปนี้และวางลงในเทอร์มินัลที่เรียกใช้ Vim (ไม่ใช่ในโหมดแทรก):

hello how are you

ผลลัพธ์จะเหมือนกับการพิมพ์ตัวอักษรเดียวกันบนคีย์บอร์ดของคุณ:

ผลของการวางเป็นกลุ่ม

ในกรณีนี้มันจะทำให้คุณอยู่ในโหมดแทรก ...

ตอนนี้ลองออกจากโหมดแทรก - Esc- และวางต่อไปนี้

/are
n

นี่เป็นการค้นหา "เป็น":

ผลของการวางเป็นกลุ่ม

ตอนนี้วางสิ่งนี้:

:0
dG

โอ้ไม่ ... ทุกอย่างหายไปหมดแล้ว!

ไปหมดแล้ว


คุณจะพบว่าถ้าคุณเปิดใช้งานการเยื้องแล้วการวางบล็อกของรหัสลงในกลุ่ม (ในโหมดแทรก) จะเยื้องมากเกินไป - มันจะเยื้องอัตโนมัติและจากนั้นรหัสที่วางของคุณจะรวมการเยื้อง

def my_print(message):
    print(message)
    print('done...')

วางรหัส

ในการแก้ไขปัญหานี้ให้ใช้คำสั่ง:set pasteและ:set nopaste

รหัสการวาง (โหมดการวาง)


4
"นี่คือความแตกต่างที่สำคัญที่เทอร์มินัลไม่สามารถทำได้ - คุณกำลังพิมพ์หรือวาง?" - สิ่งนี้ไม่เป็นความจริงทั้งหมดเทอร์มินัลและแอปพลิเคชั่นบางตัวรองรับ "pasteed paste" ซึ่งมีการส่งลำดับพิเศษก่อนและหลังข้อความที่วาง
Ash

@ Josh: น่าสนใจขอบคุณ ... ความคิดเห็นของคุณยังทำให้ฉันเป็นกลุ่มปลั๊กอิน
Attie

ฉันเป็นคนเดียวที่ใส่ใจโดยset nopaste? unset pasteฉันคาดหวัง
Eric Duminil

@ThisGuyHasTwoThumbs เป็นทางเลือกอย่างน้อยเมื่อใช้ Vim คุณอาจต้องการใช้การ"+ลงทะเบียนเพื่อโต้ตอบกับคลิปบอร์ดของระบบ ข้อเสียคือบางระบบหรือบิลด์ของ Vim อาจใช้"*แทนหรือไม่สนับสนุนคลิปบอร์ดระบบ แต่ในประสบการณ์ของฉัน"+มีความน่าเชื่อถือ
8bittree
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.