Comment ouvrir des fichiers en eshell avec des caractères génériques


8

J'ai l'habitude de taper dans un shell quelque chose comme:

emacsclient **/Threshold.java

Threshold.javaest un fichier profondément imbriqué dans un répertoire et je veux juste l'ouvrir par son nom.

Quand j'essaye la même chose dans eshell, j'obtiens (ec est un alias pour find-file):

ec **/Threshold.java
Wrong type argument: stringp, ("src/main/java/org/elasticsearch/shield/admin/Threshold.java")

Comment puis-je faire fonctionner cela en eshell?

Réponses:


8
(defun eshell/my-find-file (pattern)
  (mapc #'find-file (mapcar #'expand-file-name pattern)))

puis utilisez my-find-file **/Threshold.javadepuis Eshell, si vous souhaitez également my-find-fileprendre en charge un modèle non global (par exemple, my-find-file Threshold.java), essayez de suivre:

(defun eshell/my-find-file (pattern)
  (if (stringp pattern)
      (find-file pattern)
    (mapc #'find-file (mapcar #'expand-file-name pattern))))

4

Essaye ça:

mapcar #'find-file **/Threshold.java

Cela ne fonctionne que si se **/Threshold.javadéveloppe en un seul fichier. Sinon, le deuxième fichier sera ouvert via un chemin d'accès relatif, mais en fonction du répertoire du premier fichier au lieu du répertoire où la commande a été exécutée.


La clé est que pour eshell, le caractère générique devient double *
Yu Shen

1

J'ai écrit cette fonction pratique:

(defun eshell/for-each (cmd &rest args)
    (let ((fn (intern cmd))
          (dir default-directory))
      (dolist (arg (eshell-flatten-list args))
        (let ((default-directory dir))
          (funcall fn arg)))))

Remarquez la gestion des répertoires. Vous pouvez ensuite appeler, par exemple for-each find-file **/Threshold.java OtherFileToo.java,.

Pour ouvrir des fichiers à partir eshell J'utilise ceci: alias ff for-each find-file $*.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.