Клавіша Backspace не працює у Vim / vi


86

Я просто вніс зміни у .vimrcфайл і .bash_aliasesфайл, і з того часу я не можу видаляти слова за допомогою клавіші backspace.

У моєму .vimrcфайлі є:

set nocompatible

set number
set incsearch
set autoindent
set ruler
set autowrite
set smarttab
set linebreak
set spell
set et
set title

set mouse=v
set history=50
set tabstop=4
set matchtime=2
set matchpairs+=<:>

syntax enable
filetype plugin indent on
filetype indent on
set sw=4

map <f2> :w\|!python %

hi SpellBad ctermfg=000 guifg=#000

І мій .bash_aliasesфайл має два рядки для Vim:

alias vim="vim -c 'startinsert' -u ~/.vim/.vimrc"
alias vi="vi -c 'startinsert' -u ~/.vim/.vimrc"

У моєму ~/.vimкаталозі немає жодного плагіна чи сценарію, тому немає шансів, що плагін спричинить це.

~/.vim/.vimrcє символічним посиланням. Фактичний .vimrcфайл знаходиться в ~/vimrc/каталозі, який є сховищем git.


Це вирішило мою проблему: askubuntu.com/a/899059/525661
Хем,

Відповіді:


159

Щоб дозволити зворотний простір по всьому в режимі вставки (включаючи автоматично вставлені відступи, розриви рядків та початок вставки), ви можете встановити backspaceопцію:

:set backspace=indent,eol,start

або

:set backspace=2  "compatible with version 5.4 and earlier

За замовчуванням ця опція порожня, не дозволяючи повертати назад вищезазначені речі. Це стандартна поведінка Vi.

Ви можете додати цей рядок до свого vimrcфайлу, щоб він автоматично встановлювався при запуску Vim:

set backspace=indent,eol,start  " more powerful backspacing

Крім того, починаючи з Vim 8.0, якщо жодного файлу vimrc користувача не знайдено, Vim встановить backspaceце значення, завантажуючи defaults.vimсценарій.


це все ще не працює для мене = / я маю set backspace=2 set backspace=indent,eol,start fixdel
Холмс

2
@holms спробуй set backspace=2сам
Хоанг Хуйнх

Яка причина таких дефолтів, коли зворотний простір - це просто переміщення каретки вліво?
Віталій Зданевич

2
Якщо ви використовуєте vim80 вище, дивіться це: stackoverflow.com/questions/52438373/…
Льюїс Чан

8

Як і linux-newb, я був на свіжій установці Ubuntu 18.04, і мій редактор vim поводився інакше, ніж я звик на інших машинах, якими я користуюся (включаючи поведінку зворотного простору, яку ви описуєте). Я не розумів, що насправді використовую vi, а не vim (обидва з яких виконуються за допомогою vi).

Встановлення vim, а потім редагування файлу повернуло поведінку, до якої я звик, включаючи зворотний простір, який працював так, як я очікував.

sudo apt install vim

4

Мій ~/.vimrcфайл містив вміст set nocompatible. Додав ще один рядок до того ж файлу, щоб зробити зворотну роботу -

set backspace=indent,eol,start

І просто біжи

source ~/.vimrc

в одному терміналі, щоб зміни негайно набрали чинності в одній оболонці. Не потрібно відкривати vi та запускати

:set backspace=indent,eol,start

2

Для мене , у мене було налаштування нижче, проте зворотний простір все ще не працює.

set backspace=indent,eol,start

Нарешті, я виявив, що наступний рядок призвів до цієї проблеми.

inoremap <expr><C-h> neocomplete#smart_close_popup()

Коли це налаштування видалено, клавіша backspace добре працює в режимі вставки.

Reason: Це тому, що Vim розглядає CTRL-H як зворотний простір, і цей рядок перетворюється на неокомплектований # smart_close_popup () у режимі вставки.


1

Для мене (сервер Debian, підключений до "Konsole" з іншого Linux), проблеми з клавішею backspace та клавішами зі стрілками були вирішені після видалення пакета vim-tiny та встановлення пакета vim.


1
Можливо, ці пакети встановлюють різні файли vimrc.
Євген Ярмаш

1

У мене була така сама проблема на Debian 7.8 через SSH у urxvt + tmux. У мене були встановлені vim і vim-tiny.

Видалення vim-tiny вирішило проблему.


1

Багато разів це також є функцією вибраного типу getty, якщо використовується SSH-клієнт, такий як Putty, або якийсь інший. Найбільш переважним було б використовувати vt100 +, оскільки це найбільш стандартна емуляція.

Я вже мав, :fixdelщо не працювало. Мені довелося його видалити та замінити першою пропозицією, щоб він запрацював

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.