{"id":3534,"date":"2019-04-24T08:53:32","date_gmt":"2019-04-24T08:53:32","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/"},"modified":"2026-04-24T11:28:19","modified_gmt":"2026-04-24T11:28:19","slug":"rails-udvikling-med-tmux-vim-fzf-ripgrep","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/","title":{"rendered":"Rails-udvikling med TMUX, Vim, Fzf + Ripgrep"},"content":{"rendered":"<p>Siden da har jeg pr\u00f8vet nogle \"rigtige\" IDE'er, men er altid vendt tilbage til <strong>Vim<\/strong> og terminaler, da det er en meget hurtig metode, har alle de v\u00e6rkt\u00f8jer, jeg har brug for, og jeg kan simpelthen godt lide at arbejde i teksttilstand.<\/p>\n\n\n\n<p>Her er nogle detaljer om min arbejdsgang. Det er v\u00e6rd at n\u00e6vne, at jeg arbejder p\u00e5 Linux, men du kan uden problemer s\u00e6tte det op p\u00e5 Mac eller Windows.<\/p>\n\n\n\n<p>Jeg starter min arbejdsdag med at \u00e5bne en terminal, cd ~\/Projects\/XYZ og k\u00f8re <strong>tmux<\/strong>s\u00e5 lad os starte der.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TMUX<\/h2>\n\n\n\n<p>Hvad er <strong>TMUX<\/strong>? Som forfatterne siger:<\/p>\n\n\n\n<p><em>TMUX er en terminal-multiplexer. Den g\u00f8r det nemt at skifte mellem flere programmer i en terminal, afkoble dem (de k\u00f8rer videre i baggrunden) og koble dem til igen i en anden terminal.<\/em><\/p>\n\n\n\n<p>Jeg bruger den til at skifte mellem flere ting i \u00e9n terminal. S\u00e5 i en <strong>TMUX<\/strong> vindue, har jeg <strong><a href=\"https:\/\/thecodest.co\/da\/blog\/ways-to-increase-your-rails-performance\/\">Skinner<\/a> <\/strong>server k\u00f8rer, i den anden har jeg min <strong>Vim<\/strong> \u00e5bnet, og hver gang jeg skal g\u00f8re noget i terminalen, som at tjekke ruter, k\u00f8re migreringer eller tests, \u00e5bner jeg bare et nyt vindue med <code>CTRL-A C<\/code> og g\u00f8r det.<\/p>\n\n\n\n<p>Jeg bruger ikke <strong>TMUX<\/strong> ruder, kun vinduer, og skifter meget (jeg har CTRL + dobbelt-A bundet til at skifte mellem de sidste vinduer).<\/p>\n\n\n\n<p>En anden meget praktisk funktion ved <strong>TMUX<\/strong> er, at den giver mig mulighed for at finde og kopiere tekst fra en terminal uden at bruge en mus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vim<\/h2>\n\n\n\n<p>Det er den vigtigste del af min arbejdsgang. Jeg vil ikke komme ind p\u00e5 detaljer om, hvad <strong>VIM<\/strong> er, og hvordan det adskiller sig fra andre editorer. Der er mange gode artikler og videoer om det. Med nogle f\u00e5 ord, <strong>Vim<\/strong> er en modal editor. Den har to tilstande, inds\u00e6t-tilstand og normal-tilstand. Insert er til at skrive tekst ind i et dokument, og normal er til at udf\u00f8re forskellige operationer p\u00e5 dokumentet, som at flytte mark\u00f8ren, slette tekstfragmenter, \u00e6ndre den osv. Det lyder m\u00e6rkeligt, men efter noget tid f\u00f8les det meget naturligt, og det er meget sv\u00e6rt at vende tilbage til din almindelige editor.<\/p>\n\n\n\n<p>Det, jeg gerne vil vise dig, er, hvordan jeg kombinerer <strong>Vim<\/strong> med andre v\u00e6rkt\u00f8jer for at f\u00e5 alt, hvad jeg har brug for som <a href=\"https:\/\/thecodest.co\/da\/blog\/find-your-ideal-stack-for-web-development\/\">web<\/a> <a href=\"https:\/\/thecodest.co\/da\/blog\/hire-vue-js-developers\/\">Udvikler<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Plugins<\/h2>\n\n\n\n<p>Jeg er ikke fan af tunge plugins <strong>Vim<\/strong> konfigurationer, s\u00e5 jeg bruger kun nogle f\u00e5. Her er listen:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/preservim\/nerdtree\" rel=\"nofollow\">NERDtree<\/a> - Det er en filudforsker. Det giver dig mulighed for nemt at udf\u00f8re nogle grundl\u00e6ggende filsystemoperationer, som at flytte filer, omd\u00f8be, oprette nye filer og mange andre,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-endwise\" rel=\"nofollow\">vim-endwise<\/a> - Jeg er en <a href=\"https:\/\/thecodest.co\/da\/blog\/hire-ror-developer\/\">Ruby<\/a> udvikler, s\u00e5 jeg bruger den til at tilf\u00f8je <code>slut<\/code> efter <code>hvis<\/code>, <code>g\u00f8re<\/code>, <code>def<\/code>og flere andre n\u00f8gleord,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-rails\" rel=\"nofollow\">vim-skinner<\/a> - Det er en <strong>Skinner<\/strong> power-plugin. Det kender strukturen i en <strong>Rails-app<\/strong>. Vil du tjekke den delvise tekst under din mark\u00f8r? Bare tryk p\u00e5 <code>gf<\/code> og den \u00e5bner den i dit nuv\u00e6rende vindue. Den har mange andre muligheder, men det er den, jeg oftest bruger,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-surround\" rel=\"nofollow\">vim-surround<\/a> - Fantastisk plugin, som g\u00f8r det meget nemt at arbejde med omgivelser. Med det kan du \u00e6ndre tekstens omgivelser fra () til [] med nogle f\u00e5 tastetryk,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-repeat\" rel=\"nofollow\">vim-gentagelse <\/a>- komplement\u00e6r til Vim-surround. Det giver mulighed for en gentagen \u00e6ndring af omgivelserne med <code>.<\/code> (gentag den sidste \u00e6ndring i Vim),<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/vimwiki\/vimwiki\" rel=\"nofollow\">vimwiki<\/a>- min m\u00e5de at tage noter p\u00e5,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/junegunn\/fzf.vim\" rel=\"nofollow\">fzf.vim<\/a>+ <a href=\"https:\/\/github.com\/junegunn\/fzf\" rel=\"nofollow\">fzf<\/a> - den centrale del af min <a href=\"https:\/\/thecodest.co\/da\/blog\/find-your-node-js-expert-for-hire-today\/\">webudvikling<\/a> arbejdsgang.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/thecodest.co\/contact\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/interested_in_cooperation_.png\" alt=\"Samarbejdsbanner\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Fzf + Ripgrep<\/h2>\n\n\n\n<p>Det er de v\u00e6rkt\u00f8jer, der definerer den m\u00e5de, jeg koder p\u00e5. Jeg har indset, at n\u00e5r jeg koder, bruger jeg normalt det meste af min tid p\u00e5 at finde ud af, hvordan tingene fungerer. For at g\u00f8re det er jeg n\u00f8dt til hurtigt at tjekke forskellige dele af kodebasen, metodedefinitioner, klasser og andre ting.<\/p>\n\n\n\n<p><strong>Fzf<\/strong> 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.<\/p>\n\n\n\n<p><strong>Ripgrep<\/strong> er et alternativ til grep, men det er den lynhurtige.<\/p>\n\n\n\n<p>N\u00e5r de to kombineres, kan jeg hurtigt finde alt, hvad jeg vil have i min <a href=\"https:\/\/thecodest.co\/da\/dictionary\/why-do-projects-fail\/\">projekt<\/a>.<br>Jeg har to indstillinger i min <strong>Vim<\/strong> config-fil til at hj\u00e6lpe mig med dette:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"vim\" class=\"language-vim\">nnoremap  :Filer\nnnoremap  :Rg<\/code><\/pre>\n\n\n\n<p>Den f\u00f8rste lader mig hurtigt finde de rigtige filer ved hj\u00e6lp af fuzzy finding p\u00e5 filstier (CTRL-P). Den anden k\u00f8rer fuzzy finder p\u00e5 alle stier og indholdet af filer i mit projekt ved hj\u00e6lp af <strong>Ripgrep<\/strong> (CTRL-F).<\/p>\n\n\n\n<p>S\u00e5 lad os sige, at jeg vil finde migration, hvor jeg har tilf\u00f8jet en kolonne til <code>brugere<\/code> bord. Jeg trykker p\u00e5 CTRL-F og skriver noget i retning af <code>adcolusnam<\/code> og det vil matche <code>add_column :users, :name, :string<\/code>.<\/p>\n\n\n\n<p>N\u00e5r jeg leder efter en metodedefinition, k\u00f8rer jeg ofte CTRL-F <code>def metode_navn<\/code>.<\/p>\n\n\n\n<p>Det er meget nyttigt, da det s\u00f8ger gennem filsti + indhold. Det er is\u00e6r praktisk, n\u00e5r 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\u00e5 <code>CTRL-F<\/code> <code>conupdname<\/code> for at matche linjen <code>app\/controllers\/users_controller: @user.update(navn: nyt_navn)<\/code>.<\/p>\n\n\n\n<p>Hvis du kender dit projekt og kodebasens struktur, kan du nemt konstruere fuzzy find-foresp\u00f8rgsler, s\u00e5 du hurtigt kan finde n\u00e6sten alt, hvad du vil.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Video<\/h2>\n\n\n\n<p><a href=\"https:\/\/youtu.be\/yJWl4CfvMC8\" rel=\"nofollow\">Klik her <\/a> for at se en kort optagelse af mig, hvor jeg leger med `discourse`-kodebasen (440k LOC p\u00e5 min i5, 16GB desktop) og viser, hvordan jeg normalt bev\u00e6ger mig rundt i projektet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammenfatning<\/h2>\n\n\n\n<p>Jeg h\u00e5ber, du blev interesseret i mit setup og besluttede dig for at give <strong>Fzf<\/strong> et fors\u00f8g i dine kodningsbestr\u00e6belser. Det har virkelig \u00e6ndret den m\u00e5de, jeg bruger <strong>Vim<\/strong> som en <a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-code-refactoring\/\">Kode<\/a> redakt\u00f8r.<\/p>","protected":false},"excerpt":{"rendered":"<p>For et par \u00e5r siden grillede jeg med nogle af mine venner, som alle var Java-udviklere. Jeg er ikke sikker p\u00e5, hvordan det kom frem, men vi begyndte at tale om vores kodemilj\u00f8er. Jeg fortalte dem, at jeg laver al min udvikling med Vim og terminaler. Det udl\u00f8ste nogle vittigheder og sjove sp\u00f8rgsm\u00e5l, f.eks. om jeg stadig bruger hulkort \ud83d\ude42 .<\/p>","protected":false},"author":2,"featured_media":3535,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3534","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Rails Development with TMUX, Vim, Fzf + Ripgrep - The Codest<\/title>\n<meta name=\"description\" content=\"A few years ago, I was grilling with some of my friends, all Java developers. Not sure how it came up, but we started talking about our coding environments. I told them I\u2019m doing all my development using Vim and terminals. It triggered some jokes and funny questions, like if I\u2019m still using punch cards :)\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/da\/blog\/rails-udvikling-med-tmux-vim-fzf-ripgrep\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rails Development with TMUX, Vim, Fzf + Ripgrep\" \/>\n<meta property=\"og:description\" content=\"A few years ago, I was grilling with some of my friends, all Java developers. Not sure how it came up, but we started talking about our coding environments. I told them I\u2019m doing all my development using Vim and terminals. It triggered some jokes and funny questions, like if I\u2019m still using punch cards :)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/da\/blog\/rails-udvikling-med-tmux-vim-fzf-ripgrep\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-24T08:53:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T11:28:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Rails Development with TMUX, Vim, Fzf + Ripgrep\",\"datePublished\":\"2019-04-24T08:53:32+00:00\",\"dateModified\":\"2026-04-24T11:28:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/\"},\"wordCount\":894,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/\",\"name\":\"Rails Development with TMUX, Vim, Fzf + Ripgrep - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png\",\"datePublished\":\"2019-04-24T08:53:32+00:00\",\"dateModified\":\"2026-04-24T11:28:19+00:00\",\"description\":\"A few years ago, I was grilling with some of my friends, all Java developers. Not sure how it came up, but we started talking about our coding environments. I told them I\u2019m doing all my development using Vim and terminals. It triggered some jokes and funny questions, like if I\u2019m still using punch cards :)\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rails Development with TMUX, Vim, Fzf + Ripgrep\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rails-udvikling med TMUX, Vim, Fzf + Ripgrep - The Codest","description":"For et par \u00e5r siden grillede jeg med nogle af mine venner, som alle var Java-udviklere. Jeg er ikke sikker p\u00e5, hvordan det kom frem, men vi begyndte at tale om vores kodemilj\u00f8er. Jeg fortalte dem, at jeg laver al min udvikling med Vim og terminaler. Det udl\u00f8ste nogle vittigheder og sjove sp\u00f8rgsm\u00e5l, f.eks. om jeg stadig bruger hulkort :)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/da\/blog\/rails-udvikling-med-tmux-vim-fzf-ripgrep\/","og_locale":"da_DK","og_type":"article","og_title":"Rails Development with TMUX, Vim, Fzf + Ripgrep","og_description":"A few years ago, I was grilling with some of my friends, all Java developers. Not sure how it came up, but we started talking about our coding environments. I told them I\u2019m doing all my development using Vim and terminals. It triggered some jokes and funny questions, like if I\u2019m still using punch cards :)","og_url":"https:\/\/thecodest.co\/da\/blog\/rails-udvikling-med-tmux-vim-fzf-ripgrep\/","og_site_name":"The Codest","article_published_time":"2019-04-24T08:53:32+00:00","article_modified_time":"2026-04-24T11:28:19+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"5 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Rails Development with TMUX, Vim, Fzf + Ripgrep","datePublished":"2019-04-24T08:53:32+00:00","dateModified":"2026-04-24T11:28:19+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/"},"wordCount":894,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png","articleSection":["Software Development"],"inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/","url":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/","name":"Rails-udvikling med TMUX, Vim, Fzf + Ripgrep - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png","datePublished":"2019-04-24T08:53:32+00:00","dateModified":"2026-04-24T11:28:19+00:00","description":"For et par \u00e5r siden grillede jeg med nogle af mine venner, som alle var Java-udviklere. Jeg er ikke sikker p\u00e5, hvordan det kom frem, men vi begyndte at tale om vores kodemilj\u00f8er. Jeg fortalte dem, at jeg laver al min udvikling med Vim og terminaler. Det udl\u00f8ste nogle vittigheder og sjove sp\u00f8rgsm\u00e5l, f.eks. om jeg stadig bruger hulkort :)","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/rails_development_with_tmux-_vim-_fzf_-_ripgrep_2.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Rails Development with TMUX, Vim, Fzf + Ripgrep"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3534"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3534\/revisions"}],"predecessor-version":[{"id":7967,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3534\/revisions\/7967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3535"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}