window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = vindue if (w.LeadBooster) { console.warn('LeadBooster findes allerede') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Rails-udvikling med TMUX, Vim, Fzf + Ripgrep - The Codest
Codest
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Industrier
    • Fintech og bankvirksomhed
    • E-commerce
    • Adtech
    • Sundhedsteknologi
    • Produktion
    • Logistik
    • Biler
    • IOT
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
Pil tilbage GÅ TILBAGE
2021-06-07
Udvikling af software

Rails-udvikling med TMUX, Vim, Fzf + Ripgrep

Codest

Marcin Doliwa

Software Engineer

For et par år siden grillede jeg med nogle af mine venner, som alle var Java-udviklere. Jeg er ikke sikker på, hvordan det kom frem, men vi begyndte at tale om vores kodemiljøer. Jeg fortalte dem, at jeg laver al min udvikling med Vim og terminaler. Det udløste nogle vittigheder og sjove spørgsmål, f.eks. om jeg stadig bruger hulkort 🙂 .

Siden da har jeg prøvet nogle "rigtige" IDE'er, men er altid vendt tilbage til Vim og terminaler, da det er en meget hurtig metode, har alle de værktøjer, jeg har brug for, og jeg kan simpelthen godt lide at arbejde i teksttilstand.

Her er nogle detaljer om min arbejdsgang. Det er værd at nævne, at jeg arbejder på Linux, men du kan uden problemer sætte det op på Mac eller Windows.

Jeg starter min arbejdsdag med at åbne en terminal, cd ~/Projects/XYZ og køre tmuxså lad os starte der.

TMUX

Hvad er TMUX? Som forfatterne siger:

TMUX er en terminal-multiplexer. Den gør det nemt at skifte mellem flere programmer i en terminal, afkoble dem (de kører videre i baggrunden) og koble dem til igen i en anden terminal.

Jeg bruger den til at skifte mellem flere ting i én terminal. Så i en TMUX vindue, har jeg Skinner server kører, i den anden har jeg min Vim åbnet, og hver gang jeg skal gøre noget i terminalen, som at tjekke ruter, køre migreringer eller tests, åbner jeg bare et nyt vindue med CTRL-A C og gør det.

Jeg bruger ikke TMUX ruder, kun vinduer, og skifter meget (jeg har CTRL + dobbelt-A bundet til at skifte mellem de sidste vinduer).

En anden meget praktisk funktion ved TMUX er, at den giver mig mulighed for at finde og kopiere tekst fra en terminal uden at bruge en mus.

Vim

Det er den vigtigste del af min arbejdsgang. Jeg vil ikke komme ind på detaljer om, hvad VIM er, og hvordan det adskiller sig fra andre editorer. Der er mange gode artikler og videoer om det. Med nogle få ord, Vim er en modal editor. Den har to tilstande, indsæt-tilstand og normal-tilstand. Insert er til at skrive tekst ind i et dokument, og normal er til at udføre forskellige operationer på dokumentet, som at flytte markøren, slette tekstfragmenter, ændre den osv. Det lyder mærkeligt, men efter noget tid føles det meget naturligt, og det er meget svært at vende tilbage til din almindelige editor.

Det, jeg gerne vil vise dig, er, hvordan jeg kombinerer Vim med andre værktøjer for at få alt det, jeg har brug for som webudvikler.

Plugins

Jeg er ikke fan af tunge plugins Vim konfigurationer, så jeg bruger kun nogle få. Her er listen:

NERDtree - Det er en filudforsker. Det giver dig mulighed for nemt at udføre nogle grundlæggende filsystemoperationer, som at flytte filer, omdøbe, oprette nye filer og mange andre,

vim-endwise - Jeg er Ruby-udvikler, så jeg bruger det til at tilføje slut efter hvis, gøre, defog flere andre nøgleord,

vim-skinner - Det er en Skinner power-plugin. Det kender strukturen i en Rails-app. Vil du tjekke den delvise tekst under din markør? Bare tryk på gf og den åbner den i dit nuværende vindue. Den har mange andre muligheder, men det er den, jeg oftest bruger,

vim-surround - Fantastisk plugin, som gør det meget nemt at arbejde med omgivelser. Med det kan du ændre tekstens omgivelser fra () til [] med nogle få tastetryk,

vim-gentagelse - komplementær til Vim-surround. Det giver mulighed for en gentagen ændring af omgivelserne med . (gentag den sidste ændring i Vim),

vimwiki- min måde at tage noter på,

fzf.vim+ fzf - den centrale del af min webudvikling arbejdsgang.

Samarbejdsbanner

Fzf + Ripgrep

Det er de værktøjer, der definerer den måde, jeg koder på. Jeg har indset, at når jeg koder, bruger jeg normalt det meste af min tid på at finde ud af, hvordan tingene fungerer. For at gøre det er jeg nødt til hurtigt at tjekke forskellige dele af kodebasen, metodedefinitioner, klasser og andre ting.

Fzf er et interaktivt Unix-filter til kommandolinjen, som kan bruges med alle lister (filer, kommandohistorik, git-kommitteringer, proceslister); med andre ord er det en fuzzy finder.

Ripgrep er et alternativ til grep, men det er den lynhurtige.

Når de to kombineres, kan jeg hurtigt finde alt, hvad jeg vil have i min projekt.
Jeg har to indstillinger i min Vim config-fil til at hjælpe mig med dette:

nnoremap  :Filer
nnoremap  :Rg

Den første lader mig hurtigt finde de rigtige filer ved hjælp af fuzzy finding på filstier (CTRL-P). Den anden kører fuzzy finder på alle stier og indholdet af filer i mit projekt ved hjælp af Ripgrep (CTRL-F).

Så lad os sige, at jeg vil finde migration, hvor jeg har tilføjet en kolonne til brugere bord. Jeg trykker på CTRL-F og skriver noget i retning af adcolusnam og det vil matche add_column :users, :name, :string.

Når jeg leder efter en metodedefinition, kører jeg ofte CTRL-F def metode_navn.

Det er meget nyttigt, da det søger gennem filsti + indhold. Det er især praktisk, når jeg ved, at det indhold, jeg leder efter, befinder sig i en bestemt del af projektet. Jeg vil f.eks. gerne finde ud af, hvor vi opdaterede et brugernavn, og jeg kan huske, at det var et sted i controllerne. Jeg trykker på CTRL-F conupdname for at matche linjen app/controllers/users_controller: @user.update(navn: nyt_navn).

Hvis du kender dit projekt og kodebasens struktur, kan du nemt konstruere fuzzy find-forespørgsler, så du hurtigt kan finde næsten alt, hvad du vil.

Video

Klik her for at se en kort optagelse af mig, hvor jeg leger med `discourse`-kodebasen (440k LOC på min i5, 16GB desktop) og viser, hvordan jeg normalt bevæger mig rundt i projektet.

Sammenfatning

Jeg håber, du blev interesseret i mit setup og besluttede dig for at give Fzf et forsøg i dine kodningsbestræbelser. Det har virkelig ændret den måde, jeg bruger Vim som en Kode redaktør.

Relaterede artikler

Fintech

5 eksempler på den bedste brug af Ruby

Har du nogensinde undret dig over, hvad vi kan gøre med Ruby? Det er nok kun fantasien, der sætter grænser, men vi fortæller gerne om nogle mere eller mindre kendte tilfælde...

Codest
Pawel Muszynski Software Engineer
Udvikling af software

Få mere at vide om Ruby on Rails med Pub/Sub

Pub/Sub kan give projektet mange fordele - det kan gøre koden ren, afkoble tjenester og gøre dem let skalerbare. Få mere at vide om Pub/Sub i følgende artikel...

Codest
Michal Pawlak Senior Ruby-udvikler
Udvikling af software

Produktudvikling: Python vs. Ruby

Python og Ruby er begge de mest udbredte backend-programmeringssprog. Python er lidt mere populært og har en bredere anvendelse. Ruby giver dog også mange fordele og...

Codest
Kamil Ferens Chef for vækst

Tilmeld dig vores vidensbase, og hold dig opdateret om ekspertisen fra it-sektoren.

    Om os

    The Codest - International softwareudviklingsvirksomhed med tech-hubs i Polen.

    Storbritannien - Hovedkvarter

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

    Polen - Lokale teknologiske knudepunkter

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

      Codest

    • Hjem
    • Om os
    • Serviceydelser
    • Casestudier
    • Ved hvordan
    • Karriere
    • Ordbog

      Serviceydelser

    • Det rådgivende
    • Udvikling af software
    • Backend-udvikling
    • Frontend-udvikling
    • Staff Augmentation
    • Backend-udviklere
    • Cloud-ingeniører
    • Dataingeniører
    • Andet
    • QA-ingeniører

      Ressourcer

    • Fakta og myter om at samarbejde med en ekstern softwareudviklingspartner
    • Fra USA til Europa: Hvorfor beslutter amerikanske startups sig for at flytte til Europa?
    • Sammenligning af Tech Offshore-udviklingsknudepunkter: Tech Offshore Europa (Polen), ASEAN (Filippinerne), Eurasien (Tyrkiet)
    • Hvad er de største udfordringer for CTO'er og CIO'er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Vilkår for brug af hjemmesiden

    Copyright © 2025 af The Codest. Alle rettigheder forbeholdes.

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