2010-12-11 12 views
27

Nach viel Schreiben in Q10 on Windows habe ich mich an den Schreibmaschinenklang gewöhnt, den es jedes Mal macht, wenn Sie eine Taste drücken. Zumindest für mich fühlt es sich großartig an, diese Art von Sound-Feedback zu haben.Wie kann ich VIM den Schreibmaschinen-Sound beim Schreiben eines Buchstabens wiedergeben lassen?

Auf Linux auf der anderen Seite, ich liebe es VIM zu schreiben, wegen seiner Bearbeitungsfunktionen. Wie kann ich diese Funktionalität zu VIM hinzufügen?

Einfach gesagt, Ich möchte jedes Mal einen Ton spielen, wenn ich im Einfügemodus eine Taste drücke.

+4

Ist es zu ärgern Ihre Nachbarn? –

Antwort

47

In Ordnung, das ist ein bisschen verrückt, aber es scheint zu funktionieren. Nehmen Sie sich zuerst einen Schreibmaschinen-Sound im Aiff-Format. Dann setzen Sie den Schreibmaschinen-Sound in ~/.vim/support/my_typewriter_sound.aiff. Dann füge folgendes zu deinem ~/.vimrc hinzu.

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

Beachten Sie, dass die obige Funktion zu afplay ruft, die ich Arbeiten auf einem Mac kennen und muss mit play auf Linux ersetzt werden. Unter Windows habe ich keine Ahnung.

Damit Sie wissen, was oben passiert, erstellen wir zunächst eine Funktion namens PlaySound, die zu afplay ausschießt. Dann richten wir einen Autokommandom ein, der ausgelöst wird, wenn sich der Cursor im Einfügemodus bewegt. Wenn es ausgelöst wird, ruft es PlaySound.

+0

Awesome, spielen auf Linux funktioniert auch für WAV-Dateien, ich musste nur ändern, um die Ausgabe nach/dev/null zu disponieren, und es funktioniert super! danke –

+5

Deshalb liebe ich vim, weil "verrückt" und wagen alle anderen "Freaks" sind immer bereit, ihnen die Antwort zu geben, und "Vim" wiederum dient als Kulisse für all das mit diesen endlosen Möglichkeiten. – SergioAraujo

+1

Um es einen Schritt weiter zu gehen und alles auf dem Bildschirm a la Q10/WriteRoom zu zentrieren, schau dir VimRoom an: http://projects.mikewest.org/vimroom –

1

Sie sollten versuchen, Qweritckle

Es ist eine Schreibmaschine Sound-Emulator für Linux.

1

Fun Idee, und danke für die Antwort Trotter. Jedoch Ihre Antwort mit fand ich mit meinem System (Ubuntu 14.04), dass Vim mit der Meldung bei jedem Tastendruck leer ging:

Drücken Sie die Eingabetaste oder geben Sie Befehl

Basierend auf Diskussion über das Thema fortzusetzen von Befehlen still in Vim bei https://vi.stackexchange.com/questions/1942/how-to-execute-shell-commands-silently Ausführung habe ich versucht:

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

, die den leeren Bildschirm automatisch gelöscht, aber ich konnte das Flackern nach jedem Tastendruck und die Geräusche wurden nur hergestellt nach dem letzten Tastendruck war sehen fertig, was zu einer ziemlich unnatürlichen und epileptischen Erfahrung führt. In der gleichen Frage gab OliverUv die wichtige Erklärung, dass Vim synchron ausgeführt wird, was bedeutet, dass es so lange wartet, bis die Ausführung abgeschlossen ist. Er schlägt vim-dispatch oder Neomake für die asynchrone Ausführung vor, aber am Ende ging ich mit Do for Vim, da es eher auf die Ausführung von beliebigen Shell-Befehlen als auf bestimmte Kompilierungsaufgaben ausgerichtet ist. Do for Vim nutzt integrierte Python-Unterstützung in Vim, um jeden Befehl in einem separaten Thread (asynchron) auszuführen.Ich bin sehr zufrieden mit den Ergebnissen dieses Plugin wie folgt:

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

Es gibt keine Flackern des Bildschirms ist und der einzelne Tastendruck klingt Überlappung für eine authentische Klappern Kaskade von Klick.