2 votes

Équivalent Emacs de cette commande Vim pour exécuter mes tests ?

Je suis en train d'utiliser Emacs en ce moment et d'expérimenter avec lui pour mon développement Rails et il y a une chose que je fais assez régulièrement dans Vim et j'aimerais savoir si une équivalence existe dans Emacs, ou un flux de travail alternatif pour atteindre le comportement dont j'ai besoin.

La commande dans Vim est

:map ;t :!rspec --no-color %

Essentiellement cela mappe une combinaison de touches pour exécuter une commande bash/shell sur le fichier représenté par le tampon actuel (% se développe en le nom de fichier au moment de l'exécution, le est juste un retour chariot à la fin pour exécuter la commande).

Je mappe toutes sortes de petites commandes aléatoires au fur et à mesure que j'en ai besoin et ce qui me manque vraiment, c'est l'immédiateté de cette approche.

Comment puis-je atteindre quelque chose de similaire ?

0 votes

Est-ce que vous voulez dire quelque chose comme shell-command-on-region ? Vous pouvez appeler cela avec l'ensemble du buffer sélectionné comme région.

0 votes

En général, cependant dans la plupart des cas, je ne veux pas exécuter la commande sur la région réelle de test mais sur le fichier représenté par le tampon. par exemple rspec --no-color spec/some_spec.rb. J'adore l'apparence de shell-command-on-region cependant - je peux clairement voir où cela s'insérerait dans mon flux de travail

3voto

methew Points 11

Cette fonction demande une commande et l'exécute sur le fichier tampon en cours. si aucun fichier n'est associé au tampon actuel, une erreur est renvoyée

(defun shell-command-on-buffer-file ()
"demande une commande et exécute cette commande sur le fichier associé
 du tampon actuel. si aucun tampon n'est associé, renvoie une erreur"
  (interactive)
  (or (buffer-file-name) (error "aucun fichier n'est associé à ce tampon"))
  (let* ((my-cmd (read-shell-command "Commande à exécuter: "))
         (cmd-to-run (concat my-cmd " " (buffer-file-name))))
   (shell-command cmd-to-run)))

comme d'habitude, emacs sauvegarde l'historique des commandes que vous avez données jusqu'à présent, celles-ci peuvent être accédées en utilisant M-p, M-n

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X