Xóa và thay đổi chuỗi khóa chậm

Sep 28 2020

Khi tôi sử dụng ánh xạ chuỗi chìa khóa mà gây ra một sự thay đổi ngay lập tức trong tập tin (ví dụ như cw, dw, D, C), tôi có một thời gian chờ đợi khoảng 1 giây. Các ánh xạ khác chỉ là chuyển động (ví dụ 3w) hoặc chuyển động và thay đổi chế độ (ví dụ Ahoặc I) không gây ra bất kỳ độ trễ nào.

Hiện tại, các giải pháp đã thử của tôi bao gồm:

  • Đã thay đổi ttimeoutvà timeout(cả hai đều không được thiết lập để có thời gian chờ, dù sao tôi cũng đã thử xử lý chúng)
  • đã sử dụng :profile file *và :profile func *- không thấy bất kỳ thứ gì chạy nhiều hơn một lần hoặc có thời gian chạy hơn khoảng ~ 0,1 giây (thử nghiệm của tôi là mở một tệp và nhập một chút - đã gặp phải sự chậm trễ nhiều lần khi lập hồ sơ)
  • Để đảm bảo rằng đó không phải là thiết bị đầu cuối của tôi (iTerm2) đang chờ thứ gì đó, tôi đã tải vani vi (không có plugin hoặc bất cứ thứ gì) và thử điều đó - không có sự chậm trễ nào ở đó.

Tôi đang sử dụng neovim v0.4.4, trong iTerm2. Mọi sự trợ giúp hoặc các con đường khác để khám phá đều được đánh giá cao. Có cách nào để sử dụng :profilecho các chuỗi khóa được ánh xạ không?

Chỉnh sửa: theo phản hồi của filbranden, tôi đã tải nvim bằng cách sử dụng nvim --clean, và vấn đề không ở đó. Ngày mai tôi sẽ thử gỡ bỏ các plugin khác nhau và xem nguyên nhân gây ra sự cố, sau đó báo cáo lại.

Chỉnh sửa 2: Theo lời khuyên của eyal karni, tôi đã kiểm tra nmap cw, báo cáo không tìm thấy ánh xạ. Tôi cũng không thấy bất cứ thứ gì có vẻ liên quan au, nhưng thành thật mà nói, tôi đủ mới để hiểu rằng tôi có thể thiếu thứ gì đó - tôi đã tìm kiếm cwvà không tìm thấy bất cứ thứ gì.

Trả lời

1 Exnur Sep 30 2020 at 05:38

Hóa ra vấn đề không phải do những thay đổi ngay lập tức như tôi nghĩ, mà là do tương tác với khay nhớ tạm . Tôi đã chia nhỏ vimrc của mình nhiều lần cho đến khi tôi tìm thấy dòng vi phạm, đó là:

set clipboard=unnamed,unnamedplus

Điều này làm cho vim sử dụng khay nhớ tạm thời của hệ thống. Thật khó chịu (imo) khi không có vim sử dụng bàn phím hệ thống, vì vậy hiện tại, tôi đã thay thế điều này bằng cách tạo các ánh xạ sau (chỉ hoạt động trên mac os, do đó là câu lệnh if):

if has('macunix')
  " pbcopy for OSX copy/paste
  vmap <C-x> :!pbcopy<CR>
  vmap <C-c> :w !pbcopy<CR><CR>
  noremap <C-p> :read !pbpaste<CR>
endif

Căn nguyên của vấn đề dường như là sự chậm chạp trong thực tế pbcopyvà pbpastecông cụ, đó là những gì nvim đã sử dụng khi tôi đặt biến clipboard. Sự chậm trễ vẫn tiếp diễn trên thiết bị đầu cuối mà không có nvim:

ethan ~
06:56:57 PM > time echo "abcde" | pbcopy
________________________________________________________
Executed in  333.49 millis    fish           external
   usr time  292.80 millis  140.00 micros  292.66 millis
   sys time   34.45 millis  660.00 micros   33.79 millis

Một số thông tin hệ thống bổ trợ:

nvim --version đầu ra:

NVIM v0.4.4
Build type: Release
LuaJIT 2.0.5
Compilation: /usr/bin/clang -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/tmp/neovim-20200808-17465-1c37yvx/neovim-0.4.4/build/config -I/tmp/neovim-20200808-17465-1c37yvx/neovim-0.4.4/src -I/usr/local/include -I/tmp/neovim-20200808-17465-1c37yvx/neovim-0.4.4/deps-build/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include -I/usr/local/opt/gettext/include -I/tmp/neovim-20200808-17465-1c37yvx/neovim-0.4.4/build/src/nvim/auto -I/tmp/neovim-20200808-17465-1c37yvx/neovim-0.4.4/build/include
Compiled by brew@Mojave

Hệ điều hành: macOS Mojave 10.14.6