2010-12-11 44 views
27

Après beaucoup d'écriture en Q10 on Windows, je me suis habitué au son de la machine à écrire à chaque fois que vous appuyez sur une touche. Au moins pour moi, c'est génial d'avoir ce genre de feedback sonore.Comment est-ce que je peux faire jouer la machine à écrire VIM quand j'écris une lettre?

Sur Linux d'autre part, j'adore l'écrire VIM, à cause de ses fonctionnalités d'édition. Comment pourrais-je ajouter cette fonctionnalité à VIM? Il suffit de dire Je veux jouer un son chaque fois que j'appuie sur une touche en mode insertion.

+4

Est-ce ennuyer vos voisins? –

Répondre

47

D'accord, c'est un peu fou, mais cela semble fonctionner. Tout d'abord, attrapez vous-même un son de machine à écrire au format aiff. Ensuite, mettez ce bruit de machine à écrire dans ~/.vim/support/my_typewriter_sound.aiff. Ajoutez ensuite 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. Sur Windows, je n'en ai aucune idée.

Donc, vous savez ce qui se passe ci-dessus, nous créons d'abord une fonction appelée PlaySound qui se termine à afplay. Nous configurons ensuite une autocommande qui se déclenche chaque fois que le curseur se déplace en mode insertion. Quand il se déclenche, il appelle PlaySound.

+0

Génial, jouer sur Linux fonctionne aussi pour les fichiers wav, il m'a juste fallu le modifier pour disposer la sortie vers/dev/null et ça marche super! merci –

+5

C'est pourquoi j'aime vim, parce que "fous" et osez tous les autres "freaks" sont toujours prêts à leur donner la réponse, et "Vim" sert à son tour de toile de fond à tout cela en ayant ces possibilités infinies. – SergioAraujo

+1

Pour aller plus loin et centrer tout sur l'écran à la Q10/WriteRoom, consultez VimRoom: http://projects.mikewest.org/vimroom –

1

Vous devriez essayer Qweritckle

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

1

Idée amusante, 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 se vide à 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 d'exécuter 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 pouvais voir le scintillement après chaque pression de touche et les sons n'ont été produits après la dernière pression de touche a été fini, ce qui rend une expérience tout à fait anormale et épileptique. Dans la même question OliverUv a donné l'explication importante que Vim s'exécute 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-dispatch ou Neomake pour l'exécution asynchrone, mais à la fin je suis allé avec Do for Vim car il est plus orienté vers l'exécution de commandes shell arbitraires plutôt que des tâches de compilation spécifiques. Faites pour Vim utilise le support Python intégré dans Vim pour exécuter chaque commande sur un thread séparé (de manière asynchrone).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 le scintillement de l'écran et la pression de touche sons individuels se chevauchent pour une cascade authentique claquements de cliquer.