Klawisz Backspace nie działa w Vim / vi

86

Właśnie dokonałem pewnych zmian w .vimrcpliku i .bash_aliasespliku i od tego czasu nie mogę usuwać słów klawiszem Backspace.

Mój .vimrcplik zawiera:

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

A mój .bash_aliasesplik ma dwie linie dla Vima:

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

Mój ~/.vimkatalog nie ma ani jednej wtyczki ani skryptu, więc nie ma szans, że wtyczka to spowoduje.

~/.vim/.vimrcto łącze symboliczne. Rzeczywisty .vimrcplik znajduje się w ~/vimrc/katalogu będącym repozytorium git.

Santosh Kumar
źródło
To rozwiązało mój problem: askubuntu.com/a/899059/525661
Hem,

Odpowiedzi:

159

Aby umożliwić cofanie wszystkiego w trybie wstawiania (w tym automatycznie wstawiane wcięcie, podziały wierszy i początek wstawiania), możesz ustawić backspaceopcję:

:set backspace=indent,eol,start

lub

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

Domyślnie ta opcja jest pusta, co nie pozwala na cofnięcie się po wyżej wymienionych rzeczach. To jest standardowe zachowanie Vi.

Możesz umieścić tę linię w swoim vimrcpliku, aby była ustawiana automatycznie po uruchomieniu Vima:

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

Ponadto, począwszy od Vima 8.0, jeśli nie zostanie znaleziony żaden plik użytkownika vimrc, Vim ustawi backspacetę wartość na tę wartość ładując defaults.vimskrypt.

Eugene Yarmash
źródło
to nadal nie działa dla mnie = / mam set backspace=2 set backspace=indent,eol,start fixdel
holms
2
@holms spróbuj set backspace=2sam
Hoang Huynh
Jaki jest powód takich domyślnych ustawień, w których backspace po prostu przesuwa kursor w lewo?
Witalij Zdanevich
2
Jeśli używasz vim80 powyżej, zobacz to: stackoverflow.com/questions/52438373/…
Lewis Chan
8

Podobnie jak linux-newb, byłem na świeżej instalacji Ubuntu 18.04 i mój edytor vim zachowywał się inaczej niż byłem przyzwyczajony na innych maszynach, których używam (aby uwzględnić opisywane przez ciebie zachowanie backspace). Nie zdawałem sobie sprawy, że faktycznie używam vi, a nie vima (oba są wykonywane z vi).

Zainstalowanie vima, a następnie edytowanie pliku przywróciło zachowanie, do którego byłem przyzwyczajony, w tym cofanie działające tak, jak się spodziewałem.

sudo apt install vim
Matt Klein
źródło
4

Mój ~/.vimrcplik miał zawartość set nocompatible. Dodano kolejną linię do tego samego pliku, aby backspace działał -

set backspace=indent,eol,start

I po prostu biegnij

source ~/.vimrc

w tym samym terminalu, aby zmiany zaczęły obowiązywać natychmiast w tej samej powłoce. Nie ma potrzeby otwierania vi i uruchamiania

:set backspace=indent,eol,start
Aniket Thakur
źródło
2

Dla mnie , miałem ustawienie poniżej, jednak backspace nadal nie działa.

set backspace=indent,eol,start

Wreszcie stwierdziłem, że następujący wiersz doprowadził do tego problemu.

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

Po usunięciu tego ustawienia klawisz Backspace działa dobrze w trybie wstawiania.

Reason: To dlatego, że Vim widzi CTRL-H jako backspace, a ta linia zmienia mapowanie na neocomplete # smart_close_popup () w trybie wstawiania.

Echo
źródło
1

Dla mnie (serwer Debiana połączony z "Konsolą" z innych linuxów) problemy z klawiszem backspace i klawiszami strzałek zostały rozwiązane po odinstalowaniu pakietu vim-tiny i zainstalowaniu pakietu vim.

jm009
źródło
1
Być może te pakiety instalują różne pliki vimrc.
Eugene Yarmash
1

Miałem ten sam problem na Debianie 7.8 przez SSH w urxvt + tmux. Zainstalowałem vim i vim-tiny.

Usunięcie vim-tiny naprawiło problem.

lilorox
źródło
1

Często jest to również funkcja typu getty wybranego, jeśli używa się klienta SSH, takiego jak Putty lub podobnego. Najkorzystniejsze byłoby użycie vt100 +, ponieważ jest to najbardziej standardowa emulacja.

Miałem już, :fixdelktóry nie działał. Musiałem go usunąć i zastąpić go pierwszą sugestią, aby zadziałał

HighOnMeat
źródło