<?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: Sahil Sharma</title>
    <description>The latest articles on Forem by Sahil Sharma (@sahil_sharma).</description>
    <link>https://forem.com/sahil_sharma</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%2F2747351%2Fc24c84f0-35d4-43f5-b0b2-034611e71075.jpg</url>
      <title>Forem: Sahil Sharma</title>
      <link>https://forem.com/sahil_sharma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sahil_sharma"/>
    <language>en</language>
    <item>
      <title>From Neovim to VSCode</title>
      <dc:creator>Sahil Sharma</dc:creator>
      <pubDate>Sun, 13 Apr 2025 18:01:33 +0000</pubDate>
      <link>https://forem.com/sahil_sharma/from-neovim-to-vscode-13n9</link>
      <guid>https://forem.com/sahil_sharma/from-neovim-to-vscode-13n9</guid>
      <description>&lt;h2&gt;
  
  
  What the hell is Neovim?
&lt;/h2&gt;

&lt;p&gt;If you've started reading this post but don't know what Neovim is, it's basically a text editor based on Vim, but with some improvements. You can also use it as a full IDE, similar to VSCode, but with a different approach.&lt;/p&gt;

&lt;p&gt;If you're wondering what the hell Vim is, well, it's a way to edit text files much more efficiently than using a mouse. It's a modal editor, which means that you have different modes to do different things. For example, you have a normal mode, where you can navigate through the file; a visual mode, where you can select text; and an insert mode, where you can write text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F5rf31ehew4uypre4bu7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F5rf31ehew4uypre4bu7k.png" alt="Image description" width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If all this sounds confusing, don't worry—it's not that hard to learn. You can start by reading the &lt;a href="https://vimhelp.org/" rel="noopener noreferrer"&gt;Vim documentation&lt;/a&gt;, or by watching some tutorials on YouTube, and believe me, it's worth it. If you can take anything from this post, it's that you should learn Vim keybindings.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it all started
&lt;/h2&gt;

&lt;p&gt;I was a &lt;em&gt;happy&lt;/em&gt; little VSCode user, living my life, writing code, and making fun projects. But occasionally, I got annoyed that I had to leave my keyboard to click the file explorer on the sidebar or to click on the search files icon. I know, I know, it's not that big of a deal, but it was seriously annoying me. Also, I didn't use VS Code shortcuts to open them because they were not that intuitive for me and conflicted with my Vim plugin keybindings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia4.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExOW1odzZoNWdvN2VvaWpjdjhhbGg2dDczaTB3c3lwcmtrYTJhcnJtcCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2F93rI3szziYMYo%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia4.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExOW1odzZoNWdvN2VvaWpjdjhhbGg2dDczaTB3c3lwcmtrYTJhcnJtcCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2F93rI3szziYMYo%2Fgiphy.gif" width="500" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes, I had been using Vim keybindings in VSCode for a while, and I would again say that they are a &lt;strong&gt;must-have&lt;/strong&gt; in any IDE you use. I had been getting into the terminal a lot at that time and had also been looking at &lt;a href="https://www.youtube.com/@teej_dv" rel="noopener noreferrer"&gt;TJ Devries'&lt;/a&gt; Neovim setup guide, and I thought, why not give it a try? Over time, as a result of watching &lt;a href="https://www.youtube.com/@ThePrimeTimeagen" rel="noopener noreferrer"&gt;ThePrimeagen's&lt;/a&gt; (a famous Vim advocate and seasoned developer) videos and several other Neovim-related content, I became more and more interested in using Neovim as my main code editor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Switching to Neovim
&lt;/h2&gt;

&lt;p&gt;While I knew that there might be several consequences of switching to Neovim from VSCode as a newbie, I was willing to take the risk, similar to how a drug addict is willing to take the risk of trying a new drug. These things can be challenging; they demand a lot of time and mental energy, but I was a hell of a Linux user back then.&lt;/p&gt;

&lt;p&gt;Over time, I started getting used to it, and did I forget to tell you that Neovim is also known for its extensive configuration options? That's the reason it's more than just a text editor or an IDE (Integrated Development Environment). It's a PDE (Personal Development Environment) that you can customize to your heart's content. Btw, you can check out my Linux dotfiles at &lt;a href="https://github.com/sahilsh-dev/dotfiles" rel="noopener noreferrer"&gt;dotfiles&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F082nd2cvq4w8hsr30u3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F082nd2cvq4w8hsr30u3t.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While the configuration might seem tiring to you guys, it's actually fun, and it took me less than a week to get a stable configuration that I could use for my daily coding needs. I also started using the terminal more and more, and I became increasingly comfortable with it. I also started using tmux, which basically allows you to create several terminal windows within one terminal window. There is hardly anything in this universe as perfect as tmux and Neovim together (smugs in satisfaction).&lt;/p&gt;

&lt;h2&gt;
  
  
  Switching back to VSCode
&lt;/h2&gt;

&lt;p&gt;Over a period of time, I had a lot of fun. Searching files was &lt;em&gt;blazingly fast!&lt;/em&gt;, going to function definitions was &lt;em&gt;blazingly fast!&lt;/em&gt;, and moving up and down in files was also &lt;em&gt;blazingly fast!&lt;/em&gt;. And yes, there was hardly any need for a mouse; everything has a keybinding set, all configurable and shareable.&lt;/p&gt;

&lt;p&gt;You might be wondering why I would switch back to VSCode then, especially after investing a lot of time and energy into learning Neovim. Well, as we all know, I am not a Senior Developer (at the time of writing this post), configuring some parts of the editor seemed tough and I wasn't willing to invest the time into it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fi2h8qwownbmy69dw0e8h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fi2h8qwownbmy69dw0e8h.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While Neovim is very powerful, it's also very hard to learn and configure. There were some parts which I just wasn't able to configure properly. There were extra errors on my screen, and it felt painful. You can call this a skill issue (lol), but I would say that sometimes you gotta know when to stop and move on.&lt;/p&gt;

&lt;p&gt;While VSCode is also not perfect, it's just much easier to get working by installing some extensions and getting started. It's also much more user-friendly and has a lot of features that I had to install separately in Neovim. But so is the case with Neovim. It's just that I am choosing the ease of setup and use over the power of customization and speed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fsg4b2w1pgk0bitoy4eyx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fsg4b2w1pgk0bitoy4eyx.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/@MelkeyDev" rel="noopener noreferrer"&gt;Melkey&lt;/a&gt;, a Senior Developer at Twitch, also made a great point on this: he doesn't want to look into the documentation for several plugins and their configurations, preferring the ease of installing extensions in VSCode without worrying about configuring or setting them up. Furthermore, as more AI tools are growing, it would be much easier to use in VSCode compared to Neovim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was it worth it?
&lt;/h2&gt;

&lt;p&gt;For me, working with Neovim was definitely worth it. I learned a lot about how text editors work, how LSPs work, and more importantly, I learned a lot about VSCode as well—specifically, how it actually uses these same features, which allowed me to debug issues there too.&lt;/p&gt;

&lt;p&gt;Both are super fun and useful tools. I would recommend that you try out Neovim if you're interested in learning something new and if you're a fan of terminal-based tools. But if you're looking for something that just works out of the box, and you don't want to spend a lot of time configuring or keeping your plugins updated once a month, then VSCode is the way to go.&lt;/p&gt;

&lt;p&gt;It's all about getting the work done in the end. Neovim is the final sword, but you must level up your skills before you can wield it effectively. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcmhpbXMycGJsZDZjcW1tdW83eW9pcmhjencwcXlycTlnaGtmOHI2dyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/OiQH9DK4Kb7cmbAPzR/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcmhpbXMycGJsZDZjcW1tdW83eW9pcmhjencwcXlycTlnaGtmOHI2dyZlcD12MV9naWZzX3NlYXJjaCZjdD1n/OiQH9DK4Kb7cmbAPzR/giphy.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading this post, if you found it valuable, please consider sharing it with your friends. And if you have any questions or suggestions, feel free to leave a comment below; I’d love to hear your thoughts.&lt;/p&gt;

</description>
      <category>neovim</category>
      <category>softwaredevelopment</category>
      <category>vim</category>
      <category>code</category>
    </item>
    <item>
      <title>Take a look at my first blog</title>
      <dc:creator>Sahil Sharma</dc:creator>
      <pubDate>Tue, 25 Feb 2025 19:26:07 +0000</pubDate>
      <link>https://forem.com/sahil_sharma/take-a-look-at-my-first-blog-3f46</link>
      <guid>https://forem.com/sahil_sharma/take-a-look-at-my-first-blog-3f46</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/sahil_sharma" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2747351%2Fc24c84f0-35d4-43f5-b0b2-034611e71075.jpg" alt="sahil_sharma"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/sahil_sharma/eye-candy-to-efficiency-how-i-transformed-my-linux-workflow-389e" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Eye Candy to Efficiency: How I Transformed My Linux Workflow&lt;/h2&gt;
      &lt;h3&gt;Sahil Sharma ・ Feb 25&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#linux&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#development&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>linux</category>
      <category>productivity</category>
      <category>development</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Eye Candy to Efficiency: How I Transformed My Linux Workflow</title>
      <dc:creator>Sahil Sharma</dc:creator>
      <pubDate>Tue, 25 Feb 2025 19:18:05 +0000</pubDate>
      <link>https://forem.com/sahil_sharma/eye-candy-to-efficiency-how-i-transformed-my-linux-workflow-389e</link>
      <guid>https://forem.com/sahil_sharma/eye-candy-to-efficiency-how-i-transformed-my-linux-workflow-389e</guid>
      <description>&lt;h2&gt;
  
  
  How it All Started
&lt;/h2&gt;

&lt;p&gt;In high school, the world of Linux was a mystery to me. At that time, I was particularly interested in game development and had only heard of Linux in a Blender (the free and open source 3D creation suite) tutorial. Aside from hacking, I had no idea what Linux was actually about. Who knew it would eventually become my primary operating system?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Transition to Linux
&lt;/h2&gt;

&lt;p&gt;I was introduced to Linux in my second year of college when my Windows laptop started struggling with high resource usage. A classmate was using Fedora Linux, one of the most popular Linux distributions, and I decided to give it a try. &lt;/p&gt;

&lt;p&gt;The installation was smooth, and I appreciated the minimalist design of the operating system. I was amazed by my laptop’s performance, perhaps because it had been running Windows its entire life. In the months that followed, I continued exploring the Linux world, occasionally diving deeper into its features.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fojn4daftb3o1yjx0eyq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fojn4daftb3o1yjx0eyq8.png" alt="KDE" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After a few months of using Fedora, I was happy with the performance but not satisfied with its appearance. I was using the default GNOME desktop environment, which was good, but I wanted something more. That’s when I came across Tuxedo Linux, a customized version of Ubuntu featuring a beautiful KDE desktop environment. I decided to try it out and installed it on my laptop. It was my first time using KDE, and, lord, I was angry that I had been stuck with GNOME for so long without giving KDE a try. &lt;/p&gt;

&lt;h2&gt;
  
  
  Switch to Window Manager
&lt;/h2&gt;

&lt;p&gt;I was happy with KDE, but by then I had switched to Arch Linux. The story of how I transitioned to Arch is a tale for another day. Although I was content with KDE, I recently came across a video by the famous vim lord, ThePrimeagen, and I was thoroughly impressed. In one of his developer workflow videos, I learned about window managers. I spent some time understanding what a window manager was and how it differed from a desktop environment—it felt like the pinnacle of Linux efficiency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExYmF3M2ZsMG1pNGdsazBhcm1tZDlucHk3cGlqaWYwa3VldDN2MzVjciZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FEPQfELrp20REY%2Fgiphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fmedia1.giphy.com%2Fmedia%2Fv1.Y2lkPTc5MGI3NjExYmF3M2ZsMG1pNGdsazBhcm1tZDlucHk3cGlqaWYwa3VldDN2MzVjciZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw%2FEPQfELrp20REY%2Fgiphy.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had a conversation with the same friend who introduced me to Linux about window managers, and he assured me that I would be able to use one without worrying about its complexity. Over the next few days, while tinkering with my Arch setup, a Linux YouTuber posted a video demonstrating the Hyprland window manager setup using a shell script. His configuration looked amazing, and I was eager to recreate it myself. Why wouldn't I want to? It was a beautiful setup with smooth transitions and animations.&lt;/p&gt;

&lt;p&gt;Then came the day I decided to install it. I ran the shell script, which installed the window manager along with all its dependencies. I was greeted by a sleek desktop environment featuring a terminal and a file manager. I marveled at both the performance and the appearance of the window manager; navigating through the system was a breeze, and the animations were impressively smooth. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F7iwfhd6t5g7fxkepdt4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7iwfhd6t5g7fxkepdt4h.png" alt="Arch Linux" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I fell in love with the window manager, even though a few issues remained. One was that certain fonts had to be installed separately—something I hadn't known about. Another was that window managers can be challenging for beginners since they require Linux experience and familiarity with alternative programs to replace the default functionalities of a desktop environment. Over the next few months, however, I managed to resolve these issues, learning a great deal in the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding Stability
&lt;/h2&gt;

&lt;p&gt;It took me almost two years to finally create a setup that I was happy with—and, ironically, it was very minimal. It seemed that my subconscious mind always craved the setup that ThePrimeagen had once shown me. I watched that video every few months and would integrate bits of his configuration until I eventually achieved a similarly serene experience. &lt;/p&gt;

&lt;p&gt;Yet, there was one missing piece to the puzzle: the realization that, as I was growing both as a developer and as a professional, I needed to find a stable base. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fs36sxg4fqfbxss4ezkzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fs36sxg4fqfbxss4ezkzj.png" alt="Fedora Linux" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing led to another, and I eventually switched to Fedora. Don't get me wrong—Arch revealed the true beauty and strengths of Linux, and I will always be grateful for that. However, Fedora struck the perfect balance between stability and customizability for me. I was delighted with both the performance and the aesthetics of the system, I had finally found my perfect setup.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>productivity</category>
      <category>development</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
