Phím xóa lùi không hoạt động trong Vim / vi


86

Tôi vừa thực hiện một số thay đổi đối với .vimrctệp và .bash_aliasestệp và từ đó tôi không thể xóa các từ bằng phím xóa lùi.

.vimrcTệp của tôi có:

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_aliasestệp của tôi có hai dòng cho Vim:

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

Thư mục của tôi ~/.vimkhông có một plugin hoặc tập lệnh nào, vì vậy không có bất kỳ khả năng nào mà plugin sẽ gây ra điều này.

~/.vim/.vimrclà một liên kết tượng trưng. Tệp thực sự .vimrcnằm trong ~/vimrc/thư mục là kho lưu trữ git.


Điều này đã giải quyết được sự cố của tôi: askubuntu.com/a/899059/525661
Hem

Câu trả lời:


159

Để cho phép lùi khoảng cách trên mọi thứ trong chế độ chèn (bao gồm thụt lề được chèn tự động, ngắt dòng và bắt đầu chèn), bạn có thể đặt backspacetùy chọn:

:set backspace=indent,eol,start

hoặc là

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

Theo mặc định, tùy chọn này trống, không cho phép bạn xóa lùi những thứ đã đề cập ở trên. Đây là hành vi tiêu chuẩn của Vi.

Bạn có thể đặt dòng này vào vimrctệp của mình để đặt nó tự động khi Vim khởi động:

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

Ngoài ra, bắt đầu từ Vim 8.0 nếu không tìm thấy tệp vimrc của người dùng, Vim sẽ đặt thành backspacegiá trị này bằng cách tải defaults.vimtập lệnh.


nó vẫn không hoạt động với tôi = / tôi đã có set backspace=2 set backspace=indent,eol,start fixdel
holms

2
@holms thử set backspace=2một mình
Hoàng Huỳnh

Lý do cho những mặc định như vậy trong đó backspace chỉ di chuyển dấu mũ sang trái?
Vitaly Zdanevich

2
Nếu bạn sử dụng vim80 trên, thấy điều này: stackoverflow.com/questions/52438373/...
Lewis Chan

7

Giống như một linux-newb, tôi đang cài đặt Ubuntu 18.04 mới và trình soạn thảo vim của tôi hoạt động khác với tôi đã quen trên các máy khác mà tôi sử dụng (bao gồm cả hành vi backspace mà bạn đang mô tả). Tôi đã không nhận ra rằng tôi thực sự đang sử dụng vi chứ không phải vim (cả hai đều được thực thi với vi).

Việc cài đặt vim và sau đó chỉnh sửa tệp đã mang lại hành vi mà tôi đã quen thuộc, bao gồm cả backspacing hoạt động như tôi mong đợi.

sudo apt install vim

4

~/.vimrcTệp của tôi có nội dung set nocompatible. Đã thêm một dòng khác vào cùng một tệp để làm cho backspace hoạt động -

set backspace=indent,eol,start

Và chỉ cần chạy

source ~/.vimrc

trong cùng một thiết bị đầu cuối để thay đổi có hiệu lực ngay lập tức trong cùng một trình bao. Không cần mở vi và chạy

:set backspace=indent,eol,start

2

Đối với tôi , Tôi đã có cài đặt bên dưới, tuy nhiên backspace vẫn không hoạt động.

set backspace=indent,eol,start

Cuối cùng, tôi thấy dòng sau dẫn đến vấn đề này.

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

Khi cài đặt này bị xóa, phím xóa lùi hoạt động tốt ở chế độ chèn.

Reason: Đó là vì Vim coi CTRL-H như một backspace và dòng này làm cho ánh xạ lại thành neocomplete # smart_close_popup () trong chế độ chèn.


1

Đối với tôi (máy chủ Debian, được kết nối với "Konsole" từ linux khác), sự cố với phím xóa lùi và phím mũi tên đã được giải quyết sau khi gỡ cài đặt gói vim-tiny và cài đặt gói vim.


1
Có lẽ, các gói này cài đặt (các) tệp vimrc khác nhau.
Eugene Yarmash

1

Tôi gặp sự cố tương tự trên Debian 7.8 qua SSH trong urxvt + tmux. Tôi đã cài đặt vim và vim-tiny.

Xóa vim-tiny đã khắc phục sự cố.


1

Đôi khi nó cũng là một chức năng của kiểu getty được chọn nếu một người đang sử dụng một ứng dụng khách SSH như Putty hoặc một số loại tương tự. Tốt nhất là sử dụng vt100 + vì nó là mô phỏng tiêu chuẩn nhất.

Tôi đã có :fixdelmà không hoạt động. Tôi đã phải loại bỏ nó và thay thế nó bằng gợi ý đầu tiên để nó hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.