Клавиша 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
Hem

Ответы:


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
holms

2
@holms попробуйте в set backspace=2одиночку
Hoang Huynh

В чем причина таких значений по умолчанию, когда backspace просто перемещает курсор влево?
Виталий Зданевич

2
Если вы используете vim80, см. Это: stackoverflow.com/questions/52438373/…
Льюис Чан

8

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

Установка vim и последующее редактирование файла вернули поведение, к которому я привык, включая обратный интервал, работающий так, как я ожидал.

sudo apt install vim

4

В моем ~/.vimrcфайле было содержимое set nocompatible. Добавлена ​​еще одна строка в тот же файл, чтобы заставить работать backspace -

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 как пробел, и эта строка делает переназначение на neocomplete # smart_close_popup () в режиме вставки.


1

Для меня (сервер Debian, связанный с «Konsole» из другого Linux) проблемы с клавишей возврата и клавишами со стрелками были решены после удаления пакета 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.