Il tasto Backspace non funziona in Vim / vi


89

Ho appena apportato alcune modifiche al .vimrcfile e al .bash_aliasesfile e da quel momento non posso eliminare le parole con il tasto backspace.

Il mio .vimrcfile contiene:

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

E il mio .bash_aliasesfile ha due righe per Vim:

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

La mia ~/.vimdirectory non ha un singolo plugin o script, quindi non c'è alcuna possibilità che il plugin lo causi.

~/.vim/.vimrcè un collegamento simbolico. Il .vimrcfile effettivo si trova nella ~/vimrc/directory che è un repository git.


Questo ha risolto il mio problema: askubuntu.com/a/899059/525661
Hem

Risposte:


166

Per consentire il backspacing su tutto in modalità di inserimento (incluso il rientro inserito automaticamente, le interruzioni di riga e l'inizio dell'inserimento) è possibile impostare l' backspaceopzione:

:set backspace=indent,eol,start

o

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

Per impostazione predefinita, questa opzione è vuota, non ti consente di tornare indietro sulle cose sopra menzionate. Questo è il comportamento Vi standard.

Puoi inserire questa riga nel tuo vimrcfile per impostarla automaticamente all'avvio di Vim:

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

Inoltre, a partire da Vim 8.0 se non viene trovato alcun file vimrc dell'utente, Vim imposterà backspacequesto valore caricando lo defaults.vimscript.


ancora non funziona per me = / ho avuto set backspace=2 set backspace=indent,eol,start fixdel
holms

2
@holms prova set backspace=2da solo
Hoang Huynh

Qual è la ragione di tali impostazioni predefinite in cui backspace si limita a spostare il cursore a sinistra?
Vitaly Zdanevich

2
Se usi vim80 sopra, guarda questo: stackoverflow.com/questions/52438373/…
Lewis Chan,

9

Come un linux-newb, ero su una nuova installazione di Ubuntu 18.04 e il mio editor di vim si è comportato in modo diverso da come ero abituato sulle altre macchine che uso (per includere il comportamento di backspace che stai descrivendo). Non mi ero reso conto che stavo effettivamente usando vi e non vim (entrambi vengono eseguiti con vi).

Installare vim e quindi modificare un file ha riportato il comportamento a cui ero abituato, incluso il backspacing che funzionava come mi aspettavo.

sudo apt install vim

4

Il mio ~/.vimrcfile aveva dei contenuti set nocompatible. Aggiunta un'altra riga allo stesso file per far funzionare il backspace -

set backspace=indent,eol,start

E corri e basta

source ~/.vimrc

nello stesso terminale affinché le modifiche abbiano effetto immediato nella stessa shell. Non è necessario aprire vi ed eseguire

:set backspace=indent,eol,start

2

Ho avuto lo stesso problema su Debian 7.8 su SSH in urxvt + tmux. Avevo installato vim e vim-tiny.

La rimozione di vim-tiny ha risolto il problema.


2

Per me , avevo l'impostazione seguente, tuttavia il backspace non funziona ancora.

set backspace=indent,eol,start

Infine, ho scoperto che la riga seguente ha portato a questo problema.

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

Quando questa impostazione viene eliminata, il tasto backspace funziona bene in modalità di inserimento.

Reason: Questo perché Vim vede CTRL-H come un backspace, e questa riga viene rimappata in neocomplete # smart_close_popup () in modalità di inserimento.


1

Per me (server Debian, collegato a "Konsole" da altri linux), i problemi con il tasto backspace e i tasti freccia sono stati risolti dopo aver disinstallato il pacchetto vim-tiny e installato il pacchetto vim.


1
Forse, questi pacchetti installano diversi file vimrc.
Eugene Yarmash,

1

Molte volte è anche una funzione del tipo di getty selezionato se si utilizza un client SSH come Putty o qualcosa di simile. Sarebbe preferibile utilizzare vt100 + in quanto è l'emulazione più standard.

Avevo già :fixdelche non funzionava. Ho dovuto rimuoverlo e sostituirlo con il primo suggerimento per farlo funzionare

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.