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


10

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


5
นั่นคือพฤติกรรม vi ดั้งเดิม หากคุณมีตัวเลือกในการตั้งค่าความเข้ากันไม่ได้แสดงว่าคุณกำลังใช้งานvimอยู่
Stéphane Chazelas

ฉันไม่ทราบว่าติดตั้ง vi บน Ubuntu แล้ว vi ในโลก Linux ในประสบการณ์ของฉันเป็นเพียงลิงค์สัญลักษณ์ไปเป็นกลุ่ม หากคุณต้องการเรียนรู้จริง vi ติดตั้งทั้ง nvi หรือโครงการ hairloom vi
Predrag Punosevac

คำตอบ:


6

บางครั้งviคำสั่งเป็นนามแฝงสำหรับvimและเมื่อเรียกว่าviเปิดใช้งานโหมด vi

แม้ใน backspace โหมดดั้งเดิมกำลังลบอักขระ แต่จะไม่แสดงเป็นลบทันที (หลังจากกดปุ่ม ESC อักขระจะหายไป)

เดาว่าคุณต้องเลือกระหว่างการใช้viที่มาพร้อมกับพฤติกรรมที่อธิบายไว้หรือการใช้vimซึ่งสามารถทำได้ตามที่คุณคาดหวัง


9
  1. ตรวจสอบว่าคุณใช้งานธรรมดาviผ่านหรือไม่

    $ vi --version | head -n 1

    สิ่งนี้จะให้ในเครื่องของฉัน (Debian 7)

    VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)

    เป็นกลุ่มสามารถทำเพื่อทำตัวเหมือน vi สิ่งนี้สามารถทำได้โดยการให้คำสั่งviแทนvimจาก commandline โดยที่viเป็นเพียง sym-link vimซึ่งในกรณีนี้จะเปิดเป็นกลุ่มในโหมด vi :set compatible?คุณสามารถตรวจสอบเรื่องนี้ด้วย

  2. ดังกล่าวโดยคำตอบก่อนหน้านี้ผลของการ Backspace จะกลายเป็นมองเห็นได้เฉพาะหลังจากที่ออกในinsert modeเมื่อset compatibleมีการใช้งาน

หมายเหตุ: ในโหมด vi ได้คุณไม่สามารถ Backspace เหนือข้อความซึ่งเข้ามาก่อนหน้านี้ (ก่อนที่จะเข้ามาinsert mode) หรือ EOL insert modeหรือเยื้องใน ดู :help 'bs'

    'backspace' 'bs'        string  (default "")
                            global
                            {not in Vi}
    Influences the working of <BS>, <Del>, CTRL-W and CTRL-U in Insert
    mode.  This is a list of items, separated by commas.  Each item allows
    a way to backspace over something:
    value   effect
    indent  allow backspacing over autoindent
    eol     allow backspacing over line breaks (join lines)
    start   allow backspacing over the start of insert; CTRL-W and CTRL-U
            stop once at the start of insert.

    When the value is empty, Vi compatible backspacing is used.
    For backwards compatibility with version 5.4 and earlier:
    value   effect
      0     same as ":set backspace=" (Vi compatible)
      1     same as ":set backspace=indent,eol"
      2     same as ":set backspace=indent,eol,start"

ลองใช้การตั้งค่าที่แตกต่างเพื่อทำความเข้าใจความหมายของพวกเขา: ป้อนอักขระ / ตัวแบ่งบรรทัดและการเยื้องในโหมดแทรกออกและป้อนโหมดแทรกอีกครั้งจากนั้นลอง backspacing

ผู้ใช้ที่ไม่คุ้นเคยกับ vi พฤติกรรมและไม่ได้ยืนยันในการใช้ vi ธรรมดา (ไม่ recommened แล้ว) :set backspace=indent,eol,startควร Afaik บน Debian มักจะมีไฟล์กำหนดค่าทั้งระบบติดตั้งพร้อมกับการตั้งค่านี้

:set bs?คุณจะได้รับการตั้งค่าปัจจุบันผ่าน


5

สร้างไฟล์ใหม่ในโฮมไดเร็กทอรีของผู้ใช้ชื่อ. vimrc หากยังไม่มีอยู่ ที่นี่เราจะสร้างและแก้ไขพร้อมกันกับ vi

sudo vi ~/.vimrc

เพิ่มคำสั่งต่อไปนี้ซึ่งรวมถึงการปิดโหมดความเข้ากันได้และฟังก์ชั่นการลบคีย์ backspace:

set nocp
set backspace=indent,eol,start

บันทึกและออกจากไฟล์โดยใช้

:wq

การปิดโหมดความเข้ากันได้ช่วยให้สามารถใช้ปุ่มลูกศรที่พวกเราใช้ในการถ่ายทำ

เนื่องจากเรา sudo'd เมื่อสร้างไฟล์ความเป็นเจ้าของไฟล์อาจจะเป็นรูท คุณสามารถ chown ไฟล์ให้กับผู้ใช้

ในกรณีของฉันนี่สำหรับราสเบอร์รี่ pi ดังนั้นผู้ใช้และกลุ่มคือ pi:

chown pi:pi ~/.vimrc

ตอนนี้ลุกขึ้น vi อีกครั้งและสนุกได้เลย!


1
set nocpทำเคล็ดลับสำหรับฉัน
Louis M



0

การสร้าง. vimrc ในโฮมไดเร็กทอรีของฉันที่มีเฉพาะ

ตั้งค่า nocp

แก้ไขปัญหาของฉันด้วย backspace ไม่ได้ลบตัวละครออกจากหน้าจอ Dick S

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