Backspace tuşu Vim / vi'de çalışmıyor


89

.vimrcDosya ve .bash_aliasesdosyada bazı değişiklikler yaptım ve o andan itibaren geri al tuşu ile kelimeleri silemiyorum.

Dosyamda .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

Ve .bash_aliasesdosyamın Vim için iki satırı var:

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

Dizinimde ~/.vimtek bir eklenti veya komut dosyası yok, bu yüzden eklentinin buna neden olma ihtimali yok.

~/.vim/.vimrcbir sembolik bağlantıdır. Asıl .vimrcdosya ~/vimrc/bir git deposu olan dizindedir.


Bu sorunumu çözdü: askubuntu.com/a/899059/525661
Hem

Yanıtlar:


166

Ekleme modunda her şeyin üzerinde geri boşluk bırakmaya izin vermek için (otomatik olarak eklenen girinti, satır kesmeleri ve eklemenin başlangıcı dahil) backspaceseçeneği ayarlayabilirsiniz :

:set backspace=indent,eol,start

veya

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

Varsayılan olarak bu seçenek boştur ve yukarıda belirtilen şeyler üzerinde geri gitmenize izin vermez. Bu standart Vi davranışıdır.

vimrcVim başladığında otomatik olarak ayarlanması için bu satırı dosyanıza koyabilirsiniz :

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

Ayrıca, eğer kullanıcı vimrc dosyası bulunmazsa, Vim 8.0'dan başlayarak, Vim betiği backspaceyükleyerek bu değeri ayarlayacaktır defaults.vim.


hala benim için çalışmıyor = / set backspace=2 set backspace=indent,eol,start fixdel
elimde

2
@holms set backspace=2tek başına deneyin
Hoang Huynh

Geri boşluğun imleci sola kaydırdığı bu tür varsayılanların nedeni nedir?
Vitaly Zdanevich

2
Yukarıda vim80 kullanıyorsanız, şuna bakın: stackoverflow.com/questions/52438373/…
Lewis Chan

8

Bir linux-newb gibi, yeni bir Ubuntu 18.04 kurulumundaydım ve vim editörüm kullandığım diğer makinelerde alıştığımdan farklı davrandı (tanımladığınız backspace davranışını dahil etmek için). Aslında vi kullandığımı ve vim'i kullanmadığımı fark etmemiştim (ikisi de ile yürütülüyor vi).

Vim'i yüklemek ve ardından bir dosyayı düzenlemek, beklediğim gibi çalışan geri alma dahil olmak üzere alıştığım davranışı geri getirdi.

sudo apt install vim

4

Dosyamın ~/.vimrciçeriği vardı set nocompatible. Backspace'in çalışması için aynı dosyaya başka bir satır eklendi -

set backspace=indent,eol,start

Ve sadece koş

source ~/.vimrc

Değişikliğin aynı kabukta hemen etkili olması için aynı terminalde. Vi'yi açıp çalıştırmaya gerek yok

:set backspace=indent,eol,start

2

Urxvt + tmux'daki SSH üzerinden Debian 7.8'de aynı sorunu yaşadım. Vim ve vim-tiny kurdum.

Vim-tiny'nin kaldırılması sorunu çözdü.


2

Benim için , Aşağıdaki ayarı yaptım, ancak geri alma hala çalışmıyor.

set backspace=indent,eol,start

Sonunda, aşağıdaki satırın bu soruna yol açtığını buldum.

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

Bu ayar silindiğinde, geri al tuşu ekleme modunda iyi çalışır.

Reason: Bunun nedeni, Vim'in CTRL-H'yi bir backspace olarak görmesi ve bu satırın, ekleme modunda neocomplete # smart_close_popup () ile yeniden eşlenmesini sağlamasıdır.


1

Benim için (Debian sunucusu, diğer linux'tan "Konsole" ile bağlantılı), backspace tuşu ve ok tuşlarıyla ilgili sorunlar vim-tiny paketi kaldırıldıktan ve vim paketi yüklendikten sonra çözüldü.


1
Belki de bu paketler farklı vimrc dosyaları yükler.
Eugene Yarmash

1

Çoğu zaman Putty gibi bir SSH istemcisi veya benzeri bir kullanıcı kullanılıyorsa, seçilen getty türünün bir işlevidir. En çok tercih edilen, en standart öykünme olduğu için vt100 + kullanmaktır.

Zaten yapmıştım :fixdel çalışmayan bir . Çalışması için çıkarıp ilk öneriyle değiştirmem gerekiyordu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.