Интересная идея, и спасибо за ответ Троттер.Однако, используя ваш ответ, я обнаружил в своей системе (Ubuntu 14.04), что Vim гаснет при каждом нажатии клавиши с сообщением:
Нажмите клавишу ВВОД или введите команду, чтобы продолжить
Основываясь на обсуждении темы тихого выполнения команд в Vim на https://vi.stackexchange.com/questions/1942/how-to-execute-shell-commands-silently, я попытался:
function! PlaySound()
silent! exec '!play ~/.vim/support/my_typewriter_sound.wav &' | :redraw!
endfunction
autocmd CursorMovedI * call PlaySound()
, который автоматически очищал пустой экран, но я мог видеть мерцание после каждого нажатия клавиши и звукибыли произведены только после того, как последнее нажатие клавиши было закончено, создавая довольно неестественный и эпилептический опыт.В том же вопросе OliverUv дал важное объяснение того, что Vim выполняется синхронно, то есть он ожидает продолжения до завершения выполнения.Он предлагает vim-dispatch или Neomake для асинхронного выполнения, но в итоге я выбрал Do для Vim , поскольку он больше ориентирован на выполнение произвольных команд оболочки, а не на конкретные задачи компиляции.Do для Vim использует встроенную поддержку Python в Vim для выполнения каждой команды в отдельном потоке (асинхронно).Я очень доволен результатами использования этого плагина следующим образом:
function! PlaySound()
:DoQuietly play ~/.vim/support/my_typewriter_sound.wav
endfunction
autocmd CursorMovedI * call PlaySound()
Нет мерцания экрана, и отдельные звуки нажатия клавиш перекрываются для аутентичного грохочущего каскада щелчков.