Comment puis-je faire son machine à écrire de jeu VIM quand j'écris une lettre?

StackOverflow https://stackoverflow.com/questions/4418364

  •  08-10-2019
  •  | 
  •  

Question

Après beaucoup d'écriture dans Q10 sur Windows , je me suis habitué au son de la machine à écrire, il fait chaque fois que vous appuyez sur une touche. Au moins pour moi, il se sent bien d'avoir ce genre de commentaires de son.

Sous Linux d'autre part, j'aime écrire VIM, en raison de ses caractéristiques d'édition. Comment pourrais-je ajouter cette fonctionnalité à VIM?

dit simplement, Je veux jouer un son à chaque fois que j'appuie sur une touche dans le mode d'insertion.

Était-ce utile?

La solution

D'accord, ce peu fou, mais il semble fonctionner. Tout d'abord, vous prenez un son de machine à écrire au format AIFF. Ensuite, mettre que le son de la machine à écrire ~/.vim/support/my_typewriter_sound.aiff. Ensuite, ajoutez ce qui suit à votre ~/.vimrc.

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

Notez que la fonction ci-dessus appelle à afplay, que je connais des œuvres sur un Mac et doit être remplacé par play sous Linux. Sous Windows, je ne sais pas.

Donc, vous savez ce qui se passe au-dessus, nous créons d'abord une fonction appelée PlaySound que des obus sur la afplay. Nous avons ensuite configurer un autocommande qui obtient déclenché chaque fois que le curseur se déplace en mode d'insertion. Quand il tire, il appelle PlaySound.

Autres conseils

Le plugin existe. Vous pouvez le trouver ici: https://github.com/osyo-manga/vim-sound

Cependant, vous devez ajouter des fichiers d'effets sonores vous, que vous pouvez trouver ici: http://www.soundjay.com/typewriter-sounds.html

Si vous êtes sur Solaris, vous pouvez DTrace le pilote du clavier du noyau avec cet ensemble de scripts: http://www.brendangregg.com/DTrace/typewriter-0.75.tar.gz

Vous devriez essayer Qweritckle

Il est un émulateur sonore de machine à écrire pour Linux.

idée de plaisir, et merci pour la réponse Trotter. Cependant, en utilisant votre réponse que je trouve avec mon système (Ubuntu 14.04) que Vim a vierge à chaque pression de touche avec le message:

  

Appuyez sur ENTRÉE ou commande type pour continuer

Sur la base de la discussion sur le sujet de l'exécution des commandes en silence dans vim https: //vi.stackexchange.com/questions/1942/how-to-execute-shell-commands-silently J'ai essayé:

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

qui éclaircit l'écran vide automatiquement, mais je ne pouvais voir le scintillement après chaque pression de touche et les sons n'ont été produites après la dernière pression de touche a été terminé, ce qui rend pour une expérience tout à fait naturel et épileptique. Dans la même question OliverUv a donné l'explication importante qui exécute Vim de manière synchrone, ce qui signifie qu'il attend de continuer jusqu'à ce que l'exécution soit terminée. Il suggère vim-expédition ou Neomake pour l'exécution asynchrone, mais à la fin je suis allé avec Do pour VIM car il est plus orienté vers l'exécution de commandes shell arbitraires plutôt que des tâches de compilation spécifiques. Faire pour Vim intégré Utilise dans le support de Python dans vim pour exécuter chaque commande sur un thread séparé (asyncronously). Je suis très satisfait des résultats obtenus en utilisant ce plugin comme suit:

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

Il n'y a pas scintillement de l'écran et les sons individuels se chevauchent pour keypress une cascade authentique claquements de cliquer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top