经过Q10 on Windows的大量写作,我习惯了每次按键时打字的声音。至少对我而言,获得这种声音反馈感觉很棒。
另一方面,在Linux上,我喜欢把它写成VIM,因为它的编辑功能。如何将此功能添加到VIM?
简单地说,每次在插入模式下按键时我都想播放声音。
答案 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()
屏幕没有闪烁,个别按键声音重叠,可以实现真正的咔嗒声。