Как я могу записать звук пишущей машинки VIM, когда я пишу письмо?
После многого написания в Q10 в Windows я привык к звуку пишущей машинки, который он делает каждый раз, когда вы нажимаете клавишу. По крайней мере, для меня это здорово иметь такую звуковую обратную связь.
В Linux, с другой стороны, мне нравится писать VIM, из-за его редактирования. Как добавить эту функциональность в VIM?
Проще говоря, Я хочу играть звук каждый раз, когда я нажимаю клавишу в режиме вставки.
Ответы
Ответ 1
Хорошо, это безумие, но, похоже, оно работает. Во-первых, возьмите себе пишущую машинку в формате aiff. Затем введите эту пишущую машинку в ~/.vim/support/my_typewriter_sound.aiff
. Затем добавьте следующее к вашему ~/.vimrc
.
function! PlaySound()
silent! exec '!afplay ~/.vim/support/my_typewriter_sound.aiff &'
endfunction
autocmd CursorMovedI * call PlaySound()
Обратите внимание, что вышеприведенная функция вызывает afplay
, которую я знаю, работает на Mac и ее нужно заменить на play
в Linux. В Windows я понятия не имею.
Итак, вы знаете, что происходит выше, мы сначала создаем функцию под названием PlaySound
, которая выводит на экран afplay
. Затем мы настраиваем автокоманду, которая запускается в любое время, когда курсор перемещается в режиме вставки. Когда он срабатывает, он вызывает PlaySound
.
Ответ 2
Возможно, вам действительно нужна клавиатура IBM Model M.
Ответ 3
Плагин существует. Вы можете найти его здесь: https://github.com/osyo-manga/vim-sound
Однако вам нужно добавить файлы звуковых эффектов самостоятельно, которые вы можете найти здесь:
http://www.soundjay.com/typewriter-sounds.html
Ответ 4
Если вы находитесь в Solaris, вы можете DTrace драйвер клавиатуры ядра с этим набором скриптов: http://www.brendangregg.com/DTrace/typewriter-0.75.tar.gz
Ответ 5
Вам следует попробовать Qweritckle
Это звуковой эмулятор пишущей машинки для Linux.
Ответ 6
Забавная идея, и спасибо за ответ Trotter. Однако, используя ваш ответ, который я нашел с моей системой (Ubuntu 14.04), что Vim на каждом нажатии нажал сообщение:
Нажмите ENTER или введите команду для продолжения
Основываясь на обсуждении темы выполнения команд молча в Vim на https://vi.stackexchange.com/info/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 for Vim, поскольку он больше ориентирован на выполнение произвольной оболочки а не конкретные задачи компиляции. Do для Vim использует встроенную поддержку Python в Vim для запуска каждой команды в отдельном потоке (асинхронно). Я очень доволен результатами, используя этот плагин следующим образом:
function! PlaySound()
:DoQuietly play ~/.vim/support/my_typewriter_sound.wav
endfunction
autocmd CursorMovedI * call PlaySound()
Нет мерцания экрана, и отдельные нажатия клавиш накладываются друг на друга для аутентичного каскада щелчка.