Như Ingo giải thích. Chỉ cần nghĩ rằng tôi sẽ đăng giải pháp: https://github.com/Greduan/dotfiles/blob/47f92e4db29d4ead778d877a85082b271de130ed/vim/vimrc.vim#L332-L346
Hoạt động khá tốt. Tôi cũng hơi bối rối, nên tôi không thể giải thích được, nhưng đoạn mã giải thích khá rõ.
Vấn đề là nó hoạt động, nó chỉ đơn giản là làm cho <Esc>
hoạt động ngay lập tức ngay cả khi trên Thiết bị đầu cuối. Tôi tin rằng nếu bạn có ánh xạ được đặt thành <Esc>
, nó cũng sẽ cho bạn thời gian để thực hiện những điều đó. Tuy nhiên tôi không chắc chắn.
EDIT
nghiên cứu một chút và bây giờ tôi có thể giải thích nó. Về cơ bản, nếu bạn không sử dụng GUI (như MacVim) thì khi bạn nhập chế độ chèn, ttimeoutlen
sẽ được đặt thành 0. Nghĩa là ngay khi bạn nhấp vào <Esc>
sẽ hoạt động. Tuy nhiên khi bạn đang ở chế độ bình thường thì nó sẽ đặt số ttimeoutlen
thành số bạn thích, cho phép bạn ánh xạ với <Esc>
.
Giải pháp hoàn hảo tôi nghĩ, vì nếu bạn có ánh xạ ở chế độ chèn, nó sẽ sử dụng điều khiển hoặc một cái gì đó tương tự.
EDIT 2
Dưới đây là các mã:
set timeout " Do time out on mappings and others
set timeoutlen=2000 " Wait {num} ms before timing out a mapping
" When you’re pressing Escape to leave insert mode in the terminal, it will by
" default take a second or another keystroke to leave insert mode completely
" and update the statusline. This fixes that. I got this from:
" https://powerline.readthedocs.org/en/latest/tipstricks.html#vim
if !has('gui_running')
set ttimeoutlen=10
augroup FastEscape
autocmd!
au InsertEnter * set timeoutlen=0
au InsertLeave * set timeoutlen=1000
augroup END
endif
Với thời gian tôi đã loại bỏ các điều kiện GUI không chạy và nó vẫn hoạt động như xa như tôi có thể nói.
bạn có bản đồ nào với phím ESC không? – Kent