<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mohammed Boudad</title>
    <description>The latest articles on Forem by Mohammed Boudad (@matrixersp).</description>
    <link>https://forem.com/matrixersp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F33456%2F53073396-6f79-4156-8b51-57615d939d42.jpg</url>
      <title>Forem: Mohammed Boudad</title>
      <link>https://forem.com/matrixersp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/matrixersp"/>
    <language>en</language>
    <item>
      <title>How to Make an Input Field Grow/Shrink as you Type</title>
      <dc:creator>Mohammed Boudad</dc:creator>
      <pubDate>Sat, 30 May 2020 22:59:44 +0000</pubDate>
      <link>https://forem.com/matrixersp/how-to-make-an-input-field-grow-shrink-as-you-type-513l</link>
      <guid>https://forem.com/matrixersp/how-to-make-an-input-field-grow-shrink-as-you-type-513l</guid>
      <description>&lt;p&gt;If you have worked with CSS a lot you may have noticed that input fields do not behave like other HTML elements when it comes to making an input field fit the content within it. In this article I'm going to show you a simple trick to make an input field grow and shrink as you type with some little CSS and JavaScript.&lt;/p&gt;

&lt;p&gt;For the markup we're going to need an input and a span.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;

&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;span&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Now let's apply some styles to our content.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;

&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;],&lt;/span&gt;
&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="s2"&gt;'Open Sans'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;'Helvetica Neue'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.75rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#666&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="c"&gt;/* box-sizing: border-box; */&lt;/span&gt;
    &lt;span class="c"&gt;/* padding: 0.5em 1em; */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.5em&lt;/span&gt; &lt;span class="m"&gt;1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#555&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"text"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="nd"&gt;:focus&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ff7996&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nt"&gt;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;-9999px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;There's one thing to note here. Borders and font properties applied to the input field need to be applied to the span as well, the padding also needs to be applied to both the span and the input if we set the &lt;code&gt;box-sizing&lt;/code&gt; to &lt;code&gt;border-box&lt;/code&gt;, you'll know why when we move to JavaScript. Notice that I set a &lt;code&gt;min-width&lt;/code&gt; to the span and &lt;code&gt;width&lt;/code&gt; to the input field this is just to have a predefined width for our input field so that the it doesn't shrink below that width. Other styles are there just to hide the span and make the input field look pretty.&lt;/p&gt;

&lt;p&gt;Now let's move to the actual trick.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;span&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;span&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\s&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;offsetWidth&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In the code above we simply listen to input events on our text input then we replace the content of the span with the content in the input. Notice that we also replace the spaces on &lt;code&gt;this.value&lt;/code&gt; by &lt;code&gt;&amp;amp;nbsp&lt;/code&gt; due to the fact that in HTML multiple spaces will only be rendered as a single space. After that we apply the width of the span to the input field.&lt;/p&gt;

&lt;p&gt;This is how it would look like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fic5cqddgaohhmqkq2dw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fic5cqddgaohhmqkq2dw3.png" alt="Input field grows and shrinks with text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this article was helpful.&lt;br&gt;
Any questions or additions? Leave a comment below.&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to Use Fzf with Ripgrep to Selectively Ignore VCS Files</title>
      <dc:creator>Mohammed Boudad</dc:creator>
      <pubDate>Sun, 03 Nov 2019 11:28:43 +0000</pubDate>
      <link>https://forem.com/matrixersp/how-to-use-fzf-with-ripgrep-to-selectively-ignore-vcs-files-4e27</link>
      <guid>https://forem.com/matrixersp/how-to-use-fzf-with-ripgrep-to-selectively-ignore-vcs-files-4e27</guid>
      <description>&lt;p&gt;As developers, most of the time we want to make sure not to commit some directories (e.g: &lt;code&gt;node_modules&lt;/code&gt;) and files (e.g: &lt;code&gt;.env&lt;/code&gt;) to a certain repository, so we put them in &lt;code&gt;.gitignore&lt;/code&gt;. Now, the problem you may face is when you want to make a quick search for certain files under your working directory using a tool such as &lt;strong&gt;fzf&lt;/strong&gt; you don't want the search result to get cluttered up with files from &lt;code&gt;node_modules&lt;/code&gt; which you rarely want to take a look at, but still you want to keep files like &lt;code&gt;.env&lt;/code&gt; in the search result and that's what we're going to do using &lt;strong&gt;fzf&lt;/strong&gt; and &lt;strong&gt;ripgrep&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Installation
&lt;/h1&gt;

&lt;p&gt;If you have &lt;strong&gt;fzf&lt;/strong&gt;, &lt;strong&gt;fzf.vim&lt;/strong&gt; and &lt;strong&gt;ripgrep&lt;/strong&gt; already installed in your machine then skip to Configuration, otherwise follow the steps below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To install &lt;a href="https://github.com/junegunn/fzf" rel="noopener noreferrer"&gt;fzf&lt;/a&gt; you can just clone the repository and run the install script:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;To install &lt;a href="https://github.com/BurntSushi/ripgrep" rel="noopener noreferrer"&gt;ripgrep&lt;/a&gt; use your system's package manager, in my case:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;ripgrep 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: the binary name for &lt;strong&gt;ripgrep&lt;/strong&gt; is &lt;code&gt;rg&lt;/code&gt;, that means if you want to check if the installation is successful you can just run &lt;code&gt;rg --version&lt;/code&gt; (&lt;code&gt;ripgrep&lt;/code&gt; won't work).&lt;/p&gt;

&lt;p&gt;If you want &lt;strong&gt;fzf&lt;/strong&gt; to work on &lt;strong&gt;vim&lt;/strong&gt;, add the following two lines using &lt;a href="https://github.com/junegunn/vim-plug" rel="noopener noreferrer"&gt;vim-plug&lt;/a&gt; to your &lt;code&gt;~/.vimrc&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

Plug &lt;span class="s1"&gt;'~/.fzf'&lt;/span&gt;
Plug &lt;span class="s1"&gt;'junegunn/fzf.vim'&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
  
  
  Configuration
&lt;/h1&gt;

&lt;p&gt;We are going to add some commands to &lt;code&gt;~/.zshrc&lt;/code&gt; (or &lt;code&gt;~/.bashrc&lt;/code&gt; depending on your preferred shell). First add these two lines:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;FZF_DEFAULT_COMMAND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'rg --files --hidden --follow --no-ignore-vcs'&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;FZF_CTRL_T_COMMAND&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$FZF_DEFAULT_COMMAND&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In the lines above we set &lt;code&gt;rg&lt;/code&gt; as the source for &lt;code&gt;fzf&lt;/code&gt;. We add &lt;code&gt;--files&lt;/code&gt; option to print the files that &lt;strong&gt;ripgrep&lt;/strong&gt; would search, followed with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--hidden&lt;/code&gt;: to include hidden files&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--follow&lt;/code&gt;: to include symbolic links&lt;/li&gt;
&lt;li&gt;And finally &lt;code&gt;--no-ingore-vcs&lt;/code&gt; to tell it to not ignore version control files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What all these basically do, is tell &lt;strong&gt;ripgrep&lt;/strong&gt; to include all the files in the search.&lt;/p&gt;

&lt;p&gt;You can also add some &lt;code&gt;FZF_DEFAULT_OPTS&lt;/code&gt; if you like to customize the look of &lt;strong&gt;fzf&lt;/strong&gt; to your preference. These are the options I use:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;FZF_DEFAULT_OPTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'--height 96% --reverse --preview "cat {}"'&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In the above command we give &lt;strong&gt;fzf&lt;/strong&gt; some default options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--height 96%&lt;/code&gt;: to make &lt;strong&gt;fzf&lt;/strong&gt; take up 96% of the terminal window&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--reverse&lt;/code&gt;: to make &lt;strong&gt;fzf&lt;/strong&gt; display in reverse&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--preview "cat {}"&lt;/code&gt;: to get a sneak peak of the selected file's content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let's create an alias, which we will give it the name &lt;code&gt;fzfi&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;fzfi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'rg --files --hidden --follow --no-ignore-vcs -g "!{node_modules,.git}" | fzf`
```

In the above command we tell **ripgrep** to exclude `node_modules` and `.git` directories from the search and keep the other files.

Now with this, we made `fzf` command by default search all files in our working directory, and `fzfi` quickly search all the files excluding `node_modules` and `.git` directories, so files which you don'&lt;/span&gt;t like to commit to your repository, but still like to &lt;span class="nb"&gt;read &lt;/span&gt;or edit such as &lt;span class="sb"&gt;`&lt;/span&gt;.env&lt;span class="sb"&gt;`&lt;/span&gt; are included &lt;span class="k"&gt;in &lt;/span&gt;the search result.

Using the above &lt;span class="nb"&gt;alias&lt;/span&gt;, you might as well want to quickly search and open a file with &lt;span class="k"&gt;**&lt;/span&gt;vim&lt;span class="k"&gt;**&lt;/span&gt;, by adding this &lt;span class="nb"&gt;alias&lt;/span&gt;:

&lt;span class="sb"&gt;```&lt;/span&gt;sh
&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;vifi&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'vim $(fzfi)'&lt;/span&gt;
&lt;span class="sb"&gt;```&lt;/span&gt;

This is all regarding making the search from the &lt;span class="nb"&gt;command &lt;/span&gt;line. Now when we want to make a quick search from vim with the same options as the &lt;span class="nb"&gt;alias&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;vifi&lt;span class="sb"&gt;`&lt;/span&gt;, we need to create a new &lt;span class="nb"&gt;command &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;~/.vimrc&lt;span class="sb"&gt;`&lt;/span&gt;, and we are going to name it &lt;span class="sb"&gt;`&lt;/span&gt;All&lt;span class="sb"&gt;`&lt;/span&gt;:

&lt;span class="sb"&gt;```&lt;/span&gt;sh
&lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-bang&lt;/span&gt; &lt;span class="nt"&gt;-nargs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;*&lt;/span&gt;  All
  &lt;span class="se"&gt;\ &lt;/span&gt;call fzf#run&lt;span class="o"&gt;(&lt;/span&gt;fzf#wrap&lt;span class="o"&gt;({&lt;/span&gt;&lt;span class="s1"&gt;'source'&lt;/span&gt;: &lt;span class="s1"&gt;'rg --files --hidden --no-ignore-vcs --glob "!{node_modules/*,.git/*}"'&lt;/span&gt;, &lt;span class="s1"&gt;'down'&lt;/span&gt;: &lt;span class="s1"&gt;'40%'&lt;/span&gt;, &lt;span class="s1"&gt;'options'&lt;/span&gt;: &lt;span class="s1"&gt;'--expect=ctrl-t,ctrl-x,ctrl-v --multi --reverse'&lt;/span&gt; &lt;span class="o"&gt;}))&lt;/span&gt;

&lt;span class="sb"&gt;```&lt;/span&gt;

With this we can map our new &lt;span class="nb"&gt;command &lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;normal mode by adding:

&lt;span class="sb"&gt;```&lt;/span&gt;sh
nnoremap &amp;lt;silent&amp;gt; &amp;lt;leader&amp;gt;o :All&amp;lt;cr&amp;gt;
&lt;span class="sb"&gt;```&lt;/span&gt;

This is how it will look like &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;**&lt;/span&gt;vim&lt;span class="k"&gt;**&lt;/span&gt;:

&lt;span class="o"&gt;![&lt;/span&gt;fzf &lt;span class="k"&gt;in &lt;/span&gt;a horizontal &lt;span class="nb"&gt;split&lt;/span&gt;&lt;span class="o"&gt;](&lt;/span&gt;https://imgur.com/ZchZ5Um.png&lt;span class="o"&gt;)&lt;/span&gt;

I hope this article was helpful. Happy coding!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>vim</category>
      <category>shell</category>
      <category>fzf</category>
      <category>ripgrep</category>
    </item>
  </channel>
</rss>
