vị trí con trỏ sau khi dán trong vi / vim


11

Một điều luôn làm phiền tôi trong vi / vim :

Nếu tôi "yank" (còn gọi là "sao chép") một số văn bản, sau đó di chuyển đến một nơi khác trong tệp và thực hiện "dán", con trỏ của tôi vẫn ở đầu văn bản tôi vừa dán. Điều này khác với những gì hầu hết các biên tập viên hiện đại làm, đó là đặt con trỏ ở cuối văn bản tôi đã dán.

Ví dụ: giả sử "bộ đệm sao chép" chứa từ "awesome" mà tôi muốn dán sau từ "an" trong cụm từ:

This is an editor

Trong, ví dụ như gedit , sau khi dán:

This is an awesome editor
                  ^ Cursor is here

Trong vi :

This is an awesome editor
           ^ Cursor is here

Tôi có thể thay đổi vi để hành động như (ví dụ) gedit về vấn đề này không?


Điều kỳ lạ hơn nữa, trong danh sách với phiên bản Vim của tôi: nếu văn bản được kéo dài hơn một dòng, thì con trỏ sẽ được để lại ở đầu văn bản đã dán, nếu không nó sẽ bị bỏ lại ở cuối văn bản đã dán.
Alexey

xin lỗi, ít nhất
Alexey

Câu trả lời:


12

Trong vim, sử dụng gpgPthay vì pPđể rời con trỏ sau khi văn bản được dán. Nếu bạn muốn trao đổi các ràng buộc, hãy đặt các dòng sau vào .vimrc:

noremap p gp
noremap P gP
noremap gp p
noremap gP P

Thật kỳ lạ, trong vim pPđể con trỏ trên ký tự được dán cuối cùng cho bộ đệm ký tự, ngay cả trong chế độ tương thích.

Tôi không biết làm thế nào để thay đổi điều này trong các phiên bản vi khác.


1
Tôi nghĩ rằng "vi" thường thực sự là "vim" trong hầu hết các bản phát hành, phải không?
JoelFan

@JoelFan: Có thể hầu hết các bản phân phối Linux không nhúng. Ở nơi khác, không. Nếu bạn ổn với giải pháp chỉ dành cho vim, đừng mang vi vào chơi: 99% cấu hình của vim không có trong vi cơ bản.
Gilles 'SO- ngừng trở nên xấu xa'

Waht về "nvi"? Tôi bối rối về tất cả các vi khác nhau. Tôi hầu hết bị vô sinh trong debian và
ubfox

1
@JoelFan: nvi là một vi khá cơ bản, nó nhằm mục đích tương thích với việc thực hiện ban đầu và không có gì hơn thế. Nếu bạn chỉ quan tâm đến cài đặt máy tính để bàn hoặc máy chủ nơi bạn có thể cài đặt chương trình dễ dàng, bạn có thể giả sử vim có sẵn. Làm quen với việc triển khai vi ít hơn chỉ hữu ích trên các máy chủ bị khóa và thiết bị nhúng.
Gilles 'SO- ngừng trở nên xấu xa'

1
Tôi sử dụng "vi" chủ yếu cho các máy chủ, nơi tôi có thể cài đặt mọi thứ, vâng
JoelFan

0

Tôi khá chắc chắn rằng đây là do thiết kế. Nếu bạn dán bằng "p" (chữ thường P), bạn nên dán sau vị trí hoặc dòng hiện tại. Tuy nhiên, nếu bạn dán bằng "P" (viết hoa P), thì nó sẽ dán trước vị trí hoặc dòng hiện tại. Nếu hành vi mong muốn của bạn là để con trỏ ở cuối văn bản mới dán của bạn, hãy thử tập thói quen sử dụng "P" thay vì "p".

Tôi cá là nếu bạn đào đủ sâu, bạn có thể tìm thấy một công thức vim để đặt .vimrc của bạn sẽ luôn di chuyển con trỏ đến cuối dán, ngay cả khi bạn sử dụng "p".


2
Pđể lại con trỏ ở đầu văn bản đã dán bằng vi (ít nhất là bằng nvi và mỗi POSIX).
Gilles 'SO- ngừng trở nên xấu xa'

p và P ảnh hưởng đến vị trí của phần chèn đối với văn bản xung quanh. chúng không ảnh hưởng đến vị trí của chính con trỏ luôn ở cùng một vị trí so với văn bản được chèn.
eMBee
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.