Tôi có thể làm cho vim thay đổi hành vi con trỏ của nó?


11

Tôi đã sử dụng vim trong một vài năm với tư cách là một biên tập viên phụ nhưng vì nhiều lý do, tôi thấy mình sử dụng nó ngày càng nhiều ngay cả khi trình soạn thảo chính của tôi có sẵn. Một vấn đề luôn làm tôi khó chịu vimvà điều đó khiến tôi không sử dụng nó nhiều hơn, đó là cách nó xử lý vị trí con trỏ. Con trỏ chỉ có thể nằm trên một ký tự, thay vì giữa các ký tự, như trường hợp của bất kỳ trình soạn thảo nào được tạo từ năm 1984.

Chỉ là một ví dụ về lý do tại sao đây là một vấn đề, nếu tôi muốn xóa từ cuối cùng trên một dòng, tôi nhấn $để đi đến cuối dòng, và sau đó dbxóa ngược lại. Điều này để lại một ký tự cần xóa, bởi vì $không thực sự đi đến cuối dòng, nó đã đi đến ký tự cuối cùng của dòngdbchỉ xóa những gì trước ký tự hiện tại. Vấn đề không phải là tôi phải nhập một nhân vật phụ, đó là suy nghĩ thêm liên quan đến việc làm những gì phải đơn giản, điều này làm tôi mất tập trung khỏi những gì tôi thực sự đang cố gắng thực hiện.

Dường như với tôi, vị trí con trỏ ý tưởng hiện đại hơn về mọi mặt và tôi muốn chuyển vimsang sử dụng phương pháp đó. Tôi chắc chắn rằng một số vimngười hâm mộ cốt lõi sẽ không đồng ý với quan điểm của tôi về điều đó, nhưng vì một trong những lý lẽ tiêu chuẩn cho vimtính ưu việt của nó là khả năng cấu hình vô hạn của nó:

  • nó có thể cung cấp trong trường hợp này?
  • Có thể vimđược thực hiện để đặt con trỏ giữa các ký tự?

2
Âm thanh như bạn đang tìm kiếm Insertchế độ hoặc thiếu điểm của normalchế độ. Tôi sẽ làm $dawhoặc $bdwxóa từ cuối cùng trên một dòng ở chế độ bình thường. Trong Insertchế độ tôi sẽ làm A<Ctrl-w>.
jw013

3
Đối với hồ sơ, vì một người sợ hãi với ý tưởng về một thế giới "giữa các nhân vật", trình tự khóa chính xác để xóa từ cuối cùng trên dòng hiện tại là$bD
Alan Curry

1
Sử dụng chuột không phải là lý tưởng, nhưng sự thiếu hiệu quả đáng kể sẽ đến khi bạn phải dừng lại và suy nghĩ về cách làm những gì bạn muốn làm. Điều thực sự quý giá không phải là một giây ở đây và ở đó, mà tập trung . Khi bạn mất tập trung, bạn mất nhiều hơn một vài giây.
iconoclast

2
Từ các bình luận cho đến nay, có vẻ như câu trả lời cho câu hỏi là "Không, mô hình chuyển động con trỏ này được nhúng trong thiết kế của vim và không thể thay đổi." Đúng không?
iconoclast

2
@iconoclast Đó cũng là kết luận của tôi. Theo như tôi có thể nói, không thể đối xử đồng nhất với tất cả các ký tự trên một dòng, luôn có một ngoại lệ cho ký tự đầu tiên hoặc cuối cùng.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


5

Bạn có thể :set virtualedit+=onemore, cho phép bạn đi qua nhân vật cuối cùng. Thật không may cho bạn, $vẫn đi đến nhân vật cuối cùng; bạn phải trỏ qua để vượt qua nó. Mặt khác, bạn có thể sử dụng g$, thông thường đi đến ký tự cuối cùng của dòng màn hình trên một dòng bao bọc; trong onemorechế độ, nó cũng chỉ đi qua ký tự cuối cùng của một dòng không được bọc (hoặc dòng màn hình cuối cùng của một dòng được bọc).

:h 'virtualedit' cho biết tùy chọn này có thể làm rối các tập lệnh, nhưng tôi không biết rủi ro trong thực tế lớn đến mức nào.

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.