बैकस्पेस कुंजी विम / vi में काम नहीं कर रही है


86

मैंने बस .vimrcफ़ाइल और .bash_aliasesफ़ाइल में कुछ बदलाव किए हैं और उस समय से मैं बैकस्पेस कुंजी के साथ शब्दों को हटा नहीं सकता हूं।

मेरी .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फ़ाइल विम के लिए दो लाइन है:

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

मेरी ~/.vimनिर्देशिका में एक भी प्लगइन या स्क्रिप्ट नहीं है, इसलिए कोई भी मौका नहीं है जो प्लगइन इसका कारण होगा।

~/.vim/.vimrcएक सिमलिंक है। वास्तविक .vimrcफ़ाइल ~/vimrc/निर्देशिका में है जो एक गिट रिपॉजिटरी है।


इससे मेरी समस्या हल हो गई: askubuntu.com/a/899059/525661
हेम

जवाबों:


159

डालने मोड में सब कुछ पर बैकस्पेसिंग की अनुमति देने के लिए (स्वचालित रूप से सम्मिलित इंडेंटेशन, लाइन ब्रेक और डालने की शुरुआत सहित) आप backspaceविकल्प सेट कर सकते हैं :

:set backspace=indent,eol,start

या

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

डिफ़ॉल्ट रूप से यह विकल्प खाली है, आपको उपर्युक्त चीजों पर बैकस्पेस देने की अनुमति नहीं है। यह मानक वीआई व्यवहार है।

vimrcविम के शुरू होने पर आप इस लाइन को अपनी फ़ाइल में रख सकते हैं :

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

इसके अलावा, Vim 8.0 से शुरू अगर कोई उपयोगकर्ता vimrc फ़ाइल नहीं मिली है, तो Vim स्क्रिप्ट backspaceलोड करके इस मान पर सेट हो जाएगा defaults.vim


यह अभी भी मेरे लिए काम नहीं करता है = / i set backspace=2 set backspace=indent,eol,start fixdel
have

2
@ होम्स set backspace=2अकेले कोशिश करते हैं
होआंग

ऐसे चूक का कारण क्या है जहां बैकस्पेस सिर्फ बाईं ओर कैरेट चल रहा है?
विटाली ज़डनेविच

2
यदि आप ऊपर vim80 का उपयोग करते हैं, तो यह देखें: stackoverflow.com/questions/52438373/…
लुईस चान

8

एक linux-newb की तरह, मैं एक नए उबंटू 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

मेरे लिए space मेरे पास सेटिंग नीचे थी, हालांकि बैकस्पेस अभी भी काम नहीं करता है।

set backspace=indent,eol,start

अंत में, मैंने पाया कि निम्नलिखित लाइन इस समस्या का कारण बनी।

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

जब यह सेटिंग हटा दी जाती है, तो बैकस्पेस कुंजी इन्सर्ट मोड में अच्छी तरह से काम करती है।

Reason: ऐसा इसलिए है क्योंकि विम CTRL-H को एक बैकस्पेस के रूप में देखता है, और यह लाइन सम्मिलित मोड में neocomplete # smart_close_popup () के लिए रीमैप किया गया है।


1

मेरे लिए (डेबियन सर्वर, अन्य लिनक्स से "कोनसोल" से जुड़ा हुआ है), वीम-छोटे पैकेज की स्थापना रद्द करने और विम पैकेज स्थापित करने के बाद बैकस्पेस कुंजी और तीर कुंजी के साथ समस्याओं को हल किया गया था।


1
शायद, ये पैकेज अलग vimrc फ़ाइल (ओं) को स्थापित करते हैं।
यूजीन यमश

1

मैं urxvt + tmux में SSH के ऊपर एक डेबियन 7.8 पर एक ही समस्या थी। मैं विम और विम-छोटे स्थापित था।

Vim-small को हटाने से समस्या ठीक हो गई।


1

कई बार यह गेटी टाइप का एक फंक्शन भी होता है, यदि कोई एसएसएच क्लाइंट जैसे कि पुट्टी या कुछ इस तरह का उपयोग कर रहा हो। सबसे बेहतर vt100 + का उपयोग करना होगा क्योंकि यह सबसे मानक अनुकरण है।

मेरे पास पहले से ही था :fixdelजो काम नहीं कर रहा था। मुझे इसे हटाने और इसे काम करने के लिए पहले सुझाव के साथ बदलना पड़ा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.