Backspace ในโหมดแทรกใน vi ไม่ได้ลบอักขระ


69

ฉันยังใหม่กับ vi จริง ๆ แล้วฉันได้เริ่มเรียนรู้ vi จากวันนี้และฉันติดอยู่กับพฤติกรรมของปุ่ม Backspace

ที่จริงแล้วเมื่อฉันติดเครื่อง vi บน Ubuntu 12.04 ของฉันเป็นครั้งแรกที่ปุ่ม backspace ของฉันทำงานได้ตามปกติ แต่หลังจากนั้นมันก็เริ่มทำงานผิดปกติ เมื่อใดก็ตามที่ฉันกด backspace ในโหมดแทรกมันก็แค่ย้ายที่เดียวไปทางซ้ายแทนที่จะลบตัวละคร

ฉันจะรับฟังก์ชั่นแบ็คสเปซกลับได้อย่างไร โปรดทราบว่าฉันไม่ต้องการติดตั้งเป็นกลุ่มหรือตั้งค่า nocompatibilty

คำตอบ:


39

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

เช่นเริ่มต้นด้วยโหมดคำสั่งบนบรรทัดว่างต่อไปนี้จะส่งผลให้บรรทัดประกอบด้วยfo:

ifooBackspaceEsc

ก่อนที่คุณจะกดEscปุ่มบรรทัดจะอ่านfooแต่ตัวสุดท้ายoถูกติดแท็กเป็น "ลบคอลัมน์" ดูhttp://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (ส่วนใหญ่เป็นจุด 4 ภายใต้หัวข้อนั้นและเรียกดูอีกเล็กน้อยเพื่ออ่านเกี่ยวกับ <Control> -H)


72

นี่คือทางออกที่ง่ายที่สุด
เปิดเทอร์มินัลไปที่โฮมไดเร็กทอรีและพิมพ์

vi .vimrc

ไฟล์ใหม่ที่เปิดตอนนี้เพิ่มบรรทัดเหล่านี้ไปยังไฟล์และออกโดยการบันทึก

$ set nocompatible
$ set backspace=2

9
OP กล่าวว่าพวกเขาไม่ต้องการใช้nocompatibility
kiri

1
ไม่จำเป็นต้องไม่มีความสามารถในการใช้งานร่วมกันคุณยังสามารถทำได้เพียงแค่เพิ่มบรรทัดที่สอง
Adithya Chakilam

1
บรรทัดที่สองใช้ได้กับฉันถ้าฉันเพิ่มบรรทัดแรกด้วย
djjeck

เริ่มต้นจาก. vimrc ที่ว่างเปล่าและสงสัยว่าเหตุใด Backspace จึงไม่ทำงานบน mac ใน iTerm2 ขอบคุณมาก!
Igor Malyk

@ minerz029 เพิ่ม แต่นี่เป็นคำตอบที่คนส่วนใหญ่ใช้อยู่เนื่องจากไม่มีคุณสมบัติดังกล่าวในชื่อหน้า
Muhd

22

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

ดูเหมือนคุณจะอยู่ในโหมด "คำสั่ง" ในการเลื่อนเคอร์เซอร์ของคุณ:
H= ซ้าย, J= ขึ้น, K= ลง, L= ขวา

เมื่อคุณวางเคอร์เซอร์ของคุณแล้วคุณสามารถลบข้อความได้ดังนี้:
x ลบอักขระใต้เคอร์เซอร์
X ลบอักขระก่อนเคอร์เซอร์
dwลบจากเคอร์เซอร์ไปยังคำถัดไป
ddลบบรรทัดที่เคอร์เซอร์เปิดอยู่

ในการป้อนข้อความคุณสามารถใช้หนึ่งในโหมดป้อนข้อความ
aเพิ่มข้อความไปทางขวาของเคอร์เซอร์
Aเพิ่มข้อความไปยังจุดสิ้นสุดของบรรทัดปัจจุบัน
iเพิ่มข้อความไปทางด้านซ้ายของเคอร์เซอร์
Iเพิ่มการทดสอบกับbegininของบรรทัดปัจจุบัน
oเปิดบรรทัดใหม่ด้านล่างบรรทัดปัจจุบันและสถานที่ที่คุณอยู่ในการป้อนข้อความโหมด
Oเปิด ขึ้นบรรทัดใหม่เหนือบรรทัดปัจจุบันและวางคุณไว้ในโหมดป้อนข้อความ

Escหากต้องการออกจากโหมดการป้อนข้อความและกลับไปที่โหมดคำสั่งให้ใช้

หากต้องการเลิกทำการเปลี่ยนแปลง: (รายการโปรดของนักเรียน)
uเลิกทำคำสั่งสุดท้ายป้อน
Uเลิกทำการเปลี่ยนแปลงทั้งหมดในบรรทัดปัจจุบัน **

ในการบันทึก / ออก: :wเขียน (บันทึก) ไฟล์และยังคงเปิด
:wqเขียน (บันทึก) ไฟล์และออก
:qจากVI ออก (ออก) หากคุณไม่ทำการเปลี่ยนแปลง
:q!ออก (ออก) โดยไม่บันทึกการเปลี่ยนแปลง
ZZเขียน (บันทึก) ไฟล์และออกจาก VI (เหมือน:wq)


11
สหกรณ์บอกว่าพฤติกรรมลึกลับเกิดขึ้นในโหมดแทรก ดังนั้นนี่ไม่ใช่คำตอบสำหรับคำถามที่ถาม
LarsH

ที่จริง OP ไม่ได้ระบุในโหมดแทรก แก้ไขคำถามแล้ว
Argusvision

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

1
เข้าใจได้ ฉันยอมรับว่าเป็นปฏิกิริยาทั่วไปของโหมดไม่แทรก
LarsH

Argus, "ในโหมดแทรก" ถูกเพิ่มไปยังชื่อคำถามในการแก้ไข แต่มันอยู่ในเนื้อความของคำถามตั้งแต่เริ่มต้น
LarsH

13

ติดตั้งแพ็คเกจ vim แบบเต็มเพื่อรับฟังก์ชั่น backspace และปุ่มลูกศร

sudo apt-get update
sudo apt-get install vim

มันทำงานได้ตามที่คาดไว้ .. คำตอบที่ดีที่สุด
Vicky

นั่นคือคำตอบที่สมบูรณ์แบบ ไม่จำเป็นต้องแก้ไขไฟล์ปรับแต่งใด ๆ เพียงแค่ติดตั้งvim-runtimeแพคเกจและทุกอย่างทำงานได้ตามที่ฉันคุ้นเคย ขอบคุณ!
Olli D-Metz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.