NeoVim需要两秒钟才能通过ctrl + q key bind退出

问题描述 投票:1回答:1

我在.vimrc中使用以下配置。 Ctrl + q键绑定需要2秒才能退出vim

" swap Escape and Caps Lock
au VimEnter * silent !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'   
au VimLeave * silent !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'

" Ctrl + q to quit
nmap <c-q> :q<CR>
imap <c-q> <Esc>:q<CR>

如果从VimLeave事件中删除silent,则会显示以下消息(按下Ctrl + q时),并且vim将在2秒后自动退出。

:!xmodmap -e 'clear Lock'-e 'keycode 0x42 = Caps_Lock
xmodmap: please release the following keys within 2 seconds:

(keysym ex71, keycode 24)
Control L (keysym Oxffe3, keycode 37)

但是,使用上述配置,手动运行命令(:q并按Enter键)立即退出vim

编辑:默认键绑定shift + zz也需要两秒钟。

$ nvim -version
> NVIM v0.3.4
linux vim neovim
1个回答
1
投票

这看起来是X和xmodmap永远未解决的问题,而不是vim。如果您搜索“请释放以下密钥”,您会发现许多人抱怨同样的事情没有解决方案,除了从bashrc和vimrc等地方删除xmodmap命令。当xmodmap以改变修饰符的方式运行,并且任何修饰符被按下时,它将以这种方式抱怨和延迟。这样做是因为只要按下修饰符,对X服务器的基础请求就会失败,并且等待你在重试之前释放密钥。所以这里没有简单的解决方案。我想到的唯一解决方法是:

  • 忘记键重映射,不要在vim退出时运行xmodmap
  • 不要使用涉及修饰键的键绑定退出vim。
  • (也许)在VimLeave命令中加一个延迟,这个延迟足以让你的手指脱离键,但短于2秒。这样可以减少一些不便,但不会让它消失。
© www.soinside.com 2019 - 2024. All rights reserved.