Xóa khóa không hoạt động trong vim trên iTerm2


16

Đầu tiên, tôi gõ một số thứ ở chế độ chèn, như

Hello

Ở giai đoạn này, nếu tôi không thoát khỏi chế độ chèn, sẽ deletehoạt động và có thể xóa toàn bộ từ nếu tôi muốn.

Nếu tôi thoát khỏi chế độ chèn và mở lại chế độ chèn, điều này Hellokhông thể được xóa bằng delete. Nhưng nội dung mới được gõ có thể được gỡ bỏ.

Tôi đã đổi tên .vimrc của tôi, vấn đề vẫn còn tồn tại.

Và tôi đã thực hiện một số thử nghiệm trên máy chủ từ xa thông qua iterm, không gặp phải vấn đề tương tự.

Điều gì có thể là nguyên nhân của vấn đề này? Làm thế nào để khắc phục nó?


Với 'xóa' bạn có nghĩa là backspace? Loại bỏ toàn bộ các từ trong chế độ chèn có thể được thực hiện với Ctrl-W, hãy thử điều đó. Nếu điều đó không có gì, có gì đó không ổn với vim của bạn. Tôi sử dụng iTerm 2 và chưa bao giờ gặp vấn đề như vậy.
oarfish

Có, tôi có thể sử dụng dwhoặc dw+ shifttrong chế độ bình thường để xóa các từ. Nhưng backspacectrl+ wcả hai đều không hoạt động trong tình huống thứ hai tôi đã đề cập ở trên.
Zen

Nhưng bạn có thể sử dụng backspace trên dòng lệnh bình thường bên ngoài vim? Rất kì lạ.
oarfish

@oarfish, vâng, tôi có thể, và trong máy chủ từ xa vim tôi không gặp vấn đề như vậy, tất cả chỉ xảy ra đột ngột. Bây giờ tôi không thể có được manh mối.
Zen

Bạn có phiên bản vim nào? Tôi có vim 7.4.481 và tôi không thể tái tạo vấn đề.
jan.h

Câu trả lời:


16

Đây là một tính năng của vim, mặc dù IIRC nó không được bật theo mặc định.

backspacelà một thiết lập trong vim, và bạn có thể thiết lập ba thông số khác nhau: indent, eol, vàstart

Nếu bạn chạy :help backspace, nó sẽ cho bạn biết:

Influences the working of `<BS>`, `<Del>`, `CTRL-W` and `CTRL-U` in Insert
mode.  This is a list of items, separated by commas.  Each item allows
a way to backspace over something:

value     effect
indent    allow backspacing over autoindent
eol       allow backspacing over line breaks (join lines)
start     allow backspacing over the start of insert; CTRL-W and CTRL-U
          stop once at the start of insert.

Một trong đó không được thiết lập cho bạn là start.

Nếu bạn thêm set backspace=indent,eol,startvào .vimrc của mình, bạn sẽ có thể sao lưu lại mọi thứ trong chế độ chèn.


"Tính năng" ... Vì một số lý do, tôi thấy nó được bật theo mặc định trên macOS 10.13 mới với bản cài đặt vim mới nhất. Giải pháp này vẫn giải quyết được vấn đề.
Taylor Edmiston

9

Tôi cũng đã có điều này, các giá trị mặc định xử lý văn bản tự nhiên là sai đối với tôi.

  • MacBook Pro (15 inch, 2018)
  • 10.14.3 (Mojave)
  • Iterm2 3.2.7

Đi đến Preferences > Profiles > Keysvà tải cài đặt trước mặc định Natural Text Editingvà xóa tất cả các mục về deletedeletehành vi. Sau đó nó hoạt động như mong đợi.


1
Tương tự, ngoại trừ tôi chỉ xóa các mục về "Del->", nhưng không thêm ràng buộc "Gửi ^ H". Sau đó, nó làm việc như mong đợi.
DagW

@DagW xác nhận, ràng buộc ^ H là không cần thiết.
Salyangoz

2
Phải đào quá sâu vào bài viết sai chỉ để thấy đây là câu trả lời đúng, cảm ơn rất nhiều!
RecuencoJones

1
Tôi đã gặp sự cố trên Tmux và Iterm2 của tôi trong một thời gian dài, tôi không bao giờ tìm thấy giải pháp cho đến khi tôi tìm thấy bài đăng của bạn ở đây.
1234

1
Đúng! Đây là về cấu hình iterm, không phải vim chính nó.
Rodrirokr
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.