Y a-t-il un moyen de parcourir rapidement de nombreux fichiers dans EMACS (24.3)? Plus spécifiquement: p>
supposons que un cadre EMACS est divisé en deux fenêtres. Supposons que la mise au point soit dans la fenêtre de gauche qui possède un tampon «dirigeable» ouvert avec de nombreux fichiers texte (ou code). Je voudrais monter et descendre la liste des fichiers (par exemple avec des touches de curseur), tandis que le fichier actuel est affiché dans la fenêtre droite. Encore mieux le fichier est visionné et fermé une fois que je vous déplace dans le tampon dirié vers le fichier suivant. Cela serait très utile, notamment avec un mode «omace». P>
Cela peut-il être fait dans 'Dired'? Je ne trouve pas non plus cette fonctionnalité dans DIRED-X ou Sunrise-Commander. Est-ce possible? P>
Les meilleurs candidats que j'ai déjà essayés (et pourquoi ils ne résolvent pas le problème): p>
'v' qui montre le fichier actuel, mais déplace également l'attention p>
'c-o' qui montre le fichier actuel, mais après avoir augmenté de haut en bas, je dois appuyer à nouveau sur C-O, il génère également de nombreuses tampons p>
Merci beaucoup pour votre aide! P>
6 Réponses :
Essayez qui pourrait faire appel à vous p> p>
Merci pour la suggestion de «Speedbar». Cependant, cela ne résout pas mon problème initial.
Une suggestion utile, bien qu'elle ne réponde pas à la question.
Voici comment je fais cela avec Celui-ci a deux vitres: P> mode de vue code>:
upd: h2>
Où sont définies ces commandes? J'utilise 24.3.1 et je ne semble pas les avoir.
Ah Désolé, je pensais qu'ils étaient standard. Je vais mettre à jour la réponse
Merci! Très utile et il est déjà assez proche de ce que je cherche. Encore mieux serait de monter et descendre à l'intérieur de la fenêtre ardée (comme expliqué dans la question).
Le mode Affichage B> GNU. org / logiciel / emacs / manuel / html_node / emacs / mode-mode.html semble être un mode en lecture seule pour un fichier ou un tampon. Quelle est la justification d'utiliser le crochet de mode de vue pour la mappage de clé pour le mode séché?
charge glaçons strong> . < / p> li>
Définissez cette commande: p> li>
alors vous pouvez: p> chaque tampon de fichier que vous avez visité avec [Par défaut, l'action alternative pour Voir aussi ce fil de l'aide-gnu-emacs@gnu.org. C'est à peu près la même question que la vôtre, je pense. Mes réponses Il y avait à peu près le Même chose que ma réponse ici, mais il y a aussi des réponses d'autres personnes qui pourraient vous aider également. P> ol>
m-x my-wind-file code> (ou liez-le à une touche - E.G.,
C-X C-F Code>). LI>
down code> ou
up code> pour cycle parmi les noms de fichiers. LI>
C-S-Down Code> pour visiter le fichier suivant dans l'ordre. Li>
ret code> Pour choisir un fichier à visiter ou
c-g code> pour annuler. li>
ol>
C-S-Down code> a été tué lorsque vous
vu le prochain. Vous pouvez également mélanger dans
c-down code> ou
C-RET code> à
Visitez également des fichiers dont vous ne voulez pas tuer les tampons que vous ne voulez pas tuer
automatiquement. (Changer
affichage-fichier code> à
recherche-fichier code> si vous ne le faites pas
vouloir visiter dans
mode de vue code>, qui est en lecture seule.) p>
icle-wind-file code> est
icicule-alt-act-fn-for-type code>, qui vous invite à un fichier-
action appropriée à utiliser sur le candidat particulier choisi pour
l'action. Commande
My-Wind-Fichier Code> Il suffit de substituer un différent
Fonction d'action alternative (pour tous les candidats que vous choisissez).] p>
Une solution simple et générique (sans optimisation) peut être via le mécanisme C-X () KBD>. P>
Ouvrez d'abord les deux vitres dans Emacs, avec - dites - le top one étant ardéré em>. p>
Ensuite, vous pouvez démarrer le mécanisme em> répétition: p>
à partir de ce point (étant dans le volet inférieur, Dired em> dans une vitre supérieure), ce qui fait un simple p>
sera automatiquement p>
Il y a peut-être une manière plus spécifique de le faire, mais sachant que le mécanisme macro est de toute façon très utile dans les EMACS. P>
Merci beaucoup pour toutes ces réponses. Résumation J'ai créé la solution suivante (étendue la réponse de "Abo-Abo"):
;; little modification to dired-mode that let's you browse through lots of files (add-hook 'dired-mode-hook (lambda() (define-key dired-mode-map (kbd "C-o") 'dired-view-current) ; was dired-display-file (define-key dired-mode-map (kbd "n") 'dired-view-next) ; was dired-next-line (define-key dired-mode-map (kbd "p") 'dired-view-previous))) ; was dired-previous-line (defun dired-view-next () "Move down one line and view the current file in another window." (interactive) (dired-next-line) (dired-view-current)) (defun dired-view-previous () "Move up one line and view the current file in another window." (interactive) (dired-previous-line) (dired-view-current)) (defun dired-view-current () "View the current file in another window (possibly newly created)." (interactive) (if (not (window-parent)) (split-window)) ; create a new window if necessary (let ((file (dired-get-file-for-visit)) (dbuffer (current-buffer))) (other-window 1) ; switch to the other window (unless (equal dbuffer (current-buffer)) ; don't kill the dired buffer (if (or view-mode (equal major-mode 'dired-mode)) ; only if in view- or dired-mode (kill-buffer))) ; ... kill it (let ((filebuffer (get-file-buffer file))) (if filebuffer ; does a buffer already look at the file (switch-to-buffer filebuffer) ; simply switch (view-file file)) ; ... view it (other-window -1)))) ; give the attention back to the dired buffer
Très belle chose! Je viens de découvrir un petit bug, au moins dans Emacs 24, vous devez passer le numéro 1 à la ligne précédente / précédente.
Une autre solution de mode Vue sur les listes de mode AG-AG. Je n'ai pas pu trouver une question pour le mode AG, peut-être que cela aide quelqu'un à généraliser un aperçu de la FFAP pour tout mode.
(defun directory-ag-results () (save-excursion (goto-char (point-min)) (search-forward "\"") (setq a (point)) (search-forward "\"") (setq b (- (point) 1)) (buffer-substring-no-properties a b))) (defun search-item-path () (let ((dir (directory-ag-results)) (file-parts (split-string (substring-no-properties (thing-at-point 'filename)) ":"))) (concat dir (nth 0 file-parts)))) (defun search-item-line () (let ((file-parts (split-string (substring-no-properties (thing-at-point 'filename)) ":"))) (- (string-to-number (nth 1 file-parts)) 1))) (defun view-current () "Quickly view the current file in another window." (if (not (window-parent)) (split-window)) ; create a new window if necessary (let ((file (search-item-path)) (line (search-item-line)) (dbuffer (current-buffer))) (other-window 1) ; switch to the other window (unless (equal dbuffer (current-buffer)) ; don't kill the dired buffer (if (or view-mode (equal major-mode 'dired-mode)) ; only if in view- or dired-mode (kill-buffer))) ; ... kill it (let ((filebuffer (get-file-buffer file))) (if filebuffer ; does a buffer already look at the file (switch-to-buffer filebuffer) ; simply switch (progn (view-file file) ; ... view it (goto-char (point-min)) (next-line line))) (other-window -1)))) (defun next-view-current () (interactive) (next-line) (view-current)) (defun previous-view-current () (interactive) (previous-line) (view-current)) (define-key ag-mode-map (kbd "M-p") 'previous-view-current) (define-key ag-mode-map (kbd "M-n") 'next-view-current)
J'aime
v code>. Vous pouvez ensuite naviguer avec
n code> /
p code> en mode View. Aussi
c-x c-q code> pour éditer.
La navigation avec 'N' et 'P' ne fonctionne pas pour moi en mode View, à la place, il "recherche en avant / en arrière pour la dernière expression régulière".
Ah, désolé c'est ma personnalisation. Je pensais que c'était la valeur par défaut :)
Vous pouvez également filtrer quels fichiers sont affichés dans le mode code> indiqué par CODE> les marquant, puis masquant, par exemple pour masquer tous les fichiers se terminant dans
.elc code> que vous pourriez faire
% m \ .elc ret k code>