NeoVim занимает две секунды, чтобы выйти через сочетание клавиш Ctrl + q - PullRequest
1 голос
/ 24 апреля 2019

Я использую следующую конфигурацию в .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, отображается следующее сообщение (при нажатии 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.

Edit: Связывание по умолчанию shift + zz тоже занимает две секунды.

$ nvim -version
> NVIM v0.3.4

1 Ответ

1 голос
/ 24 апреля 2019

Это похоже на вечно нерешенную проблему с X и xmodmap, а не с vim.Если вы будете искать «пожалуйста, отпустите следующие ключи», вы обнаружите, что многие годы жалуются на одно и то же без единого решения, за исключением удаления команд xmodmap из таких мест, как bashrc и vimrc.Когда xmodmap запускается способом, который изменяет модификаторы, и любой модификатор удерживается, он будет жаловаться и задерживаться таким образом.Это происходит потому, что базовый запрос к X-серверу завершается с ошибкой всякий раз, когда модификатор удерживается, и он ждет, пока вы отпустите ключ, прежде чем он попытается повторить попытку.Так что здесь нет простых решений.Единственные обходные пути, которые приходят на ум:

  • Забудьте о переназначении клавиш, не запускайте xmodmap при выходе из vim.
  • Не выходите из vim, используя сочетания клавиш, которые включаютКлавиши-модификаторы.
  • (Может быть) добавить задержку в команду VimLeave, которая будет достаточной для того, чтобы вы убрали палец с клавиши, но короче, чем 2 секунды.Это немного уменьшит неудобства, но не устранит их.
...