Publicerad: juli 25, 2025

Min personliga projekthanterare i Neovim

Jag kallar den för PhxM, för Phoenix Manager. Det är en serie personliga Neovim plugins, samt i huvudsak ett externt plugin telescope.nvim och treesitter.nvim som har integrerats, samt flash.nvim.

Jag byggde detta system för att lättare hålla koll på sådant som tillhör ett projekt. Systemet

Detta fungerar bra för mig, men systemet har många buggar och saker jag vill förbättra, men det får bli ett senare projekt. Avsikten med PhxM var att göra Linux effektivt för mig att använda och det fungerar nu tillräckligt bra så att jag kan börja utveckla andra saker.

Centralt för allt detta är att backspace skiftar till föregående projekt, och , skiftar till föregående fil. Därför väldigt lätt skifta fram och tillbaka.

Bild 1

Bild 1

Bild 1: Neovim med min projekthanterare. Till vänster en lista med 3 register, a-z, 0-9, A-Z som motsvarar dynamiska kortkommandon för diverse funktioner. Exempelvis register a-z är de senaste projektfilerna som öppnats, oavsett projekt, och Tab+[a-z] hoppar till given fil. Till höger lista med sektioner i filen (ex funktionsnamn). Ytterligare kommandon finns för att hoppa i filen mellan sektioner. I mitten är filen som redigeras

Bild 2a

Bild 2a

Bild 2b

Bild 2b

Bild 2a och 2b: I mitten visas menyn över funktioner som innefattas av projekthanteraren. Detta är vad som utgör min personliga anpassning. Exempelvis Space+f i normal läge öppnar filsökning som söker bland projektfiler (nästa bild nedanför). Vill jag söka bland projektfiler via dess innehåll, då är det Space+g,

Bild 3

Bild 3

Bild 3: Det är integrationen av telescope.nvim som är en central del denna högst effektiva miljö som jag uppskattar oerhört mycket. Jag har lagt in färger som differentierar resulat för att snabbt kunna identifiera rader visuellt. Telescope är en fuzzy finder som matchar sökorden effektivt.

Bild 4

Bild 4

Bild 4: Telescope can integreras med vad som helst, här till exempel filtrerar den mot rubriker i filen, varav Neovim hoppar till den rubriken jag väljer via Telescope. Treesitter, ett annat plugin, ansvarar för att filtrera dokumentet efter rubriker och skickar dem till Telescope som ger mig möjlighet att interaktivt filtrera listan och välja en post. Telescope, Treesitter och Neovim som de körs i, är nog några av de största fördelarna som tillkommit Linux på senare tid för de som gillar Vim-stil och terminal.

Bild 5

Bild 5

Bild 5: Här öppnas Tmux från Neovim, via Alt+i. Tmux öppnas alltså i en terminal inne i Neovim, och via Tmux har jag oändliga möjligheter. Här är en 4 split, och med ytterligare kommandon kan jag skifta fokus och justera layouten och skifta mellan uppsättningar av terminaler. Jag kan t.o.m. öppna Neovim igen inne i Tmux, så som synes i höger nederkant. Det är alltså en kedja med Neovim som öppnar en terminal som öppnar Tmux som i sin tur öppnar Nvim. Detta visar på hur oerhört modulärt Linux är. Upplevelsen är att i stort sett allt kan bädddas in i allt och allt kan kopplas samman med allt. På detta vis har jag gjort min projekthanterare till min utgångspunkt för det mesta arbete, och på samma sätt som jag lätt kan hoppa mellan filer i ett projekt, via Telescope, kan jag lika lätt hoppa mellan projekt. (Det är cmatrix i höger överkant på bild 5.)

Bild 6

Bild 6

Bild 6: Jag har programmerat min projekthanterare till att lätt kunna ställa in kommandon för att öppna vad jag vill som är terminal program, så som TODO-hanterare, min aktivitetshanterare, eller som i bilden ovan lf som är en filhanterare. Dock har jag mestadels enbart använt mig av terminalerna, men ska undersöka den effektivaste metoden för filhantering. lf verkar bra för det, men som så mycket i Linux handlar det om att ta sig tid att lära sig en ny diciplin, och först utvärdera om det är värt det, men när det väl är gjort har man stort gangn av det.

Bild 7

Bild 7

Bild 7: Men som om det inte vore nog, jag kan också öppna terminalläge direkt i Neovim som ett popup-fönster via Alt+k och öppna flera sådana via Alt+J, och skifta mellan dem med Alt+h/l. Terminalerna får olika bakgrundsfärger slumpmässigt för att jag lättare ska kunna identifiera dem när jag skiftar mellan dem. När en terminal öppnas landar jag direkt i projekt-katalogen.

Bild 8

Bild 8

Bild 8: Ett annat kommando ger en meny med dynamiskt tilldelade kortkommandon för alla filer som är öppna i ett projekt. Som du ser bygger mitt system mycket på att tilldela kortkommandon dynamiskt. Till och med rubriker i ett dokument (så som funktions-namn) får egna dynamiska kommandon. Det är förvånansvärt hur snabbt hjärnan lär sig nya kommandon i realtid, och det faktum att hjärnan hela tiden exponeras för nya kortkommandon beroende på kontext, är något som verkar göra hjärnan mer skarp. Att visuellt sortera listor med information verkar också vara något som tränar hjärnan i att identifiera mönster.

Därtill kan jag tilldela bestämda tangenter för olika projekt som jag ofta besöker.

Bild 9

Bild 9: Denna meny erbjuder en översikt över hur jag hoppat mellan olika filer. Närminnet räcker inte alltid, och jag behöver besöka den tredje eller fjärde filen bak i tiden. Mycket av mitt system handlar om att kompensera för gränserna för korttidsminnet som Linux ständigt utmanar.

Bild 10

Bild 10: Ett annat kommando låter mig ange ett nummer, varav jag får en lista med alla filer som är under den katalogen som är så många steg under, relativt till katalogen som nuvarande fil är i. Alltså om jag är i filen /a/b/c/d/fil.txt och anger 2, då visas alla filer under /a/b/c, varav jag kan hoppa till någon av de filerna. Vid närmare eftertanke borde jag istället integrera det med Telescope.

Bild 11

Bild 11: Denna funktion sparar automatiskt allt som jag klipper ut ur olika dokument, ifall jag behöver återgå till det.

Detta är en funktion som jag inte riktigt använt. Jag glömde av att jag faktiskt färdigställde funktionen och att den alltid funnits där. I detta fall har funktionen faktiskt funnits väl synlig i min meny, men menyn men jag behöver öva upp en diciplin att regeglbundet titta igenom diverse listor och rensa ut sådant som är gammalt och använda det som är användbart. I Linux manas man hela tiden till struktur och handlingskraft.

Detta var en översikt. Mitt system bygger på att använda färger, listor, och dynamiska kortkommandon. Systemet är byggt för att enkelt kunna skifta projekt.

Skriv en kommentar