30

Q10 在 Windows上写了很多之后,我习惯了每次按键时它发出的打字机声音。至少对我来说,拥有这种声音反馈感觉很棒。

另一方面,在 Linux 上,我喜欢用 VIM 编写它,因为它具有编辑功能。如何将这个功能添加到 VIM?

简单来说,就是想在插入模式下每次按键都播放一个声音。

4

5 回答 5

51

好吧,这有点疯狂,但它似乎有效。首先,给自己一个 aiff 格式的打字机声音。然后把那个打字机声音放进去~/.vim/support/my_typewriter_sound.aiff。然后将以下内容添加到您的~/.vimrc.

function! PlaySound()
  silent! exec '!afplay ~/.vim/support/my_typewriter_sound.aiff &'
endfunction
autocmd CursorMovedI * call PlaySound()

请注意,上面的函数调用,我知道它适用于 Mac,需要在 Linux 上afplay替换。play在 Windows 上,我不知道。

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

于 2010-12-11T19:46:47.203 回答
3

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

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

于 2015-11-03T17:17:07.977 回答
1

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

于 2010-12-12T20:46:18.510 回答
1

你应该试试Qweritckle

这是一个用于 Linux 的打字机声音模拟器。

于 2013-11-20T04:15:00.583 回答
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 命令而不是特定的编译任务。Do for Vim 利用 Vim 中内置的 Python 支持在单独的线程(异步)上运行每个命令。我对使用此插件的结果感到非常满意,如下所示:

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

屏幕没有闪烁,并且各个按键声音重叠,以获得真实的咔哒声级联点击。

于 2016-04-21T05:18:16.357 回答