window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() Rails ontwikkelen met TMUX, Vim, Fzf + Ripgrep - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2021-06-07
Software Ontwikkeling

Rails ontwikkelen met TMUX, Vim, Fzf + Ripgrep

The Codest

Marcin Doliwa

Software Engineer

Een paar jaar geleden was ik aan het grillen met een paar vrienden van me, allemaal Java-ontwikkelaars. Ik weet niet zeker hoe het ter sprake kwam, maar we begonnen te praten over onze codeeromgevingen. Ik vertelde ze dat ik al mijn ontwikkeling doe met Vim en terminals. Het leidde tot wat grappen en grappige vragen, zoals of ik nog steeds ponskaarten gebruik 🙂 ...

Sindsdien heb ik een aantal "echte" IDE's geprobeerd, maar ik kwam altijd terug bij Vim en terminals omdat het een zeer snelle methode is, alle tools heeft die ik nodig heb en ik gewoon graag in de tekstmodus werk.

Hier zijn wat details over mijn workflow. Het is het vermelden waard dat ik op Linux werk, maar je kunt het zonder problemen op Mac of Windows instellen.

Ik begin mijn werkdag met het openen van een terminal, cd ~/Projects/XYZ en voer het volgende uit tmuxdus laten we daar beginnen.

TMUX

Wat is TMUX? Zoals de auteurs zeggen:

TMUX is een terminal multiplexer. Hiermee kun je eenvoudig schakelen tussen verschillende programma's in een terminal, ze loskoppelen (ze blijven op de achtergrond draaien) en opnieuw koppelen aan een andere terminal.

Ik gebruik het om te schakelen tussen meerdere dingen in één terminal. Dus in één TMUX venster, heb ik de Rails server draait, in de tweede heb ik mijn Vim geopend en elke keer als ik iets in de terminal moet doen, zoals routes controleren, migraties uitvoeren of testen, open ik gewoon een nieuw venster met CTRL-A C en doe het ding.

Ik gebruik geen TMUX vensters, alleen vensters, en veel schakelen (ik heb CTRL + dubbel-A gebonden aan schakelen tussen de laatste vensters).

Een andere handige functie van TMUX is dat ik hiermee tekst van een terminal kan vinden en kopiëren zonder een muis te gebruiken.

Vim

Het is het belangrijkste onderdeel van mijn workflow. Ik zal niet in detail treden over wat VIM is en hoe het verschilt van andere editors. Er zijn veel goede artikelen en video's over te vinden. In een paar woorden, Vim is een modale editor. Het heeft twee modi, de invoegmodus en de normale modus. Invoegen is voor het typen van tekst in een document en normaal is voor het uitvoeren van verschillende bewerkingen op het document, zoals het verplaatsen van de cursor, het verwijderen van tekstfragmenten, het wijzigen enzovoort. Het klinkt vreemd, maar na een tijdje voelt het heel natuurlijk aan en is het heel moeilijk om terug te gaan naar je gewone editor.

Wat ik je wil laten zien is hoe ik het volgende combineer Vim met andere tools om alles te krijgen wat ik nodig heb als webontwikkelaar.

Plugins

Ik ben geen fan van zware plugin Vim configuraties, dus ik gebruik er maar een paar. Hier is de lijst:

NERDtree - Het is een bestandsverkenner. Hiermee kun je eenvoudig een aantal basisbewerkingen van het bestandssysteem uitvoeren, zoals bestanden verplaatsen, hernoemen, nieuwe bestanden maken en nog veel meer,

vim-endwise - Ik ben een Ruby-ontwikkelaar, dus ik gebruik het om het volgende toe te voegen einde na als, doen, defen verschillende andere trefwoorden,

vim-rails - het is een Rails krachtige invoegtoepassing. Het kent de structuur van een Rails app. Wil je de partial onder je cursor controleren? Druk gewoon op gf en het wordt geopend in je huidige venster. Er zijn nog veel meer opties, maar dit is degene die ik het meest gebruik,

vim-surround - Geweldige plugin die het werken met omgevingen heel gemakkelijk maakt. Hiermee kun je met een paar toetsaanslagen de omgeving van de tekst veranderen van () in [],

vim-herhalen - een aanvulling op Vim-surround. Het zorgt voor een herhalende omgevingsverandering met . (herhaal de laatste wijziging in Vim),

vimwiki- mijn manier om aantekeningen te maken,

fzf.vim+ fzf - de kern van mijn webontwikkeling werkstroom.

vaandel samenwerking

Fzf + Ripgrep

Dit zijn de gereedschappen die bepalen hoe ik codeer. Ik realiseerde me dat wanneer ik aan het coderen ben, ik meestal de meeste tijd besteed aan het uitzoeken hoe het spul werkt. Om dit te doen, moet ik snel verschillende delen van de codebase, definities van methoden, klassen en andere dingen controleren.

Fzf is een interactief Unix filter voor de commandoregel dat gebruikt kan worden met alle lijsten (bestanden, commandogeschiedenis, git commits, proceslijsten); met andere woorden, het is een fuzzy finder.

Ripgrep is een alternatief voor grep, maar het is supersnel.

Eenmaal gecombineerd, zorgen deze twee ervoor dat ik snel alles kan vinden wat ik wil in mijn project.
Ik heb twee instellingen in mijn Vim config-bestand om me hiermee te helpen:

nnoremap  :Bestanden
nnoremap  :Rg

Met de eerste kan ik snel de juiste bestanden vinden met fuzzy finding op bestandspaden (CTRL-P). De tweede voert de fuzzy finder uit op alle paden en de inhoud van bestanden in mijn project met behulp van Ripgrep (CTRL-F).

Dus, laten we zeggen dat ik de migratie wil vinden waar ik een kolom heb toegevoegd aan de gebruikers tafel. Ik druk op CTRL-F en schrijf iets als adcolusnam en het zal overeenkomen met toevoegen_kolom :gebruikers, :naam, :tekenreeks.

Als ik een methodedefinitie zoek, voer ik vaak CTRL-F uit def methode_naam.

Het is erg handig omdat het zoekt via bestandspad + inhoud. Het is vooral handig als ik weet dat de inhoud die ik zoek zich in een specifiek deel van het project bevindt. Ik wil bijvoorbeeld vinden waar we een gebruikersnaam hebben bijgewerkt en ik herinner me dat het ergens in de controllers was. Ik druk op CTRL-F conupdname om regel app/controllers/users_controller: @user.update(naam: nieuwe_naam).

Als je de structuur van je project en codebase kent, kun je gemakkelijk fuzzy find queries maken om snel bijna alles te vinden wat je wilt.

Video

Klik hier om een korte opname te zien van mij terwijl ik speel met de `discourse` codebase (440k LOC op mijn i5, 16GB desktop) en laat zien hoe ik meestal door het project beweeg.

Samenvatting

Ik hoop dat je geïnteresseerd bent geraakt in mijn setup en besloten hebt om Fzf eens proberen bij je coderingsinspanningen. Het heeft echt de manier veranderd waarop ik Vim als code redacteur.

Verwante artikelen

Fintech

5 voorbeelden van het beste gebruik van Ruby

Heb je je ooit afgevraagd wat we met Ruby kunnen doen? Nou, de sky is waarschijnlijk de limit, maar we praten graag over een aantal min of meer bekende gevallen...

The Codest
Pawel Muszynski Software Engineer
Software Ontwikkeling

Meer informatie over Ruby on Rails met Pub/Sub

Pub/Sub kan veel voordelen opleveren voor het project - het kan de code opschonen, services ontkoppelen en ze eenvoudig schaalbaar maken. Lees meer over Pub/Sub in het volgende artikel...

The Codest
Michal Pawlak Senior Ruby Ontwikkelaar
Software Ontwikkeling

Productontwikkeling: Python vs. Ruby

Python en Ruby zijn beide de meest gebruikte backend programmeertalen. Python is iets populairder en heeft een bredere toepassing. Ruby heeft echter ook veel voordelen en...

The Codest
Kamil Ferens Hoofd groei

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

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