当我写信时,如何让VIM播放打字机声音?

时间:2010-12-11 18:57:15

标签: linux vim vim-plugin

经过Q10 on Windows的大量写作,我习惯了每次按键时打字的声音。至少对我而言,获得这种声音反馈感觉很棒。

另一方面,在Linux上,我喜欢把它写成VIM,因为它的编辑功能。如何将此功能添加到VIM?

简单地说,每次在插入模式下按键时我都想播放声音。

5 个答案:

答案 0 :(得分:47)

好吧,这有点疯狂,但似乎有效。首先,用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上运行,需要在Linux上替换为play。在Windows上,我不知道。

所以你知道上面发生了什么,我们首先创建了一个名为PlaySound的函数,它发送到afplay。然后,我们设置一个自动命令,当光标在插入模式下移动时,它会被触发。当它触发时,会调用PlaySound

答案 1 :(得分:3)

该插件确实存在。您可以在此处找到它:https://github.com/osyo-manga/vim-sound

但是,您需要自己添加声音效果文件,您可以在此处找到: http://www.soundjay.com/typewriter-sounds.html

答案 2 :(得分:1)

如果您使用的是Solaris,则可以使用以下一组脚本来DTrace内核键盘驱动程序:http://www.brendangregg.com/DTrace/typewriter-0.75.tar.gz

答案 3 :(得分:1)

您应该尝试Qweritckle

它是Linux的打字机声音模拟器。

答案 4 :(得分:1)

有趣的想法,感谢Trotter的回答。但是,使用我在我的系统(Ubuntu 14.04)中找到的答案,Vim在每个按键时都显示空白,并显示以下消息:

  

按ENTER或键入命令继续

基于https://vi.stackexchange.com/questions/1942/how-to-execute-shell-commands-silently在Vim中静默执行命令主题的讨论,我试过:

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,因为它更适合执行任意shell命令而不是特定的编译任务。 Vim利用Vim内置的Python支持在一个单独的线程上运行每个命令(异步)。我对使用此插件的结果非常满意,如下所示:

function! PlaySound()
  :DoQuietly play ~/.vim/support/my_typewriter_sound.wav
endfunction
autocmd CursorMovedI * call PlaySound()

屏幕没有闪烁,个别按键声音重叠,可以实现真正的咔嗒声。