Điều này đang khiến tôi phát điên. Tôi đang sử dụng XTerm (330) và vim 8.0.1365 mới nhất (trên FreeBSD).
Đôi khi, không phải lúc nào cũng vậy, khoảng 1 trên 5, khi tôi mở một tệp bằng vim, một dòng vui nhộn được chèn ở trên dòng 1. Sau nhiều lần gãi đầu, tôi nhận ra đó là dòng cuối cùng tôi đã xóa trong một phiên trước đó. Nói cách khác, có vẻ như ""P
(dán thanh "
ghi) đang chạy.
Sau một số điều tra thêm, tôi thấy điều này chỉ xảy ra khi tôi đã *sunKeyboard: true
đặt trong tài nguyên XTerm và khi tôi sử dụng phông chữ được hiển thị, chẳng hạn như -fa "DejaVu Sans Mono:size=24"
. (Tôi đã nói với bạn điều đó thật lạ phải không?). Tôi không có .vimrc
và không có .vim
thư mục, để tránh mọi thủ thuật chơi plugin trên tôi.
Tôi có thể tái tạo hiệu ứng phần nào với các lệnh sau:
#!/bin/sh
rm -f .viminfo; echo inserted >bar; echo x >baz
vim -c d -c wq bar
echo '*sunKeyboard: true' > XTerm
export XAPPLRESDIR=$PWD
for i in 1 2 3 4 5 6; do
xterm -fa "DejaVu Sans Mono:size=24" -e vim baz
done
Điều này sẽ tạo ra các tập tin cần thiết, đặt inserted
vào thanh "
ghi và gọi vim một vài lần. Nếu bạn thấy một tệp một dòng với x
dòng đầu tiên, tất cả đều ổn; nhập q
cho lần gọi tiếp theo Nếu tuy nhiên bạn thấy
inserte2
x
bạn đã tái tạo vấn đề. Cũng lưu ý rằng ký tự cuối cùng của dòng 1 đã được thay thế bằng 2
. Điều này dường như đến từ .
đăng ký. Dưới đây là các thanh ghi:
:reg
--- Registers ---
"" inserted^J
"1 inserted^J
". 2
"% baz
- Thử kịch bản nhiều lần, bạn có thể tái tạo vấn đề không? Hãy chắc chắn để di chuyển
.vimrc
và.vim
tạm thời ra khỏi đường. - Nếu vậy, bạn có thể cho tôi biết những gì đang xảy ra ở đây?
- Bất kỳ đề xuất làm thế nào để đi đến tận cùng của điều này?
CẬP NHẬT
Có vẻ như tôi không phải là người duy nhất: https://github.com/vim/vim/issues/2238
:reg
lệnh không còn hiển thị ".
nội dung.
:echo v:termresponse
cái gì?
^[[>19;331;0c
. Trang github là một mê cung nhỏ ngoằn ngoèo, tôi không biết làm thế nào để lượm lặt thông tin từ đó. Gần phía dưới nó nói "đã đóng", nhưng dường như tôi không thể tìm thấy số bản vá, chẳng hạn như "đã sửa trong 8.0. ####". Cảm ơn đã dành thời gian để bình luận!
set t_RS=
hoặcset t_SH=
trong vimrc của bạn làm việc?