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...
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.
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.
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.
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
, def
en 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.
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.
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.
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.