Как заставить звучать пишущую машинку VIM при написании письма? - PullRequest
27 голосов
/ 11 декабря 2010

После большой записи в Q10 в Windows я привык к звуку пишущей машинки, который он издает при каждом нажатии клавиши.По крайней мере, для меня очень приятно иметь такую ​​звуковую обратную связь.

В Linux, с другой стороны, я люблю писать это VIM из-за его возможностей редактирования.Как я могу добавить эту функцию в VIM?

Проще говоря, Я хочу воспроизводить звук каждый раз, когда нажимаю клавишу в режиме вставки.

Ответы [ 5 ]

47 голосов
/ 11 декабря 2010

Хорошо, это вроде сумасшествие, но, похоже, работает. Сначала возьмите себе звук пишущей машинки в формате 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.

3 голосов
/ 03 ноября 2015

Плагин существует.Вы можете найти его здесь: https://github.com/osyo-manga/vim-sound

Однако вам нужно самостоятельно добавить файлы звуковых эффектов, которые вы можете найти здесь: http://www.soundjay.com/typewriter-sounds.html

1 голос
/ 21 апреля 2016

Интересная идея, и спасибо за ответ Троттер.Однако, используя ваш ответ, я обнаружил в своей системе (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()

Нет мерцания экрана, и отдельные звуки нажатия клавиш перекрываются для аутентичного грохочущего каскада щелчков.

1 голос
/ 20 ноября 2013

Вы должны попробовать Qweritckle

Это эмулятор звука пишущей машинки для Linux.

1 голос
/ 12 декабря 2010

Если вы используете Solaris, вы можете использовать DTrace для драйвера клавиатуры ядра с помощью следующего набора скриптов: http://www.brendangregg.com/DTrace/typewriter-0.75.tar.gz

...