2010-12-11 14 views
27

Dopo un sacco di scrittura in Q10 on Windows, mi sono abituato al suono della macchina da scrivere che fa ogni volta che si preme un tasto. Almeno per me è bello avere questo tipo di feedback sonoro.Come posso far suonare VIM il suono della macchina da scrivere quando scrivo una lettera?

Su Linux, d'altra parte, mi piace scriverlo VIM, a causa delle sue funzioni di modifica. Come posso aggiungere questa funzionalità a VIM?

Detto semplicemente, Voglio riprodurre un suono ogni volta che preme un tasto nella modalità di inserimento.

+4

E 'per infastidire i tuoi vicini? –

risposta

47

Va bene, questo è un pazzo, ma sembra funzionare. In primo luogo, prendi un suono da macchina da scrivere in formato aiff. Quindi metti il ​​suono della macchina da scrivere in ~/.vim/support/my_typewriter_sound.aiff. Quindi aggiungi quanto segue al tuo ~/.vimrc.

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

Si noti che la funzione di cui sopra chiama a afplay, che so opere su un Mac e deve essere sostituito con play su Linux. Su Windows, non ne ho idea.

Quindi, sapete cosa sta succedendo sopra, per prima cosa stiamo creando una funzione chiamata PlaySound che esce a afplay. Quindi impostiamo un autocomando che viene attivato ogni volta che il cursore si sposta in modalità di inserimento. Quando spara, chiama PlaySound.

+0

Impressionante, giocare su Linux funziona anche per i file wav, ho dovuto solo modificarlo per disporre l'output su/dev/null e funziona benissimo! grazie –

+5

È per questo che amo vim, perché "pazzo" e il coraggio di tutti gli altri "mostri" sono sempre pronti a dare loro la risposta, e "Vim" a sua volta fa da sfondo a tutto questo avendo queste infinite possibilità. – SergioAraujo

+1

Per fare un ulteriore passo avanti e centrare tutto sullo schermo a la Q10/WriteRoom, controlla VimRoom: http://projects.mikewest.org/vimroom –

1

Si dovrebbe cercare Qweritckle

E 'un suono emulatore di macchina da scrivere per Linux.

1

idea di divertimento, e grazie per la risposta Trotter. Tuttavia, utilizzando la risposta che ho trovato con il mio sistema (Ubuntu 14.04) che Vim è andato in bianco ad ogni pressione di un tasto con il messaggio:

Premere INVIO o un comando per continuare

Sulla base di discussione sul tema di eseguire comandi in silenzio in Vim a https://vi.stackexchange.com/questions/1942/how-to-execute-shell-commands-silently ho provato:

function! PlaySound() 
    silent! exec '!play ~/.vim/support/my_typewriter_sound.wav &' | :redraw! 
endfunction 
autocmd CursorMovedI * call PlaySound() 

che ha spianato la schermata vuota automaticamente, ma ho potuto vedere il tremolio dopo ogni pressione del tasto ed i suoni sono stati prodotti solo dopo l'ultima pressione di un tasto è stato finito, creando un'esperienza piuttosto innaturale ed epilettica. Nella stessa domanda OliverUv ha fornito l'importante spiegazione che Vim esegue in modo sincrono, vale a dire che attende di continuare fino al completamento dell'esecuzione. Suggerisce vim-dispatch o Neomake per l'esecuzione asincrona, ma alla fine sono andato con Do for Vim in quanto è più orientato verso l'esecuzione di comandi di shell arbitrari piuttosto che compiti di compilazione specifici. Do per Vim utilizza il supporto Python integrato in Vim per eseguire ogni comando su un thread separato (in modo asincrono).Sono molto soddisfatto dei risultati utilizzando questo plugin come segue:

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

Non c'è sfarfallio dello schermo e la pressione del tasto singoli suoni si sovrappongono per un autentico tintinnio cascata di clic.

Problemi correlati