window.pipedriveLeadboosterConfig = { bas: 'leadbooster-chat.pipedrive.com', företagId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = fönster if (w.LeadBooster) { console.warn('LeadBooster finns redan') } annars { w.LeadBooster = { q: [], on: funktion (n, h) { this.q.push({ t: "o", n: n, h: h }) }, trigger: funktion (n) { this.q.push({ t: 't', n: n }) }, } } })() Rails-utveckling med TMUX, Vim, Fzf + Ripgrep - The Codest
Codest
  • Om oss
  • Tjänster
    • Utveckling av programvara
      • Frontend-utveckling
      • Backend-utveckling
    • Staff Augmentation
      • Frontend-utvecklare
      • Backend-utvecklare
      • Dataingenjörer
      • Ingenjörer inom molntjänster
      • QA-ingenjörer
      • Övriga
    • Det rådgivande
      • Revision och rådgivning
  • Industrier
    • Fintech & bankverksamhet
    • E-commerce
    • Adtech
    • Hälsoteknik
    • Tillverkning
    • Logistik
    • Fordon
    • IOT
  • Värde för
    • VD OCH KONCERNCHEF
    • CTO
    • Leveranschef
  • Vårt team
  • Fallstudier
  • Vet hur
    • Blogg
    • Möten
    • Webbinarier
    • Resurser
Karriär Ta kontakt med oss
  • Om oss
  • Tjänster
    • Utveckling av programvara
      • Frontend-utveckling
      • Backend-utveckling
    • Staff Augmentation
      • Frontend-utvecklare
      • Backend-utvecklare
      • Dataingenjörer
      • Ingenjörer inom molntjänster
      • QA-ingenjörer
      • Övriga
    • Det rådgivande
      • Revision och rådgivning
  • Värde för
    • VD OCH KONCERNCHEF
    • CTO
    • Leveranschef
  • Vårt team
  • Fallstudier
  • Vet hur
    • Blogg
    • Möten
    • Webbinarier
    • Resurser
Karriär Ta kontakt med oss
Pil tillbaka GÅ TILLBAKA
2021-06-07
Utveckling av programvara

Rails-utveckling med TMUX, Vim, Fzf + Ripgrep

Codest

Marcin Doliwa

Software Engineer

För några år sedan grillade jag med några av mina vänner, alla Java-utvecklare. Vet inte riktigt hur det kom upp, men vi började prata om våra kodningsmiljöer. Jag berättade att jag gör all min utveckling med hjälp av Vim och terminaler. Det utlöste några skämt och roliga frågor, som om jag fortfarande använder hålkort 🙂 🙂

Sedan dess har jag provat några "riktiga" IDE:er men alltid kommit tillbaka till Vim och terminaler eftersom det är en mycket snabb metod, har alla de verktyg jag behöver och jag helt enkelt gillar att arbeta i textläget.

Här är några detaljer om mitt arbetsflöde. Det är värt att nämna att jag arbetar på Linux, men du kan ställa in det på Mac eller Windows utan problem.

Jag börjar min arbetsdag med att öppna en terminal, cd ~/Projects/XYZ och köra tmuxså låt oss börja där.

TMUX

Vad är TMUX? Som författarna säger:

TMUX är en terminalmultiplexerare. Med den kan du enkelt växla mellan flera program i en terminal, koppla bort dem (de fortsätter att köras i bakgrunden) och koppla in dem igen i en annan terminal.

Jag använder den för att växla mellan flera saker i en terminal. Så, i en TMUX fönster, har jag Räls server igång, i den andra har jag min Vim öppnas, och varje gång jag behöver göra något i terminalen, som att kontrollera rutter, köra migreringar eller tester, öppnar jag bara ett nytt fönster med CTRL-A C och gör grejen.

Jag använder inte TMUX rutor, bara fönster, och gör en hel del växlingar (jag har CTRL + dubbel-A bindning för att växla mellan de senaste fönstren).

En annan mycket praktisk funktion hos TMUX är att jag kan hitta och kopiera text från en terminal utan att använda musen.

Vim

Det är den viktigaste delen av mitt arbetsflöde. Jag kommer inte att gå in på detaljer om vad VIM och hur det skiljer sig från andra editorer. Det finns många bra artiklar och videor om det. Med några få ord, Vim är en modal editor. Den har två lägen, infoga-läge och normalt läge. Insert är till för att skriva in text i ett dokument och normal är till för att utföra olika operationer på dokumentet, som att flytta markören, ta bort textfragment, ändra i det och så vidare. Det låter konstigt men efter en tid känns det väldigt naturligt och det är väldigt svårt att gå tillbaka till sin vanliga editor.

Det jag vill visa dig är hur jag kombinerar Vim med andra verktyg för att få allt jag behöver som webbutvecklare.

Plugins

Jag är inte ett fan av tunga plugin Vim konfigurationer, så jag använder bara några få. Här är listan:

NERDtree - det är en filutforskare. Det gör att du enkelt kan göra några grundläggande filsystemoperationer, som att flytta filer, byta namn, skapa nya filer och många andra,

vim-endwise - Jag är en Ruby-utvecklare, så jag använder den för att lägga till slut efter om, göra, defoch flera andra nyckelord,

vim-rails - Det är en Räls power plugin. Den känner till strukturen hos en Rails-applikation. Vill du kontrollera partialen under din markör? Tryck bara på gf och det öppnar det i ditt nuvarande fönster. Det har många andra alternativ men det är det jag använder oftast,

vim-surround - bra plugin som gör det mycket enkelt att arbeta med omgivningar. Med det kan du ändra textens omgivning från () till [] med några få tangenttryckningar,

vim-upprepa - komplement till Vim-surround. Det möjliggör en upprepad förändring av omgivningen med . (upprepa den sista ändringen i Vim),

vimwiki- mitt sätt att göra anteckningar,

fzf.vim+ fzf - den centrala delen av min webbutveckling arbetsflöde.

samarbetsbanner

Fzf + Ripgrep

Det här är de verktyg som definierar hur jag kodar. Jag insåg att när jag utför kodningsuppgifter brukar jag ägna större delen av min tid åt att ta reda på hur saker och ting fungerar. För att göra detta måste jag snabbt kontrollera olika delar av kodbasen, metoddefinitioner, klasser och annat.

Fzf är ett interaktivt Unix-filter för kommandoraden som kan användas med alla listor (filer, kommandohistorik, git-kommiteringar, processlistor); med andra ord är det en fuzzy finder.

Ripgrep är ett alternativ till grep, men det är det blixtsnabba alternativet.

När dessa två kombineras kan jag snabbt hitta allt jag vill ha i min projekt.
Jag har två inställningar i min Vim config-fil för att hjälpa mig med detta:

nnoremap  :Filer
nnoremap  :Rg

Den första låter mig snabbt hitta rätt filer med hjälp av fuzzy finding på filsökvägar (CTRL-P). Den andra kör fuzzy finder på alla sökvägar och innehåll i filer i mitt projekt med hjälp av Ripgrep (CTRL-F).

Låt oss säga att jag vill hitta migration där jag lade till en kolumn i användare bord. Jag trycker på CTRL-F och skriver något i stil med adcolusnam och det kommer att matcha add_column :användare, :namn, :sträng.

När jag letar efter en metoddefinition kör jag ofta CTRL-F def metod_namn.

Det är mycket användbart eftersom det söker igenom filsökväg + innehåll. Det är särskilt praktiskt när jag vet att det innehåll jag letar efter finns i en viss del av projektet. Jag vill till exempel hitta var vi uppdaterade ett användarnamn, och jag minns att det var någonstans i kontrollerna. Jag trycker på CTRL-F konupnamn för att matcha linje app/controllers/users_controller: @user.update(namn: nytt_namn).

Om du känner till strukturen i ditt projekt och din kodbas kan du enkelt konstruera fuzzy find-frågor för att snabbt hitta nästan vad du vill.

Video

Klicka här för att se en kort inspelning av mig när jag leker med kodbasen `discourse` (440k LOC på min i5, 16GB desktop) och visar hur jag brukar flytta runt projektet.

Sammanfattning

Jag hoppas att du blev intresserad av min installation och bestämde dig för att ge Fzf ett försök i dina kodningssträvanden. Det förändrade verkligen sättet jag använder Vim som en kod redaktör.

Relaterade artiklar

Fintech

5 exempel på hur Ruby används på bästa sätt

Har du någonsin undrat vad vi kan göra med Ruby? Tja, himlen är förmodligen gränsen, men vi är glada att prata om några mer eller mindre kända fall ...

Codest
Pawel Muszynski Software Engineer
Utveckling av programvara

Läs mer om Ruby on Rails med Pub/Sub

Pub/Sub kan ge många fördelar för projektet - det kan göra koden ren, frikoppla tjänster och göra dem lätt skalbara. Läs mer om Pub/Sub i följande artikel...

Codest
Michal Pawlak Senior Ruby-utvecklare
Utveckling av programvara

Produktutveckling: Python vs. Ruby

Python och Ruby är båda de mest använda programmeringsspråken för backend. Python är lite mer populärt och har en bredare tillämpning. Men Ruby ger också många fördelar och ...

Codest
Kamil Ferens Chef för tillväxtavdelningen

Prenumerera på vår kunskapsbas och håll dig uppdaterad om expertisen från IT-sektorn.

    Om oss

    The Codest - Internationellt mjukvaruutvecklingsföretag med teknikhubbar i Polen.

    Förenade kungariket - Huvudkontor

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokala tekniknav

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      Codest

    • Hem
    • Om oss
    • Tjänster
    • Fallstudier
    • Vet hur
    • Karriär
    • Ordbok

      Tjänster

    • Det rådgivande
    • Utveckling av programvara
    • Backend-utveckling
    • Frontend-utveckling
    • Staff Augmentation
    • Backend-utvecklare
    • Ingenjörer inom molntjänster
    • Dataingenjörer
    • Övriga
    • QA-ingenjörer

      Resurser

    • Fakta och myter om att samarbeta med en extern partner för mjukvaruutveckling
    • Från USA till Europa: Varför väljer amerikanska startup-företag att flytta till Europa?
    • Jämförelse av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinerna), Eurasien (Turkiet)
    • Vilka är de största utmaningarna för CTO:er och CIO:er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Användarvillkor för webbplatsen

    Copyright © 2025 av The Codest. Alla rättigheter reserverade.

    sv_SESwedish
    en_USEnglish de_DEGerman da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek sv_SESwedish