Eén venster per project

Ik ben nu bezig met verschillende projecten. Ik wil één exemplaar van Emacs om ze allemaal te behandelen. Wat ik wil is een tmux-achtig gedrag waarbij elk 'venster' (in de betekenis van Emacs) overeenkomt met een project dat buffers bevat van de bestanden die betrekking hebben op dat project. Er zijn verschillende vensters, die elk overeenkomen met een project en ik zou moeten kunnen schakelen tussen deze twee (iets dat lijkt op C-b w )

Is deze functionaliteit al in enige vorm aanwezig? Ik denk dat het wel gaaf is om te hebben, want de andere opties zijn ook:

  • Zorg dat er meerdere instanties van Emacs zijn geopend.
  • Alle bestanden van alle projecten in één instantie hebben waardoor schakelbuffers lastig worden.
9
@cutejumper Perspectief is perfect. Je zou het als een antwoord kunnen schrijven, zodat ik het correct zou kunnen aanvinken.
toegevoegd de auteur bhollis, de bron
Hebt u voor projectbeheer perspectief geprobeerd?
toegevoegd de auteur Mahesh, de bron
@ sudeepdino008 Natuurlijk. Zie emacs.stackexchange.com/a/20709/5482 .
toegevoegd de auteur Mahesh, de bron
Als u bereid bent om een ​​aantal initiële insteltijden te investeren om de voorwaarden voor projecten te definiëren, kunt u ze aan één frame toewijzen en frame-bufs gebruiken. Zie ook Hoe een bestand te onderscheppen voordat het wordt geopend en welk frame wordt gekozen - stackoverflow.com/questions/18346785/… - om een ​​bestand weer te geven buffer in een doelkader en u kunt frame-buffs - add-buffer samen gebruiken om het frame gekoppeld te krijgen. U kunt frame-bufs trouwen met tabbar en buffers dynamisch koppelen/verwijderen: emacs.stackexchange.com/a/10112/2287
toegevoegd de auteur lawlist, de bron
Hier is de link naar frame-bufs om buffers aan een bepaald frame te koppelen: github.com/alpaker/Frame-Bufs/blob/master/frame-bufs.el
toegevoegd de auteur lawlist, de bron
Probeer deze blogpost op Emacs als een geavanceerde terminal multiplexer : u krijgt Tmux-achtig gedrag. Ik struikelde er gewoon over, zette het aan het werk en het doet wat het adverteert. Bovenaan krijg je ace-jump-mode , een leuke oplossing om snel rond te springen met je cursor in een buffer (als je die nog niet hebt).
toegevoegd de auteur n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳, de bron

4 antwoord

U kunt perspectief gebruiken om projecten te beheren. Van zijn README:

perspective.el biedt meerdere werkruimten (of 'perspectieven') voor elk Emacs-frame. Dit maakt het gemakkelijk om aan veel verschillende projecten te werken zonder in alle buffers verloren te gaan.

     

Elk perspectief bestaat uit een vensterconfiguratie en een reeks buffers. Schakelen naar een perspectief activeert de vensterconfiguratie en wanneer in een perspectief zijn alleen de buffers standaard beschikbaar.

Er is ook een andere versie persp-modus , die een beetje verschilt van de originele versie. De perspectieven worden gedeeld door frames en de toestanden kunnen op de schijf worden opgeslagen.

Als u projectiel gebruikt, is er ook een perspectief integratie .

7
toegevoegd

U kunt de wenkbrauw -modus proberen, die meerdere (misschien gecompliceerde) vensterindelingen beheert. U kunt schakelen tussen vensterconfiguraties met toetsaanslagen zoals C-c C-w 1 en C-c C-w 2 .

5
toegevoegd
Eyebrowse deelt buffer tussen werkruimten. Dat is misschien ongewenst
toegevoegd de auteur bhollis, de bron

Een "barebones" -oplossing is mogelijk om C-x r w te gebruiken om de huidige vensterstatus en C-x r j te registreren om terug te keren naar een eerdere.

2
toegevoegd

Ik gebruik een combinatie van een paar verschillende pakketten.

Het belangrijkste is dat ik Projectile gebruik voor het werken aan een "project" en fuzzy-finding-bestanden. Ik gebruik meerdere frames, één voor elk project waaraan ik momenteel werk. Je hoeft echt alleen C-x 5 2 en C-x 5 0 te weten om een ​​frame te maken/doden. Om het schakelen tussen projecten te beheren en de toestand van de vensterconfiguratie/splits op te slaan, gebruik ik Werkgroepen voor windows (voor emacs) .

Ik vind deze opstelling leuk omdat ik mogelijk het ene pakket kan verwisselen voor het andere.

2
toegevoegd