{"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":"desenvolvimento-rails-com-tmux-vim-fzf-ripgrep","status":"publish","type":"post","link":"https:\/\/thecodest.co\/pt\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/","title":{"rendered":"Desenvolvimento Rails com TMUX, Vim, Fzf + Ripgrep"},"content":{"rendered":"<p>Desde ent\u00e3o, experimentei alguns IDEs \"reais\", mas sempre voltei ao <strong>Vim<\/strong> e terminais porque \u00e9 um m\u00e9todo muito r\u00e1pido, tem todas as ferramentas de que preciso e simplesmente gosto de trabalhar no modo de texto.<\/p>\n\n\n\n<p>Aqui est\u00e3o alguns pormenores sobre o meu fluxo de trabalho. Vale a pena mencionar que trabalho em Linux, mas pode configur\u00e1-lo em Mac ou Windows sem problemas.<\/p>\n\n\n\n<p>Come\u00e7o o meu dia de trabalho com a abertura de um terminal, cd ~\/Projects\/XYZ, e executo <strong>tmux<\/strong>Por isso, vamos come\u00e7ar por a\u00ed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TMUX<\/h2>\n\n\n\n<p>O que \u00e9 <strong>TMUX<\/strong>? Como dizem os autores:<\/p>\n\n\n\n<p><em>TMUX \u00e9 um multiplexador de terminais. Permite-lhe alternar facilmente entre v\u00e1rios programas num terminal, separ\u00e1-los (continuam a correr em segundo plano) e voltar a lig\u00e1-los a um terminal diferente.<\/em><\/p>\n\n\n\n<p>Utilizo-o para alternar entre v\u00e1rias coisas num s\u00f3 terminal. Assim, num <strong>TMUX<\/strong> janela, tenho o <strong><a href=\"https:\/\/thecodest.co\/pt\/blog\/ways-to-increase-your-rails-performance\/\">Carris<\/a> <\/strong>servidor em execu\u00e7\u00e3o, no segundo tenho o meu <strong>Vim<\/strong> aberto, e sempre que preciso de fazer algo no terminal, como verificar rotas, executar migra\u00e7\u00f5es ou testes, basta abrir uma nova janela com <code>CTRL-A C<\/code> e fazer a coisa.<\/p>\n\n\n\n<p>Eu n\u00e3o uso <strong>TMUX<\/strong> pain\u00e9is, apenas janelas, e fazer muitas altern\u00e2ncias (tenho a liga\u00e7\u00e3o CTRL + duplo A para alternar entre as \u00faltimas janelas).<\/p>\n\n\n\n<p>Outra carater\u00edstica muito conveniente do <strong>TMUX<\/strong> \u00e9 que me permite encontrar e copiar texto de um terminal sem utilizar o rato.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vim<\/h2>\n\n\n\n<p>\u00c9 a parte principal do meu fluxo de trabalho. N\u00e3o vou entrar em pormenores sobre o que <strong>VIM<\/strong> \u00e9 e como \u00e9 diferente de outros editores. Existem muitos artigos e v\u00eddeos excelentes sobre o assunto. Em poucas palavras, <strong>Vim<\/strong> \u00e9 um editor modal. Tem dois modos, o modo de inser\u00e7\u00e3o e o modo normal. O modo de inser\u00e7\u00e3o serve para escrever texto num documento e o modo normal serve para efetuar diferentes opera\u00e7\u00f5es no documento, como mover o cursor, apagar fragmentos de texto, alter\u00e1-lo, etc. Parece estranho, mas passado algum tempo parece muito natural e \u00e9 muito dif\u00edcil voltar ao seu editor normal.<\/p>\n\n\n\n<p>O que eu gostaria de vos mostrar \u00e9 a forma como combino <strong>Vim<\/strong> com outras ferramentas para obter tudo o que preciso como <a href=\"https:\/\/thecodest.co\/pt\/blog\/find-your-ideal-stack-for-web-development\/\">web<\/a> <a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-vue-js-developers\/\">criador<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Plugins<\/h2>\n\n\n\n<p>N\u00e3o sou f\u00e3 de plugins pesados <strong>Vim<\/strong> por isso estou a utilizar apenas algumas. Aqui est\u00e1 a lista:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/preservim\/nerdtree\" rel=\"nofollow\">NERDtree<\/a> - \u00e9 um explorador de ficheiros. Permite-lhe realizar facilmente algumas opera\u00e7\u00f5es b\u00e1sicas do sistema de ficheiros, como mover ficheiros, renomear, criar novos ficheiros e muitas outras,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-endwise\" rel=\"nofollow\">vim-endwise<\/a> - Eu sou um <a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-ror-developer\/\">Rubi<\/a> por isso utilizo-o para adicionar <code>fim<\/code> ap\u00f3s <code>se<\/code>, <code>fazer<\/code>, <code>defesa<\/code>, e v\u00e1rias outras palavras-chave,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-rails\" rel=\"nofollow\">vim-rails<\/a> - \u00e9 um <strong>Carris<\/strong> plugin de pot\u00eancia. Conhece a estrutura de um <strong>Aplica\u00e7\u00e3o Rails<\/strong>. Quer verificar o parcial sob o seu cursor? Basta premir <code>gf<\/code> e abre-o na janela atual. Tem muitas outras op\u00e7\u00f5es, mas esta \u00e9 a que utilizo mais frequentemente,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-surround\" rel=\"nofollow\">vim-surround<\/a> - excelente plugin que facilita muito o trabalho com a envolvente. Com ele, pode alterar a envolvente do texto de () para [] com apenas alguns toques no teclado,<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/tpope\/vim-repeat\" rel=\"nofollow\">vim-repetir <\/a>- complementar ao Vim-surround. Permite uma mudan\u00e7a de ambiente repetitiva com <code>.<\/code> (repetir a \u00faltima altera\u00e7\u00e3o no Vim),<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/vimwiki\/vimwiki\" rel=\"nofollow\">vimwiki<\/a>- a minha maneira de tomar notas,<\/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> - a parte central da minha <a href=\"https:\/\/thecodest.co\/pt\/blog\/find-your-node-js-expert-for-hire-today\/\">desenvolvimento web<\/a> fluxo de trabalho.<\/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=\"faixa de coopera\u00e7\u00e3o\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Fzf + Ripgrep<\/h2>\n\n\n\n<p>Estas s\u00e3o as ferramentas que definem a forma como fa\u00e7o a minha programa\u00e7\u00e3o. Apercebi-me que, normalmente, quando estou a fazer algumas tarefas de programa\u00e7\u00e3o, passo a maior parte do meu tempo a descobrir como \u00e9 que as coisas funcionam. Para o fazer, preciso de verificar rapidamente diferentes partes da base de c\u00f3digo, defini\u00e7\u00f5es de m\u00e9todos, classes e outras coisas.<\/p>\n\n\n\n<p><strong>Fzf<\/strong> \u00e9 um filtro Unix interativo para a linha de comandos que pode ser utilizado com quaisquer listas (ficheiros, hist\u00f3rico de comandos, commits git, listas de processos); por outras palavras, \u00e9 um fuzzy finder.<\/p>\n\n\n\n<p><strong>Ripgrep<\/strong> \u00e9 uma alternativa ao grep, mas \u00e9 o mais r\u00e1pido.<\/p>\n\n\n\n<p>Uma vez combinados, estes dois elementos permitem-me encontrar rapidamente tudo o que pretendo na minha <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/why-do-projects-fail\/\">projeto<\/a>.<br>Tenho duas defini\u00e7\u00f5es no meu <strong>Vim<\/strong> ficheiro de configura\u00e7\u00e3o para me ajudar com isto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"vim\" class=\"language-vim\">nnoremap  :Ficheiros\nnnoremap  :Rg<\/code><\/pre>\n\n\n\n<p>A primeira permite-me encontrar rapidamente os ficheiros corretos utilizando a procura difusa nos caminhos dos ficheiros (CTRL-P). O segundo executa o fuzzy finder em todos os caminhos e conte\u00fados dos ficheiros no meu projeto utilizando <strong>Ripgrep<\/strong> (CTRL-F).<\/p>\n\n\n\n<p>Ent\u00e3o, digamos que eu queira encontrar a migra\u00e7\u00e3o onde eu adicionei uma coluna ao <code>utilizadores<\/code> mesa. Carrego em CTRL-F e escrevo algo como <code>adcolusnam<\/code> e corresponder\u00e1 a <code>add_column :utilizadores, :nome, :string<\/code>.<\/p>\n\n\n\n<p>Quando procuro a defini\u00e7\u00e3o de um m\u00e9todo, costumo executar CTRL-F <code>def nome_do_m\u00e9todo<\/code>.<\/p>\n\n\n\n<p>\u00c9 muito \u00fatil, pois procura atrav\u00e9s do caminho do ficheiro + conte\u00fado. \u00c9 especialmente conveniente quando eu sei que o conte\u00fado que estou procurando est\u00e1 em uma parte espec\u00edfica do projeto. Por exemplo, quero encontrar onde actualiz\u00e1mos um nome de utilizador e lembro-me que est\u00e1 algures nos controladores. Carrego em <code>CTRL-F<\/code> <code>nome da conex\u00e3o<\/code> para corresponder \u00e0 linha <code>app\/controladores\/controlador_de_utilizadores: @user.update(name: new_name)<\/code>.<\/p>\n\n\n\n<p>Se conhece o seu projeto e a estrutura da base de c\u00f3digo, pode facilmente construir consultas de pesquisa difusa para encontrar rapidamente quase tudo o que pretende.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V\u00eddeo<\/h2>\n\n\n\n<p><a href=\"https:\/\/youtu.be\/yJWl4CfvMC8\" rel=\"nofollow\">Clique aqui <\/a> para ver uma pequena grava\u00e7\u00e3o minha a brincar com a base de c\u00f3digo do `discourse` (440k LOC no meu i5, 16GB desktop) e a mostrar como costumo mexer no projeto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resumo<\/h2>\n\n\n\n<p>Espero que tenha ficado interessado na minha configura\u00e7\u00e3o e tenha decidido dar <strong>Fzf<\/strong> nos seus esfor\u00e7os de codifica\u00e7\u00e3o. Mudou realmente a forma como estou a utilizar o <strong>Vim<\/strong> como <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/what-is-code-refactoring\/\">c\u00f3digo<\/a> editor.<\/p>","protected":false},"excerpt":{"rendered":"<p>H\u00e1 alguns anos, estava a fazer um churrasco com alguns dos meus amigos, todos programadores de Java. N\u00e3o sei bem como surgiu o assunto, mas come\u00e7\u00e1mos a falar dos nossos ambientes de programa\u00e7\u00e3o. Disse-lhes que fazia todo o meu desenvolvimento usando Vim e terminais. Isso deu origem a algumas piadas e perguntas engra\u00e7adas, como se eu ainda usava cart\u00f5es perfurados \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=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/pt\/blogue\/desenvolvimento-rails-com-tmux-vim-fzf-ripgrep\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/blogue\/desenvolvimento-rails-com-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 minutos\" \/>\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\":\"pt-PT\",\"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\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/rails-development-with-tmux-vim-fzf-ripgrep\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@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\":\"pt-PT\",\"@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\\\/pt\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Desenvolvimento Rails com TMUX, Vim, Fzf + Ripgrep - The Codest","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\/pt\/blogue\/desenvolvimento-rails-com-tmux-vim-fzf-ripgrep\/","og_locale":"pt_PT","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\/pt\/blogue\/desenvolvimento-rails-com-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 minutos"},"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":"pt-PT","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":"Desenvolvimento Rails com 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","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/rails-development-with-tmux-vim-fzf-ripgrep\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@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":"pt-PT","@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\/pt\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/comments?post=3534"}],"version-history":[{"count":6,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3534\/revisions"}],"predecessor-version":[{"id":7967,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3534\/revisions\/7967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media\/3535"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media?parent=3534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/categories?post=3534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/tags?post=3534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}