vimL ngủ trong một chức năng


9

Tôi đang cố gắng xác định một chức năng sẽ giúp dễ dàng hơn để xem vị trí của con trỏ bằng cách đặt các sợi tóc chéo xung quanh nó trong 100ms.

Đây là nỗ lực của tôi:

function! Flash()
    set cursorline cursorcolumn
    sleep 100m
    set nocursorline nocursorcolumn
endfunction
nnoremap <leader>fl :call Flash()

Dường như chức năng trên đang gọi giấc ngủ lúc đầu chứ không phải ở giữa hai cuộc gọi "đặt".

Có điều gì đó cơ bản về "giấc ngủ" mà tôi đang hiểu lầm?


Đến đây cố gắng làm một cái gì đó tương tự. Bạn thậm chí không cần một chức năng, bạn có thể ánh xạ các lệnh trực tiếp trên dòng bản đồ.
Spidey

Câu trả lời:


12

Vấn đề là Vim không vẽ lại màn hình cho đến khi chức năng được hoàn thành. Tôi không chắc logic của Vim khi nào vẽ lại là chính xác , nhưng trong trường hợp này, bạn thường phải gọi redrawthủ công:

function! Flash()
    set cursorline cursorcolumn
    redraw
    sleep 100m
    set nocursorline nocursorcolumn
endfunction

Bạn cũng có thể muốn thêm <CR>vào ánh xạ khóa:

nnoremap <leader>fl :call Flash()<CR>
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.