vi / vim abrumpt bộ đệm chuyển động trong cửa sổ


11

Khi sử dụng :set wraptrong vi / vim, nội dung của toàn bộ một dòng được bọc được đặt trong bộ đệm hiển thị khi di chuyển con trỏ sang một dòng mới, ngay cả khi điều hướng qua một tệp bằng dòng hiển thị (gj / gk) trái ngược với dòng thực (j / k). Ví dụ: nếu một dòng được bọc trên 5 dòng màn hình và hiện nằm ngoài bộ đệm hiển thị, bộ đệm sẽ nhảy 5 dòng khi điều hướng vào dòng này để buộc toàn bộ dòng phù hợp với màn hình. Có cách nào để vô hiệu hóa hành vi này? Lưu ý rằng set display+=lastlinesẽ cho phép hiển thị các dòng một phần khi một dòng được bọc bị buộc ra khỏi màn hình bằng cách điều hướng ra khỏi dòng, nhưng điều này không giải quyết được các bước nhảy bộ đệm xảy ra khi điều hướng vào một dòng ban đầu nằm ngoài bộ đệm.

Làm rõ: Trong trường hợp mô tả ở trên không rõ ràng, ý chính là tôi muốn có thể cuộn trơn tru trong vim với tính năng ngắt dòng được kích hoạt sao cho các dòng sẽ được hiển thị một phần trên màn hình thay vì hiển thị toàn bộ.


1
Bạn có thể xác nhận rằng điều bạn muốn nói là: bạn muốn một phần của phần được bao bọc không hiển thị và có thể cuộn trơn tru? Vim hiển thị các dòng hoàn toàn khi 'wrap'tôi sợ
Benoit

Đúng. Tôi cho rằng không có cách nào để ghi đè toàn bộ hành vi này hiển thị toàn bộ các dòng được bọc trong khi cuộn? Cảm ơn bạn.
dùng001

1
Không phải tôi biết. Đợi câu trả lời mặc dù, không ai biết Vim có thể làm gì.
Benoit

1
đồng ý với @Benoit. Không thể như tôi biết.
Fredrik Pihl

1
Hiện tại có một cuộc thảo luận về danh sách gửi thư vim_dev về chủ đề này. Có vẻ như bạn không phải là người duy nhất có yêu cầu này.
Randy Morris

Câu trả lời:


1

Không phải là một câu trả lời đầy đủ, nhưng có thể là một dẫn. Có scrolltùy chọn. Trợ giúp cho tùy chọn đó đọc, trong số những thứ khác:

{Vi hơi khác một chút: 'cuộn' đưa ra số lượng dòng màn hình thay vì dòng tệp, tạo sự khác biệt khi bọc dòng}


Cảm ơn, đó là hữu ích. Các tổ hợp phím <Ctrl-E> (xuống) và <Ctrl-Y> (lên) đưa ra hành vi cơ bản mà tôi muốn. Nếu có một cách để phát hiện nếu con trỏ ở trên cùng hoặc dưới cùng của cửa sổ, thì một giải pháp tạm thời sẽ liên quan đến việc ánh xạ có điều kiện các phím mũi tên lên và xuống thành <Ctrl-Y> gk và <Ctrl-E> gj, tương ứng. Khi con trỏ không nằm trên dòng trên cùng hoặc dưới cùng của cửa sổ, thì ánh xạ chúng tới gk và gj là cần thiết (câu lệnh khác trong điều kiện). Có cách nào đơn giản để phát hiện xem con trỏ nằm trên dòng trên cùng hoặc dưới cùng của cửa sổ hiện tại không?
dùng001

0

ở chế độ bình thường, bạn có thể nhảy giữa các phần được hiển thị của một dòng được bọc bằng cách sử dụng gkgj( g<up>hoặc g<down>). Wikipage vim này giải thích làm thế nào để thay đổi hành vi vĩnh viễn.


1
Chắc chắn, và tôi đã ánh xạ những hành vi đó vào các phím mũi tên định hướng. Tuy nhiên, điều này khác với việc hiển thị bắt buộc toàn bộ một dòng được bọc khi điều hướng đến dòng đó. Hành vi này độc lập với việc sử dụng gj / gk hoặc j / k. Tôi muốn có thể điều hướng một phần vào một dòng ban đầu nằm ngoài bộ đệm (tắt màn hình) mà không hiển thị toàn bộ dòng được bọc.
dùng001

OK, sau đó tôi hiểu lầm. Chà, tôi đoán là dòng của bạn được bọc hoặc không. Những gì bạn muốn là một cái gì đó ở giữa, nhưng tôi nghĩ đơn giản là không thể.
jpjacobs
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.