Frage an org-mode, emacs, copy-paste – emacs - Speichert die aktuelle Pufferliste in eine Textdatei

9

Sehr oft muss ich eine einfache Textkopie meiner aktuell geöffneten Dateien erhalten. Die Gründe sind normalerweise:

Ich möchte die Liste an einen Kollegen sendenIch möchte dokumentieren, woran ich gerade arbeite (normalerweise in einem Organisationsdokument)Ich möchte auf eine meiner aktuell geöffneten Dateien in der Shell reagieren. Ich muss den Pfadnamen dafür kopieren-einfügen.

Tatsache ist, dass das üblich istbuffer-menu oderlist-buffers Bietet ein praktisches Menü zum Navigieren in den geöffneten Puffern, ist jedoch sehr unpraktisch, wenn Sie die Namen der geöffneten Dateien kopieren und in das Terminal einfügen oder eine der oben genannten Aktionen ausführen möchten. Zum Beispiel: Ich kann nicht auf eine Zeile doppelklicken, um den vollständigen Pfadnamen auszuwählen, und ich kann den nicht verwendenkill/yank Emacs-Sequenz zum Kopieren um den Pfadnamen.

Zusammenfassung: Ich möchte die Liste der geöffneten Dateien ohne andere Daten in eine Textdatei (oder in einen neuen Puffer) exportieren. Keine Dateigröße, Modus oder andere Emacs-Metadaten.

Gibt es dafür einen Befehl? Ein zusätzliches Paket, das ich installieren kann?

BEARBEITEN

Hinzufügen einer Lösung von Trey Jackson, modifiziert, um ein Feedback zu geben, was getan wurde:

<code>(defun copy-open-files ()
  "Add paths to all open files to kill ring"
  (interactive)
  (kill-new (mapconcat 'identity 
                       (delq nil (mapcar 'buffer-file-name (buffer-list))) 
                       "\n"))
  (message "List of files copied to kill ring"))
</code>

Deine Antwort

3   die antwort
9

Dieser Befehl erledigt die Arbeit für Sie:

<code>(defun copy-open-files ()
  "Add paths to all open files to kill ring"
  (interactive)
  (kill-new (mapconcat 'identity 
                       (delq nil (mapcar 'buffer-file-name (buffer-list))) 
                       "\n")))
</code>
Das ist es! Ich kann den Kill-Ring einfach überall dort einfügen, wo ich arbeite, und bei Bedarf auch in die Shell. dangonfast
6

*Buffer List* Puffer. Standardmäßig befindet es sich im ModusBuffer Menu, aber es zu änderntext-mode oderfundamental-mode entfernt das spezielle Verhalten, sodass Sie es wie einen normalen Puffer ausschneiden und einfügen können. Die Metadaten können einfach mit abgeschnitten werdendelete-rectangle.

Alternativ können Sie mit elisp programmgesteuert auf die Pufferliste zugreifen:

<code>(dolist (buffer (buffer-list))
  (when (buffer-file-name buffer)
    (insert (buffer-file-name buffer) "\n")))
</code>
Obwohl dies eine praktikable Lösung wäre, bedeutet dies zu viele Tastenanschläge, um sie praktisch zu machen. Ich benutze das wirklich oft. dangonfast
1

aus der Pufferliste zu kopieren und zu ziehen.

z.B. kopiere alles mitC-xhM-w und dann in einen neuen Puffer zum Bearbeiten ziehen.

Verwandte Fragen