插入模式下的退格鍵不刪除字元
我是vi新手,實際上我從今天開始學習 vi 並且我陷入了退格鍵的行為。實際上,當我第一次在我的 Ubuntu 12.04 上啟動 vi 時,我的退格鍵正常工作,但之後它開始出現奇怪的行為。每當我在插入模式下按退格鍵時,它只會向左移動一個位置,而不是擦除字元。如何恢復預設的退格功能?請注意,我不想安裝 vim 或設置 nocompatibilty。
有時該
vi
命令是一個別名vim
,當呼叫 as 時vi
啟用它的 vi 模式。即使在傳統模式下,退格鍵也會刪除字元,但不會立即將其顯示為已刪除。(按 ESC 後字元消失了。)
猜猜您必須在使用
vi
所描述的行為附帶的或使用vim
能夠按照您期望的方式進行操作之間進行選擇。
- 檢查您是否實際使用普通
vi
via
$ vi --version | head -n 1
這在我的機器上提供(Debian 7)
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)
可以使 vim 表現得更像 vi。這可以通過給出命令
vi
而不是從命令行來完成vim
,其中vi
只有一個符號連結到vim
,在這種情況下,vim 在 vi 模式下打開。您可以使用:set compatible?
. 2. 如上一個答案所述,退格的效果只有在啟用insert mode
時才可見。set compatible
注意:在 vi 兼容模式下,您不能在先前輸入(在輸入之前
insert mode
)的文本上退格,或者在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"
嘗試不同的設置以了解它們的含義:在插入模式下輸入字元/換行符和縮進,退出並重新進入插入模式,然後嘗試退格。
不熟悉 vi 行為且不堅持使用普通 vi(反正不推薦)的使用者應該
:set backspace=indent,eol,start
. Debian 上的 Afaik 通常會使用此設置安裝一個系統範圍的配置文件。您可以通過 獲取目前設置
:set bs?
。