<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ editor - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ editor - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 19 May 2026 10:29:21 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/editor/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Why Vim Is More than Just an Editor – Vim Language, Motions, and Modes Explained ]]>
                </title>
                <description>
                    <![CDATA[ Throughout my time as a developer, I've used VS Code, Sublime, Notepad++, TextMate, and others. But shortcuts like cmd(+shift)+end and jumping with option+arrow-keys from word to word needed to be faster at some point. I was hitting my limits. Everyt... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/vim-language-and-motions-explained/</link>
                <guid isPermaLink="false">66d4614b3a8352b6c5a2ab17</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ General Programming ]]>
                    </category>
                
                    <category>
                        <![CDATA[ vim ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Simon Späti ]]>
                </dc:creator>
                <pubDate>Tue, 14 Feb 2023 19:52:55 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/02/using-neo-vim-feature-freecode-3.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Throughout my time as a developer, I've used VS Code, Sublime, Notepad++, TextMate, and others. But shortcuts like <code>cmd(+shift)+end</code> and jumping with <code>option+arrow-keys</code> from word to word needed to be faster at some point.</p>
<p>I was hitting my limits. Everything I was doing I did decently fast, but I didn’t get any faster.</p>
<p>I've since learned that Vim is the only editor that you get faster using with time.</p>
<p><a target="_blank" href="https://www.vim.org/">Vim</a> is based solely on shortcuts. When I discovered that and played around a bit, I felt numb and a little stupid, having not learned the shortcuts (called Vim language) much earlier in my career.</p>
<p>I realized there was a keystroke to get to any specific position I wanted to jump. It was like a game, seeing if I could use fewer shortcuts to accomplish a particular edit. It’s where many Vim users get a lot of pleasure from coding and writing. It felt liberating, moving my cursor with the precision of a surgeon.</p>
<p>Although speed is a smaller benefit, it got me started when I saw <a target="_blank" href="https://youtu.be/1UXHsCT18wE">others</a> navigating in Vim. After climbing the steep learning curve, it’s still one of the most powerful skills I've ever learned in my career, working for a living on a computer.</p>
<p>Let’s debunk the myth of Vim and learn how it’s possible to remember all the shortcuts using the specific Vim language. We'll see how to move with vim motions, and I'll share what I’ve learned so far, and why you might give Vim a try as well.</p>
<h2 id="heading-learning-the-vim-language">Learning the Vim Language</h2>
<p>Lots of things have been said about Vim – how fast it is, how only Linux nerds use it, and that it’s impossible to <a target="_blank" href="https://stackoverflow.com/q/11828270">exit Vim</a>.</p>
<p>For myself, I fell in love with the “Vim language”. You see, I’m bad at remembering anything and thought that Vim was not for me. But this wasn't the case for one specific reason: Vim <em>motions</em> and its language.</p>
<p>I learned that there’s a grammar behind the editor. With it, you express what you want to do first, how many times, and then what you want it to apply.</p>
<p>Let’s get deeper into Vim and the language behind it.</p>
<h3 id="heading-how-the-vim-language-and-motions-work">How the Vim Language and Motions Work</h3>
<p>Vim has a terrific language or grammar behind its shortcuts. Instead of remembering a thousand shortcuts, you can learn a couple and combine them.</p>
<p>These are often called the Vim language or Vim motions for moving around. This has nothing to do with the editor yet – these are universal and available in other editors as well.</p>
<p>For example, there's <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=JaredParMSFT.VsVim">VSVim</a> for VSCode, <a target="_blank" href="https://plugins.jetbrains.com/plugin/164-ideavim">IdeaVim</a> for the JetBrains products, <a target="_blank" href="https://www.sublimetext.com/docs/vintage.html">Vintage Mode</a> for Sublime, and so on. But there are also Browser extensions like <a target="_blank" href="https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en">Vimium</a> or <a target="_blank" href="https://chrome.google.com/webstore/detail/firenvim/egpjdkipkomnmjhjmdamaniclmdlobbo?hl=en">Firenvim</a>, and Gmail even adapted some of Vim's <a target="_blank" href="https://support.google.com/mail/answer/6594?hl=en&amp;co=GENIE.Platform%3DDesktop#zippy=%2Cjumping%2Cnavigation">shortcuts</a> for navigation (<code>j</code>, <code>k</code> for moving, <code>g</code> for jumping).</p>
<p>Everyone who types on a computer eight hours a day should learn the Vim language. Yes, it’s hard in the beginning, but that’s the case with everything new and different. But getting better every day and having more fun coding or writing should be motivation enough. You're not too busy to learn - you'll learn as you go.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/weel-too-busy.png" alt="Are you too busy to improve | Image from Steen Schledermann’s blog: https://steenschledermann.wordpress.com/ " width="600" height="400" loading="lazy"></p>
<h4 id="heading-vim-grammar">Vim Grammar</h4>
<p>Just as spoken language <strong>grammar</strong> has verbs, subjects, and objects, so does the Vim language. The grammar has different <strong>verbs</strong> to begin with. Copying (or yanking) in Vim with <code>y</code>, deleting with <code>d</code>, pasting with <code>p</code>, changing with <code>c</code>, and so on.</p>
<p>For example, the easiest shortcut is copying a line with <code>yy</code>. In this case, yank is the verb and the second <code>y</code> is a synonym for <code>y_</code>. The <code>y</code> is doubled up which makes it easier to type since it's a joint operation.</p>
<p>Next, we can add movements. Each verb takes a <strong>subject</strong> for their movements. There are lots of movements (more in the next section) – the easiest is with numbers.</p>
<p>For example, to copy three lines, you add a 3 in front, such as <code>3yy</code>. You can do that with all verbs, like deleting three lines is <code>3dd</code>. Another would be <code>{</code> and <code>}</code> to move to the beginning or end of the paragraph, respectively.</p>
<p>In addition to verbs and subjects, the Vim language also has <strong>objects</strong>. For example, we can save text into different clipboards (called a register in Vim) with <code>"ay</code>. Here, we copy it into register a, which would be the object. We can paste it again by doing the same but using the verb paste instead of yank <code>"ap</code>.</p>
<p>There are even <strong>adjectives</strong> and <strong>adverbs</strong> with prefixes. Usually, you use a verb and an object. But instead of going down three lines with <code>3J</code>, which joins the following three lines, you could add <code>d5}</code>, which means “delete from the current line through the end of the fifth paragraph down from here.”</p>
<p>For me, the most magical thing about Vim is how you navigate and edit text – and it still has nothing to do with the editor.</p>
<p>Sure Vim was the one that introduced and perfected these actions, but again – you can get them anywhere else. This goes deep into the Vim language, yet we still need to touch on the editor. This is important to know.</p>
<p>I hope you've started seeing the power of such patterns, though. With a couple of verbs and objects, you can already know hundreds of combinations without memorizing each one individually.</p>
<p>You can watch a video on <a target="_blank" href="https://youtu.be/wlR5gYd6um0">Mastering the Vim Language</a> or read a full exposition of the Vim language on this terrific <a target="_blank" href="https://stackoverflow.com/a/1220118">StackOverflow</a> comment.</p>
<h3 id="heading-vim-motions">Vim Motions</h3>
<p>Vim motions are how you navigate, whether you navigate to the end of the word or back to the start of the document – these are all motions.</p>
<p>These are the first things you start learning (and hating) when learning Vim. They're extra hard to figure out initially, but they're something you'll want to use everywhere when you get used to them.</p>
<p>Instead of using arrow keys, Vim uses <code>jk</code> to move down and up and <code>hl</code> to move left and right. The main idea is to use the keys your right hand naturally rests on. You do not need to move your hands or even fingers for navigation.</p>
<p>Again, this seems like a small thing, but once you've learned it, you know why everyone is telling you about it.</p>
<p>Some common motions are:</p>
<pre><code class="lang-python">h,j,k,l - left, down, up, right
w,W - to start of next word <span class="hljs-keyword">or</span> WORD
b,B - to start of previous word <span class="hljs-keyword">or</span> WORD
e,E - to end of word <span class="hljs-keyword">or</span> WORD
$   - to end of line
^   - to start of line
</code></pre>
<p>You can find the most important motions to start with in this cheatsheet:</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-language-cheetsheet.png" alt="Vim Command Cheat Sheet from Cloud Guru" width="600" height="400" loading="lazy"></p>
<p>This Vim Command Cheat Sheet is from <a target="_blank" href="https://www.pluralsight.com/resources/blog/cloud/a-vim-cheat-sheet-reference-guide">Cloud Guru</a>.</p>
<h2 id="heading-how-to-use-vim-modes-normal-insert-visual-and-command">How to Use Vim Modes (normal, insert, visual, and command)</h2>
<p>Modes are another thing that might get you confused at the beginning.</p>
<p>When you launch Vim, you are not typing what you click on your keyboard as you are not in the “insert” mode that you're likely familiar with from other editors. Instead, the normal mode you are in lets you do the commands explained in the above Vim language and motions.</p>
<p>Vim is the only editor that <strong>optimizes editing text</strong> instead of writing from a blank page.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-modes.png" alt="Three modes illustrated (escape mode being the command mode) | Image from Geekforgeeks https://www.geeksforgeeks.org/vi-editor-unix/" width="600" height="400" loading="lazy"></p>
<p>That’s another reason Vim makes you so efficient: you have different modes for each phase of your current work or task.</p>
<ul>
<li><p>Normal mode is for reading code and navigating quickly.</p>
</li>
<li><p>Insert mode is for when you want to add some code or text.</p>
</li>
<li><p>Visual mode is unique, the same as highlighting text with the mouse, but with the above Vim motions.</p>
</li>
<li><p>And command mode is the powerhouse, where you can type Linux commands such as formatting a JSON file with <code>:%!jq</code> (whereas <a target="_blank" href="https://stedolan.github.io/jq/">jq</a> is a command line tool installed on your machine) and execute them within Vim. This is also where you can use Vim commands such as <code>:sort</code> for sorting your files.</p>
</li>
</ul>
<p>I could go on here, but I want to dive into the editor itself now and explore why I learned it initially and how to get started.</p>
<h2 id="heading-introduction-to-vim-the-editor-neovim-lunarvim-and-helix">Introduction to Vim the Editor (Neovim, Lunarvim, and Helix)</h2>
<p>So what is Vim the editor, then? It started with the simple vi editor, a basic editor that implements the Vim language and can edit text. It's a little like Notepad++, which you might use on Windows, but without a mouse and context menu.</p>
<p>Vim is simply an improved version of Vi with more features.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vi-vs-vim.png" alt="Differences between Vi and Vim | Image by Linuxiac: https://linuxiac.com/differences-between-vi-and-vim-text-editors-explained/" width="600" height="400" loading="lazy"></p>
<p>Today there is even a newer version of Vim called <a target="_blank" href="https://neovim.io/">Neovim</a>. This version is super popular, and I’ve started using Neovim as well. Compared to Vim, Neovim uses <a target="_blank" href="https://www.lua.org/">Lua</a>, an actual programming language, to configure and extend the editor. This makes writing plugins and configuring Neovim easier compared to Vim's native <a target="_blank" href="https://learnvimscriptthehardway.stevelosh.com/">Vimscript</a>.</p>
<p>Neovim is a great place to start learning Vim today, as it has so many awesome <a target="_blank" href="https://github.com/rockerBOO/awesome-neovim">plugins</a>. Neovim also won the most <a target="_blank" href="https://survey.stackoverflow.co/2022/#integrated-development-environment">loved IDE</a> on the StackOverflow survey a couple of times, last in 2022.</p>
<p>There is also an editor called <a target="_blank" href="https://github.com/helix-editor/helix">Helix</a> built in Rust, but it has minor deviations from the Vim language, which make it a less optimal place to start.</p>
<p>If you want to get started without needing to know anything about Neovim and spending hours on configurations, you can begin with <a target="_blank" href="https://www.lunarvim.org/">LunarVim</a>. It's a distro with all the features you know from VS Code already included.</p>
<p>Suppose you are comfortable with the terminal and realize you want to change the editor to your liking. In that case, you can kickstart your journey with a <a target="_blank" href="https://github.com/nvim-lua/kickstart.nvim">simple single-file configuration</a> with many explanations that will work out of the box. You can also learn each config by opening the single config file.</p>
<h2 id="heading-why-i-learned-vim">Why I Learned Vim</h2>
<p>Using the standard input method we use in our editors daily, we will eventually stagnate at a certain level. Sure, you can use <code>cmd+arrow-keys</code> (on a Mac) to jump to the beginning of a line or <code>option+arrow-keys</code> to jump between words instead of characters.</p>
<p>But what happens once you've mastered that? What if you need to change something in the middle of a sentence? There is no other way to jump several times with this option, or you move your hands away each time to reach the mouse to click on the exact spot.</p>
<p>One day, I saw a coworker work in Vim, and everything clicked. The Vim language and motions were the things I needed all along. So I installed the VS Code plugin, watched a couple of YouTube videos, and started my journey to learn the basic movements.</p>
<p>I also love learning new things and, even better, I'm always looking for ways to make me more productive 😉.</p>
<p>But as many of you might have experienced, the hardest part of learning Vim is getting started. The initial learning curve is very steep. Below is an illustration that shows this :).</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-learning-curve.png" alt="The learning curve for text editors. Although funny, very accurate | Image from Why I Love Using Vim To Write Code: https://youtu.be/o4X8GU7CCSU" width="600" height="400" loading="lazy"></p>
<p>It took me also two or three times trying to start learning Vim until I fully grasped it. I switched back and forth. As well as having to get work done, it is sometimes hard to switch entirely from one day to another. But I just loved learning all the movements, and I knew it would make me faster after a short time.</p>
<h2 id="heading-why-i-love-vim">Why I Love Vim</h2>
<p>I have been using Vim for only eight months, and coding with Python for around six years. I've been using other code editors since my career started in 2003. Each editor I used had its strengths and its appeal. But I never experienced such efficiency gains as I have with Vim.</p>
<p>In the end, use the editor that works best for you. Personally, I want my editor to help me work as fast as possible, especially since I use it daily. Investing a bunch of time learning Vim is necessary, but it pays off over time. That’s the whole point with Vim and especially the Vim language.</p>
<p>An underrated skill in general among programmers is using the <strong>terminal</strong>. By learning your editor, especially with Vim, you will naturally learn more about the terminal and improve your Linux skills (reverse search, lazy git, Tmux, and many more).</p>
<p>Before Vim, I only used the terminal if I had to. I googled everything, and today, I use the terminal with its helpful manuals whenever I can.</p>
<p>Sometimes I’m surprised by myself as well, and it’s super nerdy – but it’s so effective. I’ve become a much better developer since starting to get comfortable with Vim.</p>
<p>Tweaking and optimizing Vim can take hours and days, and it's unavoidable in the beginning. But after a while, your <a target="_blank" href="https://github.com/sspaeti/dotfiles">dotfiles</a> mature, and you start changing things less. You will also get much faster at trying out a new plugin or adding a remap.</p>
<p>Also, Vim is <strong>fun</strong>! Working in Neovim is one of the highlights of my everyday work. Improving your text editor and making it your own – maybe in ways no one else has optimized – is awesome.</p>
<p>For example, I write a lot, so I optimized for writing markdown and programming in Python. That’s what adds a lot to my happiness as a coder.</p>
<p>Because of all this, <a target="_blank" href="https://github.com/tjdevries">TJ DeVries</a> calls Neovim a <a target="_blank" href="https://brain.sspaeti.com/pde-personalized-development-environment">PDE</a> (Personalized Development Environment), not “just” an IDE. You can learn more about this in <a target="_blank" href="https://www.youtube.com/c/ThePrimeagen">ThePrimeagen</a>’s truly inspiring <a target="_blank" href="https://youtube.com/playlist?list=PLm323Lc7iSW_wuxqmKx_xxNtJC_hJbQ7R">Vim videos</a> and learn why he used <a target="_blank" href="https://youtu.be/D4YTJ2W5q4Y">Vim in 2022</a>.</p>
<p>Vim also manifested <strong>minimalism</strong> more in me. I used the terminal instead of fancy GUIs and plain text files for clarity, freedom, blazingly fast shortcuts, no vendor lock-in, and staying in the <a target="_blank" href="https://brain.sspaeti.com/deep-work">Flow</a> with the content in front.</p>
<p>Vim changed not only my workflow but how I was able to <strong>edit at the speed of thought</strong>. Instead of thinking, “I want to edit that word”, my fingers jump to that word and change it with a few keystrokes.</p>
<h2 id="heading-vim-for-data-engineering">Vim for Data Engineering</h2>
<p>My data engineering workflow uses Neovim with the <a target="_blank" href="https://microsoft.github.io/language-server-protocol/">LSP</a> (Language Server Protocol) <a target="_blank" href="https://github.com/microsoft/pyright">pyright</a> installed with <a target="_blank" href="https://github.com/williamboman/mason.nvim">mason</a>. There's much more with <a target="_blank" href="https://github.com/sspaeti/dotfiles/tree/master/tmux">Tmux</a>, but you can find all the details on <a target="_blank" href="https://github.com/sspaeti/dotfiles/tree/master/nvim">dotfiles/nvim</a>.</p>
<p><img src="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/vim-mason-install.png" alt="Installing Pyright with Mason" width="600" height="400" loading="lazy"></p>
<h2 id="heading-vim-for-writing">Vim for Writing</h2>
<p>I’m still using <a target="_blank" href="https://brain.sspaeti.com/obsidian">Obsidian</a> a lot more for writing (see more on my <a target="_blank" href="https://sspaeti.com/blog/pkm-workflow-for-a-deeper-life/">PKM workflow</a>) due to its additional features of supported images, backlinks, graphs, and plugins specified for note-taking, such as <a target="_blank" href="https://brain.sspaeti.com/readwise">ReadWise</a> (syncing my highlight from books, and tweets), <a target="_blank" href="https://github.com/blacksmithgu/obsidian-dataview">Dataview</a> (using notes as a database), <a target="_blank" href="https://excalidraw.com/">Excalidraw</a> (drawing with Markdown format), Templates, and so on.</p>
<p>Nevertheless, I write more and more in Neovim. For now, I use <a target="_blank" href="https://github.com/folke/zen-mode.nvim">ZenMode</a> (for centering the text), Grammarly (for linting grammar), <a target="_blank" href="https://github.com/btford/write-good">write-good</a> (linting grammar), and specifically <a target="_blank" href="https://github.com/epwalsh/obsidian.nvim">Obsidian.nvim</a> (follow backlinks, and so on.). You find all details in my <a target="_blank" href="https://github.com/sspaeti/dotfiles">dotfiles</a>.</p>
<p>In Obsidian, I use the <a target="_blank" href="https://publish.obsidian.md/hub/04+-+Guides%2C+Workflows%2C+%26+Courses/for+Vim+users">Vim mode</a> Obsidian <a target="_blank" href="https://github.com/sspaeti/dotfiles/blob/master/obsidian/.vimrc">.vimrc</a> and map most <a target="_blank" href="https://github.com/sspaeti/dotfiles/tree/master/obsidian">hotkeys</a> to my Vim settings. At the same time, I've been writing more and more in Neovim and have been progressively moving over to full Neovim.</p>
<p>Plugins such as <a target="_blank" href="https://github.com/nvim-telescope/telescope.nvim">Telescope</a> and simple grep features that I use for coding work very well with Markdown. Here are some clips showing what is possible in an excellent talk about <a target="_blank" href="https://youtu.be/2ORWaIqyj7k">Writing, Editing, and World-Building at the speed of thought with Vim</a>.</p>
<h2 id="heading-why-you-should-learn-vim-too">Why You Should Learn Vim, Too</h2>
<p>When I heard about Vim, I thought that it was only for software engineers and Linux nerds 😅. I never thought I was going to use it as well. But how did I get into it?</p>
<p>I've already shared some reasons why I love Vim. But it really changed all my workflows, not only as a developer but also how I surf the internet, write, navigate, and use tools. I search for a Vim mode in any application I use.</p>
<p>But if you don't enjoy fiddling and optimizing your workflow, and if you don't write or code for a living, Vim might not be for you. Start with your current editor and activate the Vim mode before you do anything with Vim. It will save you <a target="_blank" href="https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/">a lot of frustration</a>, trust me 😅.</p>
<h2 id="heading-how-to-get-started-using-vim">How to Get Started Using Vim</h2>
<p>There are many good resources that'll help you get started with Vim. The easiest is to type <code>vimtutor</code> into your terminal, which is an interactive tutorial for Vim.</p>
<p>I've already linked a few YouTube videos above – especially check out ThePrimagen starting with <a target="_blank" href="https://youtu.be/X6AR2RMB5tE">Vim As Your Editor</a> or <a target="_blank" href="https://youtu.be/84qoMxS-iqQ">Why even bother with Vim or Neovim in 2022</a>.</p>
<p>I started with Ben Awads’s <a target="_blank" href="https://youtu.be/IiwGbcd8S7I">Vim tutorial</a> back then. An excellent <a target="_blank" href="https://youtu.be/a6Q8Na575qc">Lecture: Editors (Vim) (2020)</a>. <a target="_blank" href="https://youtu.be/wlR5gYd6um0">Mastering the Vim Language</a>. I also collect a small <a target="_blank" href="https://www.youtube.com/playlist?list=PLxGd5Sk9B7IZfFOxGWgg8XswEKZ6lEzmh">playlist</a> on YouTube with Vim content. A big inspiration also <a target="_blank" href="https://youtu.be/sSOfr2MtRU8">dev workflow using Tmux and Vim</a> from <a target="_blank" href="https://twitter.com/inkdrop_app?lang=en">Takuya</a>.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>We have learned that Vim is a powerful text editor popular among developers. It's based on shortcuts, called the Vim language, which can make coding and writing faster and more efficient.</p>
<p>With Vim, you can jump to any specific text position and rapidly make precise edits. While learning Vim can be challenging, it is well worth the effort in the long run as it will improve your productivity and bring joy to your coding experience.</p>
<p>If you want to go further, try <a target="_blank" href="https://github.com/tmux/tmux/wiki">Tmux</a>, which plays well with Vim. You could even go one level deeper, which is a dedicated keyboard layout such as <a target="_blank" href="https://en.wikipedia.org/wiki/Dvorak_keyboard_layout">Dvorak</a> or <a target="_blank" href="https://brain.sspaeti.com/halmak">Halmak</a> (which I started learning at some point). Or buy a fancy <a target="_blank" href="https://www.reddit.com/r/kinesisadvantage/comments/yplirr/im_also_part_of_the_team_kinesis_now/?utm_source=share&amp;utm_medium=web2x&amp;context=3">ergonomic keyboard</a> or <a target="_blank" href="https://bit.ly/sspaeti_keyboard">build one yourself</a>.</p>
<p>Thanks for reading this far. I hope you enjoyed this article. I'm looking forward to hearing your comments and experiences.</p>
<p><em>You can read more of my other tutorials at</em> <a target="_blank" href="https://www.sspaeti.com/blog/why-using-neovim-data-engineer-and-writer-2023/"><em>www.sspaeti.com</em></a><em>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Visual Studio vs Visual Studio Code – What's The Difference Between These IDE Code Editors? ]]>
                </title>
                <description>
                    <![CDATA[ The first time I heard about “Visual Studio”, I thought it was the same as “Visual Studio Code”. I don’t know why Microsoft decided to confuse everyone with the names of those two development tools. But that’s a story for another day. “Visual Studio”... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/visual-studio-vs-visual-studio-code/</link>
                <guid isPermaLink="false">66adf24611a28b6eb378d2cd</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ rich text editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ visual studio ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Kolade Chris ]]>
                </dc:creator>
                <pubDate>Tue, 31 Jan 2023 19:17:31 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/01/VSvVSC.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>The first time I heard about “Visual Studio”, I thought it was the same as “Visual Studio Code”. I don’t know why Microsoft decided to confuse everyone with the names of those two development tools. But that’s a story for another day.</p>
<p>“Visual Studio” and “Visual Studio Code” are not the same thing. Visual Studio is an integrated development environment (IDE) and Visual Studio Code is a rich text editor like Sublime Text and Atom.</p>
<p>But the difference between the tools is more than just IDE and text editor. </p>
<p>An IDE is a robust tool for writing, editing, debugging, and running your code. A text editor only lets you write and edit your code. You might have to step out of a text editor to run your code or download plugins to help it do the running for you.</p>
<p>In this article, you'll learn the main differences between Visual Studio and Visual Studio Code. But firstly, we need to know what “Visual Studio” is and what “Visual Studio Code is” before diving into those differences. </p>
<h2 id="heading-what-well-cover">What We'll Cover</h2>
<ul>
<li><a class="post-section-overview" href="#heading-what-is-visual-studio">What is Visual Studio?</a></li>
<li><a class="post-section-overview" href="#heading-what-is-visual-studio-code">What is Visual Studio Code?</a></li>
<li><a class="post-section-overview" href="#heading-what-is-the-difference-between-visual-studio-and-visual-studio-code">What is the Difference between “Visual Studio” and “Visual Studio Code”?</a></li>
<li><a class="post-section-overview" href="#heading-which-should-you-choose-between-visual-studio-and-visual-studio-code">Which should you Choose between “Visual Studio” and “Visual Studio Code”?</a></li>
<li><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></li>
</ul>
<h2 id="heading-what-is-visual-studio">What is Visual Studio?</h2>
<p>Visual Studio was first released in 1997 by Microsoft. It's an integrated development environment (IDE) for developing, editing, and debugging websites, web, and mobile applications as well as cloud services. </p>
<p>Because it's an IDE, programming utilities like a debugger, compiler, intellisence, and more are all bundled into it for you.</p>
<p>Visual Studio comes with built-in support for C# and .NET. It also supports other programming languages like C, C++, Python, F#, web languages (HTML, CSS, JavaScript), and a lot more. Support for Java was removed back in Visual Studio 2017.</p>
<p>Visual Studio runs on Windows and Mac. It has 3 editions – community, professional, and enterprise. The community version is free, while the professional and enterprise are not.</p>
<p>The installation is quite a bit more robust on Windows than Mac. So, on Windows, you might have to download more than 42 GB depending on what you want to do.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/Screenshot-2023-01-31-122422.png" alt="Screenshot-2023-01-31-122422" width="600" height="400" loading="lazy"></p>
<p>But on Mac, as of the time of writing this article, you need around 6.2 GB of disk space.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/01/Screenshot-2023-01-31-at-11.30.22.png" alt="Screenshot-2023-01-31-at-11.30.22" width="600" height="400" loading="lazy"> </p>
<h2 id="heading-what-is-visual-studio-code">What is Visual Studio Code?</h2>
<p>Visual Studio Code (also called VS Code) is like the mini version of Visual Studio. It is an open-source and lightweight text editor available on Windows, Mac, and Linux. There’s also the web version available at <code>https://vscode.dev/</code>.</p>
<p>VS Code comes with built-in support for JavaScript, TypeScript and Node JS, but you can use it to code in any language you want. All you need to do is download the relevant extensions. </p>
<p>Some of the extensions are made by Microsoft, but a lot of others are third-party extensions.</p>
<p>Unlike Visual Studio, you don’t need much space to download VS Code. You might not need more than 200 MB of disk space to download it. </p>
<p>Since it supports JavaScript, TypeScript, and Node JS by default, you get a debugger and intellisence, too. But to get intellisence, a compiler, and debuggers for other languages, you have to download relevant extensions.</p>
<p>Now you know that Visual Studio is an IDE and Visual Studio Code is a text editor. So let's summarize their main differences next.</p>
<h2 id="heading-what-is-the-difference-between-visual-studio-and-visual-studio-code">What is the Difference between “Visual Studio” and “Visual Studio Code”?</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Basis</strong></td><td><strong>Visual Studio</strong></td><td><strong>Visual Studio Code</strong></td></tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td><td>Visual Studio is a full-fledged IDE</td><td>VS Code is a text editor (AKA Code editor)</td></tr>
<tr>
<td><strong>Platform</strong></td><td>Visual Studio runs on Windows and Mac</td><td>VS Code runs on Windows, Mac, and Linux</td></tr>
<tr>
<td><strong>Size</strong></td><td>Visual Studio is relatively large. You might have to download more than 40 GB on Windows and over 6 GB on Mac</td><td>VS Code does not require more than 200 MB on any platform</td></tr>
<tr>
<td><strong>Support</strong></td><td>Visual Studio has built in support for C# and .NET, alongside several common languages apart from Java</td><td>VS Code supports JavaScript, Typescript, and Node JS out of the box. It also supports other programming languages – as long as there’s an extension(s) for that</td></tr>
<tr>
<td><strong>Pricing</strong></td><td>Visual Studio Community Edition is free, but the professional and enterprise editions code $45 and $250 per month respectively.</td><td>VS Code is free. Most of the extensions are also free but there are freemium ones</td></tr>
<tr>
<td><strong>Extensions</strong></td><td>Visual Studio does not have as many extensions as VS Code</td><td>VS Code has numerous professionally and curated extensions for various purposes</td></tr>
</tbody>
</table>
</div><h2 id="heading-which-should-you-choose-between-visual-studio-and-visual-studio-code">Which should you Choose between “Visual Studio” and “Visual Studio Code”?</h2>
<p>There has been a long-running debate about which is better and which to choose between Visual Studio and Visual Studio Code. Well, it depends on what you are doing.</p>
<p>If you’re developing exclusively with a language supported by Visual Studio such as C#, C, C++, Python, and others, Visual Studio or other relevant IDEs are likely the best option for you. </p>
<p>But even if you’re developing in those languages but you require a React, Vue, or Angular frontend, VS code might be the best option for you.</p>
<p>If you’re working in a team, they might provide you with the enterprise version of Visual Studio, or any other IDE that correlates with the language you are working with. For example, PyCharm for Python and IntelliJ Idea for Java.</p>
<p>If you’re using Linux, you have to choose Visual Studio Code or some other IDE apart from Visual Studio. That’s because Visual Studio does not run on Linux.</p>
<p>If you’re the kind of person that likes to customize your editor to your taste, just go for VS Code because it's highly customizable. You also should probably choose VS Code if you are mixing technologies.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>This article showed you the differences between Visual Studio and VS Code, and also what they both are separately.</p>
<p>The debate should never be which one is better than the other, but which is best for what you want to do, or what you need. That’s why we looked at some scenarios that might encourage you to choose one over the other.</p>
<p>Thank you for reading.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Save and Exit Nano in Terminal – Nano Quit Command ]]>
                </title>
                <description>
                    <![CDATA[ Nano is a command line-based code editor known for its simplicity compared to other editors like Vim and Emacs. But if you are new to Nano, performing basic operations like creating files, saving the file, and exiting the editor might be confusing.  ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-save-and-exit-nano-in-terminal-nano-quit-command/</link>
                <guid isPermaLink="false">66adf1437550d4f37c2019b1</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                    <category>
                        <![CDATA[ nano ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Kolade Chris ]]>
                </dc:creator>
                <pubDate>Tue, 26 Jul 2022 16:57:06 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/07/nano.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Nano is a command line-based code editor known for its simplicity compared to other editors like Vim and Emacs.</p>
<p>But if you are new to Nano, performing basic operations like creating files, saving the file, and exiting the editor might be confusing. </p>
<p>So, in this article, I want to show you how to save your code in Nano and exit it as well.</p>
<p>I’ll be using the Windows Subsystem for Linux (WSL) in this article. But it’s fine if you’re on Linux itself. The commands are the same.</p>
<h2 id="heading-what-well-cover">What We'll Cover</h2>
<ul>
<li><a class="post-section-overview" href="#heading-how-to-save-a-file-in-nano">How to Save a File in Nano</a></li>
<li><a class="post-section-overview" href="#heading-how-to-exit-nano">How to Exit Nano</a></li>
<li><a class="post-section-overview" href="#heading-wrapping-up">Wrapping Up</a></li>
</ul>
<h2 id="heading-how-to-save-a-file-in-nano">How to Save a File in Nano</h2>
<p><strong>Step 1</strong>: Open WSL, type “nano” and hit <code>ENTER</code> to get into the Nano code editor
<img src="https://www.freecodecamp.org/news/content/images/2022/07/ss1-4.png" alt="ss1-4" width="600" height="400" loading="lazy"> </p>
<p><strong>Step 2:</strong> Write your code in any language. In the screenshot below, I wrote some PHP.
<img src="https://www.freecodecamp.org/news/content/images/2022/07/ss2-5.png" alt="ss2-5" width="600" height="400" loading="lazy"> </p>
<p><strong>NB:</strong> If you don’t get syntax highlighting, enable it by pressing <code>ALT</code> + <code>4</code>. If you still don’t get syntax highlighting, then you need to save the file.</p>
<p><strong>Step 3:</strong> Press <code>CTRL</code> + <code>O</code> to save the file, type the file name, and hit <code>ENTER</code>.
<img src="https://www.freecodecamp.org/news/content/images/2022/07/ss3-4.png" alt="ss3-4" width="600" height="400" loading="lazy"> </p>
<p>Now, syntax highlighting is enabled:
<img src="https://www.freecodecamp.org/news/content/images/2022/07/ss4-4.png" alt="ss4-4" width="600" height="400" loading="lazy"> </p>
<p>If you already opened the file by typing <code>nano file_name</code> in WSL… </p>
<p>When you are done making your changes, press <code>CTRL + O</code> and hit <code>ENTER</code> to save the changes.
<img src="https://www.freecodecamp.org/news/content/images/2022/07/save-exit-nano.gif" alt="save-exit-nano" width="600" height="400" loading="lazy"> </p>
<h2 id="heading-how-to-exit-nano">How to Exit Nano</h2>
<p>To exit nano, all you need to do is to press <code>CTRL</code> + <code>X</code>.
<img src="https://www.freecodecamp.org/news/content/images/2022/07/ss5-5.png" alt="ss5-5" width="600" height="400" loading="lazy"> </p>
<p>If you have any changes that have not been saved, you’ll be prompted to save the changes before you quit the editor.
<img src="https://www.freecodecamp.org/news/content/images/2022/07/save-nano.gif" alt="save-nano" width="600" height="400" loading="lazy"></p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>I hope this article helped you learn how to save a file in Nano and exit the editor whenever you want to.</p>
<p>Don’t forget:</p>
<ul>
<li>Typing <code>nano</code> gets you into the Nano editor in WSL</li>
<li><code>CTRL</code> + <code>O</code> saves a Nano file</li>
<li><code>CTRL</code> + <code>X</code> exits Nano</li>
</ul>
<p>Thank you for reading. If you find the article helpful, don’t hesitate to share it with your friends and family.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Python IDE – Best IDEs and Editors for Python ]]>
                </title>
                <description>
                    <![CDATA[ Much of your experience as a developer will depend on what program you've chosen to write your code in. A good integrated development environment (IDE) or Code Editor can really boost your productivity. The problem with popular languages like Python ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/python-ide-best-ides-and-editors-for-python/</link>
                <guid isPermaLink="false">66b0ab472344be226f331c6c</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Farhan Hasin Chowdhury ]]>
                </dc:creator>
                <pubDate>Tue, 12 Apr 2022 19:28:47 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/Python-IDE---Best-IDEs-and-Editors-for-Python.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Much of your experience as a developer will depend on what program you've chosen to write your code in. A good integrated development environment (IDE) or Code Editor can really boost your productivity.</p>
<p>The problem with popular languages like Python is that every IDE or code editor under the sun seems to have good support for the language. While this can be great, choosing the best one becomes a bit tricky. </p>
<p>In this article I'll introduce you to three IDEs and code editors that can make your Python journey smoother.</p>
<p>But before I begin I want to clarify the fact that this is not an exhaustive list. Like I said, Python is one of the most popular programming languages so it's supported by a large number of code editors and IDEs. </p>
<p>I could've included as many of them as possible, but instead I chose to include the ones that I've used at some point in my life and don't mind going back to. Because I think this'll be more helpful.</p>
<p>Without any further ado, let's jump in!</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ul>
<li><a class="post-section-overview" href="#heading-ide-vs-code-editor-whats-the-difference">IDE vs Code Editor – What's the difference?</a></li>
<li><a class="post-section-overview" href="#heading-pycharm">PyCharm</a></li>
<li><a class="post-section-overview" href="#heading-microsoft-visual-studio-code">Microsoft Visual Studio Code</a></li>
<li><a class="post-section-overview" href="#heading-sublime-text">Sublime Text</a></li>
<li><a class="post-section-overview" href="#heading-conclusion">Conclusion</a></li>
</ul>
<h2 id="heading-ide-vs-code-editor-whats-the-difference">IDE vs Code Editor – What's the Difference?</h2>
<p>Before you start reading about the IDEs and Code Editors I have in store for you, let's clarify the definitions of an IDE and a Code Editor.</p>
<p>As you may already know, source code files are just text files with certain extensions appended to them. Any text editor that has some special feature such as syntax highlighting, automatic code indentation, and so on to make editing code files easier is called a code editor. </p>
<p>Popular code editors include Visual Studio Code, Sublime Text, Atom, Notepad++ and more.</p>
<p>An IDE or Integrated Development Environment, on the other hand, is a much more complex suite of software that combines multiple tools such as a code editor, a file browser, a terminal emulator, a database explorer and more in a single package. </p>
<p>Popular IDEs include PyCharm, IntelliJ Idea, Microsoft Visual Studio, and others.</p>
<p>But thanks to modern highly extensible code editors such as Microsoft Visual Studio Code, the line between an IDE and a Code Editor has started to fade away.</p>
<p>Now that you have a better idea of what an editor is compared to a full-blown IDE, let's look at some of the best for Python coding.</p>
<h2 id="heading-pycharm">PyCharm</h2>
<p>The first one in our list is an IDE from JetBrains. <a target="_blank" href="https://www.jetbrains.com/pycharm/">PyCharm</a> is one of the most used Python IDEs out there (if not the most used).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/complexLook@2x.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>https://www.jetbrains.com/pycharm/</em></p>
<p>The IDE has two editions. The professional edition will cost you $8.90 every month and $89.00 every year if billed yearly. There is also the community edition which is completely free and is built on open-source software. In this article I'll discuss the community edition.</p>
<p>Both editions are available for Windows, macOS, and Linux. You can download the 30 day trial of the professional edition or the community edition from the official <a target="_blank" href="https://www.jetbrains.com/pycharm/download/">download page</a>.</p>
<p>The installation process is pretty straightforward regardless of the platform you're on. Once you've downloaded and installed PyCharm on your computer, you should be able to start the IDE. You can use the start menu shortcut on Windows, the Applications directory on macOS, or your application launcher on Linux.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-17.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can create a new Python project by clicking on the <em>New Project</em> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-18.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the next step, choose where you'd like to store your project. You can either create a new virtual environment or use a previously configured interpreter. In this case, I'm creating a new environment.</p>
<p>If you check the <em>Create a main.py welcome script</em> option, a new Python file with some boilerplate code will be created inside your project. Once you're happy with all the choices, hit the <em>Create</em> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-19.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This is what the code editor looks like once the project has been created. On the left side you can browse all your source files, and you can hit the play button on the top right corner of the window to run the selected scripts in the dropdown.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/run-code-pycharm.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As you can see, PyCharm comes with a terminal built in on the bottom of the window and you can see outputs from your program without ever leaving PyCharm.</p>
<p>The community edition is quite complete and you can do more or less everything you can do on the professional edition. The professional edition has better support for web frameworks like Django and some other bells and whistles.</p>
<p>If you're a student, you can get PyCharm Professional Edition and all other JetBrains stuff for free <a target="_blank" href="https://www.jetbrains.com/community/education/#students">by applying on their website</a>. You can also get a free license of all the JetBrains products if you're <a target="_blank" href="https://www.jetbrains.com/community/opensource/">an open-source maintainer</a>.</p>
<h2 id="heading-microsoft-visual-studio-code">Microsoft Visual Studio Code</h2>
<p>Next in the list of my favorites is Microsoft Visual Studio Code or VSCode for short. It's an open-source, electron-powered, cross-platform code editor from Microsoft with a ton of customization options and extensions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-21.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>By installing the right set of extensions, you can turn Visual Studio Code into almost a fully-featured Python IDE. You can download VSCode for free from the <a target="_blank" href="https://code.visualstudio.com/#alt-downloads">official download site</a> for Windows, macOS, and Linux.</p>
<p>Once you've installed VSCode on your system, open the software and go to the extensions tab by hitting the <em>Ctrl + Shift + X</em> key combination.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-22.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Use the search bar to search for and install the following extensions:</p>
<ul>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.python">Python</a> – provides features such as IntelliSense (Pylance), linting, debugging, code navigation, code formatting, refactoring, variable explorer, test explorer, and more!</li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance">PyLance</a> – works alongside Python in Visual Studio Code to provide performant language support.</li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode">Visual Studio IntelliCode</a> – provides AI-assisted development features for Python, TypeScript/JavaScript and Java developers in Visual Studio Code.</li>
</ul>
<p>Once you have these three installed, you're good to go. Create a directory anywhere on your machine and open that folder using VSCode. You can use the integrated terminal to run your code or execute any command in general.</p>
<p>You can set breakpoints by clicking on the left side of any line number. Then you can hit <em>F5</em> to start debugging or <em>Ctrl + F5</em> to run the program without debugging. VSCode has a lot more tricks up its sleeve that you'll find out as you keep using it.</p>
<h2 id="heading-sublime-text">Sublime Text</h2>
<p>Sublime Text is one of the OG code editors that has been used by developers for years. It's a very performant, powerful code editor with rich support for packages.</p>
<p>You can download Sublime Text from their <a target="_blank" href="https://www.sublimetext.com/download">official download page</a> for Windows, macOS, and Linux. Once you have it installed, start Sublime Text like any other software.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-23.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now click on <em>Tools &gt; Install Package Control...</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-24.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This'll install the Sublime Package Manager. Wait until a success message shows up.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-25.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now go to Command Palette using the <em>Ctrl + Shift + P</em> key combination and type <em>Install Package</em>:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/image-26.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Select the first option and search for the <a target="_blank" href="https://packagecontrol.io/packages/Anaconda">Anaconda</a> package. This is the ultimate Python package that turns Sublime Text into a Python IDE with features like autocompletion, code linting, IDE features, autopep8 formating, McCabe complexity checker, Vagrant and Docker support, and more.</p>
<p>There are also more specific packages such as <a target="_blank" href="https://packagecontrol.io/packages/Djaneiro">Djaneiro</a> for Django support and <a target="_blank" href="https://packagecontrol.io/packages/requirementstxt">requirementstxt</a> for requirements.txt support on Sublime Text. Just look around the Package Control <a target="_blank" href="https://packagecontrol.io/browse">website</a> and you may find some pretty useful packages.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>As I've already said, this is not an exhaustive list of all the popular Python IDEs and Code Editors. I've also used <a target="_blank" href="https://www.spyder-ide.org/">Spyder</a> at a point in my life but decided to leave it off since it's targeted at scientists and engineers. </p>
<p>I've also used <a target="_blank" href="https://docs.python.org/3/library/idle.html">IDLE</a> for a brief period as well but it didn't seem like a strong enough option when it comes to larger projects. </p>
<p>If you think I've left out any other good one, let me know via <a target="_blank" href="https://twitter.com/frhnhsin">Twitter</a> or <a target="_blank" href="https://www.linkedin.com/in/farhanhasin/">LinkedIn</a>. Also, if you're native Bengali speaker, checkout freeCodeCamp's <a target="_blank" href="https://www.freecodecamp.org/bengali/news/">Bengali Publication</a> and <a target="_blank" href="https://www.youtube.com/channel/UCYl5XjGuTM1gbXUuxH1e0jA">YouTube Channel</a>. Till the next one, stay safe and keep learning.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Best Colorful VSCode Extensions – How to Personalize Your Editor ]]>
                </title>
                <description>
                    <![CDATA[ Engineers spend a good portion of their day writing code in their integrated development environment, or IDE for short. And Visual Studio Code is one of the best free IDE's on the market.  I find that personalizing my IDE helps me enjoy the time I sp... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/best-colorful-vscode-extensions-for-productivity/</link>
                <guid isPermaLink="false">66bc4ca273c9920bb20c0dff</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Natalie Pina ]]>
                </dc:creator>
                <pubDate>Tue, 12 Apr 2022 18:19:17 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/03/Cover.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Engineers spend a good portion of their day writing code in their integrated development environment, or IDE for short. And <a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a> is one of the best free IDE's on the market. </p>
<p>I find that personalizing my IDE helps me enjoy the time I spend using it more. I want to share that same spark of joy with you all, and have been searching for and testing out the best extensions to download. And many of these will help you be more productive.</p>
<p>This article goes beyond theming extensions, so I suggest picking out a theme first. Or try out my current favorite theme, <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=mathcale.theme-dracula-refined">Dracula Refined</a>. </p>
<h2 id="heading-indent-rainbow">Indent Rainbow</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">Indent Rainbow</a> is a great tool to add color and productivity to your setup. It can also help serve as an alignment check for your indentation. Each indentation is given an alternating rainbow color.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-4.26.13-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Indent Rainbow</em></p>
<h3 id="heading-bonus-indent-rainbow-palettes">Bonus: Indent Rainbow Palettes</h3>
<p>Want custom colors in your Indent Rainbow? Check out <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=evondev.indent-rainbow-palettes">Indent Rainbow Palettes</a> by Evondev.</p>
<p>After installing Indent Rainbow, install this extension and follow the outlined steps to select a new gradient palette.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-4.32.34-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Indent Palettes1</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-4.34.17-PM.png" alt="Image" width="600" height="400" loading="lazy">
<em>Indent Palettes2</em></p>
<h2 id="heading-bracket-pair-colorizer">Bracket Pair Colorizer</h2>
<p>This will add rainbow colors to brackets, and matching brackets will have the same color. This extension has saved me a number of times when looking for a missing or extra bracket. </p>
<p>The <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2">Bracket Pair Colorizer</a> is another popular extension with over 4 million installs.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/Screen-Shot-2022-03-25-at-5.15.51-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h4 id="heading-depreciation-notice-for-2022">Depreciation Notice for 2022</h4>
<p>This extension has recently become depreciated. This is because of upgrades to VSCode allowing for a bracket pair colorization setting. This can be toggled on with <code>"editor.bracketPairColorization.enabled": true</code> in your user settings. </p>
<p>The improved performance of this feature makes it a better choice, but if you'd prefer to not edit your user settings, I'd suggest looking for extensions that handle this for you such as Bracket Pair Colorizer or <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">Rainbow Brackets</a>.</p>
<h2 id="heading-colorize">Colorize</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=kamikillerto.vscode-colorize">Colorize</a> visualizes color variables by highlighting them with their color value. This is a handy timesaver for translating hex codes and variable names.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/demo_variables.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: Colorize</em></p>
<h2 id="heading-peacock">Peacock</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock">Peacock</a> provides optional window colors. It is great for managing multiple workspaces. It can be easy to forget which workspace you are in when jumping between similar windows, but not with the bright colors provided by Peacock. You can even <a target="_blank" href="https://papapeacockstorage.z13.web.core.windows.net/guide/#favorite-colors">customize workspace colors</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/hero.png" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: Peacock</em></p>
<h2 id="heading-vscode-icons">VSCode Icons</h2>
<p>Adding icons can help when navigating through your folders. <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons">VSCode Icons</a> has an extensive library of icons matching a variety of file types. </p>
<p>For example, you can easily see if you are selecting a TypeScript file or a JavaScript file based on the icon. It also adds an extra touch of color and detail to folder structures.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/screenshot.gif" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: vscode-icons</em></p>
<h2 id="heading-todo-highlight">TODO Highlight</h2>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">TODO Highlight</a> will customize your list of TODO comments and make them pop with color. It can be easy to overlook commented out code, but not with this extension, as it is difficult to overlook text that is bright orange. </p>
<p><code>TODO</code> and <code>FIXME</code> are built in keywords. You'll have the option to customize the color of these and add additional keywords.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/material-night-eighties.png" alt="Image" width="600" height="400" loading="lazy">
<em>Photo Credit: TODO Highlight</em></p>
<h2 id="heading-tldr">TL;DR</h2>
<p>Here is a condensed list of the extensions mentioned in this article.</p>
<ul>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">Indent Rainbow</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2">Bracket Pair Colorizer</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=kamikillerto.vscode-colorize">Colorize</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock">Peacock</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons">VSCode Icons</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight">TODO Highlight</a></li>
<li><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=mathcale.theme-dracula-refined">Dracula Refined Theme</a></li>
</ul>
<p>I hope these extensions will bring a rainbow of colors to your VSCode, too.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Best Webstorm Plugins for Effective Coding ]]>
                </title>
                <description>
                    <![CDATA[ As a software developer, I use a variety of plugins that make my life easier when it comes to avoiding mistakes and coding more efficiently. Whilst these time and effort saving techniques may seem negligible as a one off, when accumulated together th... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/best-webstorm-plugins-for-effective-coding/</link>
                <guid isPermaLink="false">66b0a8a486c4de28e18de04c</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ WebStorm ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ ania kubow ]]>
                </dc:creator>
                <pubDate>Mon, 28 Feb 2022 15:01:45 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/pexels-johannes-plenio-1118874.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>As a software developer, I use a variety of plugins that make my life easier when it comes to avoiding mistakes and coding more efficiently.</p>
<p>Whilst these time and effort saving techniques may seem negligible as a one off, when accumulated together they can really make a difference.</p>
<p>In this article, I am going to share with you my favourite WebStorm plugins for JavaScript developers and my reasons for why.</p>
<h2 id="heading-rainbow-brackets">Rainbow Brackets</h2>
<p>Because who hasn’t spent time trying to figure out which brackets belong to each other? When working on JavaScript projects I often nest brackets within each other, leading to something that looks like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/no-rainbow-brackets.png" alt="Image" width="600" height="400" loading="lazy">
<em>No Rainbow Brackets</em></p>
<p>It becomes very hard to track the scope of certain functions, especially when you want to delete some. </p>
<p>With rainbow brackets, you can see what is going on in your code visually, when it comes to scoping functions. </p>
<p>Rainbow brackets in fact doesn’t only work with brackets, but also with parenthesis, which makes things like mapping in React projects easy to pick out.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/rainbow-brackets.png" alt="Image" width="600" height="400" loading="lazy">
<em>Rainbow Brackets!</em></p>
<p>Read more about Rainbow Brackets <a target="_blank" href="https://plugins.jetbrains.com/plugin/10080-rainbow-brackets"><strong>here</strong></a>.</p>
<h2 id="heading-tabnine">Tabnine</h2>
<p>Tabine has been my favourite plugin for a while now. I enjoy using it for its accurate text completion that has quite literally predicted whole lines of code for me that I can choose to accept with a simple key press.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/tabnine-2.png" alt="Image" width="600" height="400" loading="lazy">
<em>Tabnine predicting code snippets based on my coding habits</em></p>
<p>It does this through its AI-driven predictive coding algorithms. When enabled, Tabnine actually learns from your coding habits and the projects you work on, so it can accurately predict what you are going to type next.  </p>
<p>I currently use Tabnine with my Webstorm IDE for JavaScript projects. But it is also available in over 30 languages and for 21 IDEs and code editors.</p>
<p>Read more about it <a target="_blank" href="https://www.tabnine.com/install/webstorm"><strong>here</strong></a>.</p>
<h2 id="heading-csv">CSV</h2>
<p>This is a cool one if you work with CSV files.</p>
<p>The CSV Plugin treated CSV, or ‘comma separated values’, as its own language in JetBrains IDEs. This means it has its own syntax definition, structured language elements and associated file types, such as .csv, .tsv and .psv. </p>
<p>Having this plugin allows us to treat it like we do with any other code in the editor, with mistakes being highlighted for us. Here is a full list of the support you will get:</p>
<ul>
<li>CSV/TSV/PSV file detection</li>
<li>flexible Table Editor</li>
<li>customisable text editor</li>
<li>customisable column colouring</li>
<li>customisable line comment</li>
<li>syntax validation</li>
<li>syntax highlighting (customisable)</li>
<li>content formatting (customisable)</li>
<li>quick fix inspections</li>
<li>intentions (Alt+Enter), for example Quote/Unquote (all), Shift Column Left/Right</li>
<li>structure view (header-entry layout)</li>
<li>support for ',', ';', ':', '|' and '↹' as pre-defined value separator</li>
<li>support for freely defined value separators</li>
<li>support for line comments (# per default, customisable)</li>
<li>highlight of active column values</li>
<li>tab (↹) separator highlighting</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/csv-webstorm.png" alt="Image" width="600" height="400" loading="lazy">
<em>How a .csv file looks when opened in Webstorm, with the CSV plugin.</em></p>
<p>Read more about CSV <strong>here.</strong></p>
<p>There is also Rainbow CSV, if you want to add some of that extra color in your life!</p>
<h2 id="heading-string-manipulation">String Manipulation</h2>
<p>The String Manipulation plugin allows you to instantly format strings with a variety of inbuilt options. </p>
<p>So for example, if you want to change a bunch of highlighted strings to camelCase, you can do it instantly. But this is just the tip of the iceberg. You can sort strings, filter them, or even sort them via case sensitivity! </p>
<p>This tool is a huge time saver when it comes to tidying up code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/before-string-manipulation.pbg.png" alt="Image" width="600" height="400" loading="lazy">
<em>Before String Manipulation</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/after-string-manipulation.png" alt="Image" width="600" height="400" loading="lazy">
<em>After String Manipulation! So neat and tidy in one click!</em></p>
<p>The list of capabilities is just too long, so instead of pasting them here, you can check them out over on the website <a target="_blank" href="https://plugins.jetbrains.com/plugin/2162-string-manipulation"><strong>here</strong></a><strong>.</strong></p>
<h2 id="heading-prettier">Prettier</h2>
<p>I have been using Prettier for the longest out of all the plugins mentioned, and sometimes forget about it as its so built into my everyday activities as a developer.</p>
<p>Prettier takes your code as you have written it, and provides a standardisation and consistency. Basically if everyone used Prettier then all our code would follow the exact same guidelines – yay for consistency!</p>
<p>It does this by not offering loads and loads of options to the user like ESLint. If you really want to, then you can change it, but that would really be defeating its purpose.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/before-prettier.png" alt="Image" width="600" height="400" loading="lazy">
<em>Before Prettier</em></p>
<p>Here you can see Prettier at work. It has taken some code, and made all of the lines of code under 60 characters in length. If a line goes over that, it gets put on a new separate line. It also adds semi-colons if you want, and makes sure that all quotation marks are consistent.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/after-prettier-1.png" alt="Image" width="600" height="400" loading="lazy">
<em>After Prettier</em></p>
<p>There, much ‘Prettier’! (geddit?)</p>
<p>Prettier is actually already bundled with WebStorm, so you don't even need to install it to use it.</p>
<h2 id="heading-code-with-me">Code with Me</h2>
<p>This is not so much a plugin as a regular feature of WebStorm now that it has been packaged up with <strong>version 2021.1</strong>, but worth a mention none the less.</p>
<p>Now with remote working being a regular thing in a lot of our lives, our need to be able to share code efficiently is now more important than ever.</p>
<p>I know this as I have spent a lot of time "screen-shot"-ting my screen and sending it over Slack when discussing with colleague developers. If only there was a tool where someone could literally see my screen AND edit my code...</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/code-with-me-webstorm.png" alt="Image" width="600" height="400" loading="lazy">
<em>Me using Code With Me</em></p>
<p>Well, that is what Code With Me does, with the added bonus of video calls.</p>
<p>You can choose who can edit your code that you are sharing. And if you are presenting to a big group call, and don't want anyone touching it, you can switch to a ‘read-only’ mode too.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/chat-webstorm.png" alt="Image" width="600" height="400" loading="lazy">
<em>Me showing the chat functionality of Code With Me</em></p>
<p>This feature is definitely a life saver when it comes to remote working. If you want to have more of a read on this feature, make sure to check out the link <a target="_blank" href="https://www.jetbrains.com/help/webstorm/code-with-me.html">here</a>.</p>
<p>Thanks for reading! I hope these plugins help you become more productive in your coding day-to-day.</p>
<figure><a class="kg-bookmark-container" href="https://www.youtube.com/channel/UC5DNytAJ6_FISueUfzZCVsw"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Code with Ania Kubów</div><div class="kg-bookmark-description">Hello everyone. This channel is run by Ania Kubow. In this channel, I will be teaching you JavaScript,React, HTML, CSS, React-native, Node.js and so much more! A little bit about me:My background is in the financial markets, where I worked as a derivates broker our of University. After starting m…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.youtube.com/s/desktop/6b151e52/img/favicon_144.png" width="144" height="144" alt="favicon_144" loading="lazy"><span class="kg-bookmark-publisher">YouTube</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://yt3.ggpht.com/ytc/AAUvwnjSRt8sIbeM7P--pHoUDh67sDhaNTCMF_XiNOCvUw=s900-c-k-c0x00ffffff-no-rj" width="900" height="900" alt="AAUvwnjSRt8sIbeM7P--pHoUDh67sDhaNTCMF_XiNOCvUw=s900-c-k-c0x00ffffff-no-rj" loading="lazy"></div></a></figure>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ The 5 Best Code Editors for Mac – MacOS Text Editor Guide ]]>
                </title>
                <description>
                    <![CDATA[ By Dillion Megida When you're coding, you're writing various text that can be executed by different language compilers. And what makes this text fun and easy to write are the editors that we use. Different editors have different features. But they ha... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-5-best-code-editors-for-mac-macos-text-editor-guide/</link>
                <guid isPermaLink="false">66d84f6063d2055c664a1a5d</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ macOS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ vim ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 28 Feb 2022 14:46:44 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/02/pexels-negative-space-169573.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Dillion Megida</p>
<p>When you're coding, you're writing various text that can be executed by different language compilers. And what makes this text fun and easy to write are the editors that we use.</p>
<p>Different editors have different features. But they have a common goal: making writing code easier – easier to compose, debug, and read.</p>
<p>In this article, we'll look at five code editors that can improve development on your Mac device.</p>
<h2 id="heading-1-sublime-text">1. Sublime Text</h2>
<p><a target="_blank" href="https://www.sublimetext.com/">Sublime Text</a> is a lightweight editor with many features for improving your code-writing experience. Here are some of its features:</p>
<h3 id="heading-multiple-view-panes">Multiple view panes</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-92.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://forum.sublimetext.com/t/follow-mode-for-sublime/5100/4">Multiple view panes</a></em></p>
<p>Sublime Text offers multiple view panes for writing code. This way, you can view multiple files at once. </p>
<p>What's more fun is you can open the same file in two panes. This feature can be helpful when you're writing code in a file with long lines of code, as you'll be able to scroll to the top in one pane and then write in the bottom of the other.</p>
<h3 id="heading-side-by-side-view-for-type-definitions">Side-by-side view for Type Definitions</h3>
<p>Instead of just viewing type definitions in a small popup or opening the definition file that overrides the current view, Sublime Text provides a side-by-side view of a definition file for the types in the current file.</p>
<h3 id="heading-multiple-selections">Multiple Selections</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-93.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://medium.com/sweetmeat/multi-line-selection-text-entry-with-sublime-text-77f226812324">Multi-Line Selection Text Entry with Sublime Text</a></em></p>
<p>There are two forms of multi-selections: multi-selecting the same characters or different characters.</p>
<h4 id="heading-same-character-selection">Same character selection</h4>
<p>Say you want to rename a literal (variable, function, and so on) in multiple places. Sublime Text allows you to highlight the literal, and using <code>Ctrl/Cmd D</code> you can select other occurrences of that literal and edit, replace, or do what you want.</p>
<h4 id="heading-different-characters-selection">Different characters selection</h4>
<p>Maybe some literals are spelled differently, but you want to highlight them together. Sublime allows you to use your mouse to highlight many things at once and operate on them as you choose.</p>
<h2 id="heading-2-vscode">2. VSCode</h2>
<p>The <a target="_blank" href="https://code.visualstudio.com/">VSCode</a> editor offers syntax light, <a target="_blank" href="https://code.visualstudio.com/docs/editor/intellisense#:~:text=IntelliSense%20is%20a%20general%20term,%2C%20and%20%22code%20hinting.%22">IntelliSense</a> features (autocompletes, code hinting, and more), custom configurations, and room for different plugins. VSCode also allows multiple selections and multiple view panes.</p>
<p>Here are more features of VSCode:</p>
<h3 id="heading-code-debugging">Code Debugging</h3>
<p>With VSCode, you do not need to debug on your browser or other tools.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-94.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://code.visualstudio.com/docs/editor/debugging">Debugging in Visual Studio Code</a></em></p>
<p>VSCode allows you to debug right from your editor using breakpoints, the call stack, and even an interactive console.</p>
<h3 id="heading-many-extensions-for-different-things">Many extensions for different things</h3>
<p>VSCode has a <a target="_blank" href="https://www.freecodecamp.org/news/p/fbff585a-bfcd-44e5-8a3a-024bb1eb2774/Extensions%20for%20Visual%20Studio%20family%20of%20products%20|%20Visual%20Studio%20Marketplace">large marketplace</a> for different languages, frameworks, and even your editor. You have extensions that beautify your editor's appearance and experience and tools that help with autocompletion when writing code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-95.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://code.visualstudio.com/docs/editor/extension-marketplace">Managing Extensions in Visual Studio Code</a></em></p>
<h3 id="heading-built-in-terminal">Built-in Terminal</h3>
<p>With VSCode, you have a a built-in shell terminal where you can execute commands without leaving your editor to go to a different terminal app. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-97.png" alt="Image" width="600" height="400" loading="lazy">
<em>The terminal view of VSCode</em></p>
<p>A small screen may make your editing view small and a bit inconvenient, but with a large monitor, for example, the view is just okay.</p>
<p>VSCode also has multiple view panes, character selection, and multiple character replacements.</p>
<h2 id="heading-3-atom">3. Atom</h2>
<p><a target="_blank" href="https://atom.io/">Atom</a> is a highly customizable code editor. This is why the team calls it a "hackable text editor". From the appearance and colors on the editor to the key combinations for commands and many other things, you can customize Atom as much as you wish and make it very personalized.</p>
<p>Here are some features:</p>
<h3 id="heading-real-time-code-collaboration">Real-time Code Collaboration</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-98.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://teletype.atom.io/">Teletype for Atom</a></em></p>
<p>Atom has a <a target="_blank" href="https://teletype.atom.io/">Teletyping</a> feature that allows multiple people to work on a codebase in real-time. This feature improves collaboration in a team workspace on projects. For VSCode, you'll usually need an extension for this.</p>
<h3 id="heading-git-integration">Git Integration</h3>
<p>With Atom, you never have to go to your terminal for your Git operations.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-99.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://github.atom.io/">GitHub for Atom</a></em></p>
<p>Git actions are integrated into Atom using the GitHub package, and this creates a smooth version control experience while you write code.</p>
<h3 id="heading-smart-autocompletion">Smart Autocompletion</h3>
<p>With many languages and syntaxes integrated into Atom, you also get a nice auto-completion feature while writing code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-100.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://flight-manual.atom.io/using-atom/sections/autocomplete/">Autocomplete (atom.io)</a></em></p>
<p>You don't have to type out those long method and variable names anymore. Atom's smart enough to help you avoid that 😉.</p>
<p>In Atom, you also have search and replace features, view panes, and more.</p>
<h2 id="heading-4-webstorm">4. WebStorm</h2>
<p><a target="_blank" href="https://www.jetbrains.com/webstorm/">WebStorm</a> calls itself "The Smartest JavaScript IDE". It takes a lot of confidence to call itself that, and WebStorm actually delivers. WebStorm makes writing JavaScript and its related technologies not just convenient but more enjoyable.</p>
<p>Some features include:</p>
<h3 id="heading-built-in-developer-tools">Built-in developer tools</h3>
<p>WebStorm takes the name "development editor" quite literally. From running scripts to breakpoints and general debugging, WebStorm provides developer tools that allow you to write, execute and debug your code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-101.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.jetbrains.com/webstorm/features/#integrated-developer-tools">WebStorm: Integrated Developer Tools</a></em></p>
<h3 id="heading-smart-features">Smart features</h3>
<p>This editor allows you to move files between folders seamlessly. It also helps you refactor your code and suggest fixes for errors. </p>
<p>And the most brilliant feature I love about it is that you can easily rename a specific variable across your application. Say you have a variable you've imported in many files – you can easily rename that variable from one of the files.</p>
<h3 id="heading-fast-search-and-navigation">Fast search and navigation</h3>
<p>Another fantastic feature of WebStorm, which people generally praise it for, is the fast file or folder search and navigation.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-102.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://www.jetbrains.com/webstorm/features/#navigation-and-search">WebStorm: Navigation and Search</a></em></p>
<p>From searching file names, class names, function names within files, and special selectors, you can easily find a file you're looking for.</p>
<p>There's also collaboration, view panes, search and replace in WebStorm.</p>
<h2 id="heading-5-vim">5. Vim</h2>
<p>And there's <a target="_blank" href="https://www.vim.org/">Vim</a>. It's worth noting that Vim is not for everyone, as it arguably has a steep learning curve – but Vim has many features that make it worth trying out. I have a friend who's never letting go of Vim and keeps advocating that people are missing out.</p>
<p>Here are some features:</p>
<h3 id="heading-high-customizability">High Customizability</h3>
<p>I mentioned earlier that Atom is highly customizable, but I don't think it's as flexible as Vim.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/02/image-103.png" alt="Image" width="600" height="400" loading="lazy">
<em><a target="_blank" href="https://github.com/fatih/subvim">Vim customized to be like SublimeText</a></em></p>
<p>Down to the low-level commands and feel of the editor, you can configure many things that makes using another editor very strange for you. You can also create scripts that automate things for you.</p>
<h3 id="heading-support-for-many-languages-and-file-formats">Support for Many Languages and File Formats</h3>
<p>Vim has support for many languages and files of different kinds. It also integrates with many tools.</p>
<h3 id="heading-powerful-search-feature">Powerful search feature</h3>
<p>With powerful selectors and regex, you can do multi-level file searches and replacements. With Vim's scripts, you can also get plugins that take the search features to another level.</p>
<p>Agreed, it's not very easy to learn. But it's pretty powerful and consumes less memory, surprisingly. It also has an extensive <a target="_blank" href="https://www.vim.org/scripts/script_search_results.php">script system</a> that gives you much power while writing code.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>There you have it - five code editors you can use to write cleaner, more readable code. I hope you find the one that best fits your needs!</p>
<p>Thanks for reading :)</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Create Your Own Custom Code Snippets Right in Your Code Editor ]]>
                </title>
                <description>
                    <![CDATA[ By Timonwa Akintokun A code Snippet is a programming term that refers to a small portion of re-usable source code, machine code, or text.  Snippets help programmers reduce the time it takes to type in repetitive information while coding. Code Snippet... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/create-your-own-custom-code-snippets/</link>
                <guid isPermaLink="false">66d4614ca326133d12440a8c</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ json ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Snippet ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 14 Jan 2022 18:46:57 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/01/20220114_210958_0000.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Timonwa Akintokun</p>
<p>A code Snippet is a programming term that refers to a small portion of re-usable source code, machine code, or text. </p>
<p>Snippets help programmers reduce the time it takes to type in repetitive information while coding. Code Snippets are a feature on most text editors, code editors, and IDEs.</p>
<p>In this tutorial, we're going to learn how to write our own custom snippets.</p>
<h2 id="heading-prerequisites">Prerequisites</h2>
<p>For this tutorial, I'll assume that you can write a decent amount of code in the language you want to create a code snippet for.</p>
<p>And with that confirmed...</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/gtL8MNgSES.gif" alt="lady saying lets get started" width="600" height="400" loading="lazy"></p>
<h2 id="heading-why-code-snippets-are-useful">Why Code Snippets are Useful</h2>
<p>When I first started learning how to code, the first code snippet I ever used was <strong>Ctrl + ! and enter</strong> to get an HTML5 document template. (I doubt anyone knows how to write that by heart.) It was cool and I felt like a code ninja. </p>
<p>(PS: if you don't want to read the back story and just wanna dive right into the tutorial, then <a class="post-section-overview" href="#creating-custom-code-snippets">jump right into it</a>.)</p>
<p>As I started exploring more into coding, I learned about VSCode extensions that made coding faster – code snippets in particular – and I then went on a downloading spree.</p>
<p>All was going fine and well until I started frequently using frameworks and libraries in my projects. This involved me trying to remember how to link my documents to their packages and also use personalized CSS resets and variables. </p>
<p>Plus I was always forgetting to link my stylesheets to my HTML pages, making me spend an unreasonable amount of time trying to figure out why my pages were not being styled correctly. (I still forget to do so now and then.)</p>
<p>That got me thinking about having my personalized HTML and CSS templates which would have all the base code I always used in my projects.</p>
<p>At first, I just created the templates and saved them on my system so I could copy the code any time I started a new project. But that also was getting stressful, and I wanted to just type in a few letters, press enter, and boom have my templates showing on my screen. And that was when I learned about VsCode Code Snippets.</p>
<p>I didn't know it was called code snippets at that time, so I spent over 2 weeks trying to find a tool that could help me do this and I almost gave up. Until I randomly stumbled on Brad Travesty's video on one of my daily evening wanderings on the streets of YouTube without actively searching for it.</p>
<p>It was a lifesaver, and every once in a while I add new custom snippets to my collection. You can check out my personalized HTML and CSS templates <a target="_blank" href="https://github.com/timonwa/my-templates.git">here</a>.</p>
<p>You've likely often wished that you had a custom snippet of a particular piece of code you use all the time but didn't know how to create or find it. Well, wish no more for I'm about to show you how to easily create your own.</p>
<h2 id="heading-how-to-create-custom-code-snippets">How to Create Custom Code Snippets</h2>
<p>Creating your own custom snippet is quite easy. And with the help of another tool called <strong>Snippet Generator</strong> (which I will show you how to use shortly), it becomes even easier.</p>
<h3 id="heading-step-1-check-if-your-editor-lets-you-create-custom-snippets">Step 1: Check if your editor lets you create custom snippets</h3>
<p>You can check the docs on your code editor to find out if the feature is available and how to access it. </p>
<p>I am using VsCode for this tutorial. You can download it <a target="_blank" href="https://code.visualstudio.com/download">here</a>.</p>
<p>To access this setting, you can either click on the <strong>settings icon</strong> on the sidebar and then click on <strong>user snippets</strong> or open up the command palette using Cntr + shift + p on Windows or CMD + shift + p on Mac, typing in "snippet" and clicking on <strong>Preferences: Configure User Snippets</strong>.</p>
<p>This will give you a drop-down with different language selections to choose from.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/video1-open-code-snippet.gif" alt="video1-open-code-snippet" width="600" height="400" loading="lazy"></p>
<h3 id="heading-step-2-decide-your-snippet-scope">Step 2: Decide your Snippet Scope</h3>
<p>You can either create a global snippet that you can use across all languages or create a local snippet scoped to a particular language.</p>
<p>So from the drop-down, you can see <strong>New Global Snippet File</strong> and then a bunch of languages in alphabetical order.</p>
<p>Scroll to the language you want to write your snippet for and click on it (or select <strong>New Global Snippet File</strong> if you want to use your snippets in multiple languages).</p>
<p>If you selected a particular language, HTML for example, the file will automatically open. But if you chose Global snippet, you'll be prompted to type in the name of the snippet file before it opens.</p>
<p>For this one, I'll be using a Global Snippet.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/video2-enter-snippet-name.gif" alt="video2-enter-snippet-name" width="600" height="400" loading="lazy"></p>
<h3 id="heading-step-3-understand-the-syntax">Step 3: Understand the Syntax</h3>
<p>The Syntax for code snippet is quite easy actually. It is written in JSON format and each file can contain an unlimited number of snippets.</p>
<pre><code class="lang-json">{
<span class="hljs-comment">// Code Snippet 1</span>
  <span class="hljs-attr">"Snippet name"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"language1, language2"</span> 
    <span class="hljs-string">"prefix"</span>: <span class="hljs-string">"trigger word 1"</span>,
    <span class="hljs-attr">"body"</span>: [<span class="hljs-string">"your code snippet"</span>],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">"description of the code"</span>
  },
<span class="hljs-comment">// Code Snippet 2</span>
  <span class="hljs-attr">"Snippet name"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"language1, language2"</span> 
    <span class="hljs-string">"prefix"</span>: [<span class="hljs-string">"trigger word 1, trigger word 2"</span>],
    <span class="hljs-attr">"body"</span>: [<span class="hljs-string">"your code snippet"</span>],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">"description of the code"</span>
  }
}
</code></pre>
<p>Let's see what's going on in this code:</p>
<h4 id="heading-snippet-name">Snippet Name</h4>
<p>The Snippet Name is the name of the snippet. It is also what will be displayed via IntelliSense if no description is provided.</p>
<h4 id="heading-scope">Scope</h4>
<p>This determines what languages are allowed to use the snippet. Enter the name of the language(s) separated by a comma. If you leave it empty or omit it, the snippet can be accessed by any language. This part is included in Global Snippets only, as Local Snippets files are already locally scoped. </p>
<h4 id="heading-prefix">Prefix</h4>
<p>This describes one or more trigger words that will prompt IntelliSense to display the snippet.</p>
<h4 id="heading-body">Body</h4>
<p>This can be a string if it is one-line code or an array of strings if it is multi-line code.</p>
<h4 id="heading-description">Description</h4>
<p>This describes the snippet and what it does. If this is omitted, the name of the snippet will be used instead.</p>
<p>Snippet example 1:</p>
<pre><code class="lang-json">{
<span class="hljs-comment">// log to console</span>
  <span class="hljs-attr">"Print to console"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"log"</span>,
    <span class="hljs-attr">"body"</span>: <span class="hljs-string">"console.log();"</span>,
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">"Log output to console"</span>
  }
}
</code></pre>
<p>From the above example, our snippet name is <strong>Print to console</strong>, and it can only be used in a <strong>JavaScript and TypeScript file</strong>. If you were to type <strong>log</strong> in a JavaScript or TypeScript file, IntelliSense would show it along with the description <strong>Log output to console</strong>. Once you select it and click enter, you'd see <strong>console.log()</strong> on the screen.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/video3-log.gif" alt="video3-log" width="600" height="400" loading="lazy"></p>
<h3 id="heading-step-4-add-tab-stops">Step 4: Add Tab Stops</h3>
<p>Tabstops allow you to move the editor cursor inside a snippet. $1, $2, ..., $n specify cursor locations it should move into sequentially when you hit the tab key. $0 represents the final position the cursor should stop.</p>
<p>Snippet example 2:</p>
<pre><code class="lang-json"><span class="hljs-comment">// named function</span>
{
  <span class="hljs-attr">"Named Function"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"nfn"</span>,
    <span class="hljs-attr">"body"</span>: [
      <span class="hljs-string">"function $1($2){"</span>,
      <span class="hljs-string">"  $0"</span>,
      <span class="hljs-string">"}"</span>
    ],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">""</span>
  }
}
</code></pre>
<p>In this example, when you type <strong>nfn</strong>, our Named Function snippet shows up. Once you select it, you'll see your snippet on the screen. You'll also see that the cursor is now before the parenthesis as opposed to being at the end of the code.</p>
<p>Type in the name of the function, "GetUsers" for example, and then hit the tab button. You will notice that the cursor has now moved into the parenthesis. </p>
<p>You can type in the parameter if it has one or and hit the tab key again to move the cursor to the next tab stop which is between the curly brackets where our function body will go.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/vide04-tabstop.gif" alt="vide04-tabstop" width="600" height="400" loading="lazy"></p>
<p>Note: When you are writing multi-line code, you cannot use a tab to indent your code in the JSON syntax. You can only use 2 spaces to indent your code, or whatever number of spacing indentation you use to write your code.</p>
<h3 id="heading-step-5-use-placeholders">Step 5: Use Placeholders</h3>
<p>These are Tab Stops with values. They help the user easily identify or understand what they are supposed to type at that particular tab stop. </p>
<p>The placeholder will be automatically highlighted so you can immediately type in what you want to replace it with.</p>
<p>Snippet example 3:</p>
<pre><code class="lang-json"><span class="hljs-comment">// named function</span>
{
  <span class="hljs-attr">"Named Function"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"nfn"</span>,
    <span class="hljs-attr">"body"</span>: [
      <span class="hljs-string">"function ${1:functionName}(${2:parameter}){"</span>,
      <span class="hljs-string">"  ${0:functionBody}"</span>,
      <span class="hljs-string">"}"</span>
    ],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">""</span>
  }
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/video5-placeholders.gif" alt="video5-placeholders" width="600" height="400" loading="lazy"></p>
<h3 id="heading-step-6-create-choices">Step 6: Create Choices</h3>
<p>Placeholders can have choices as values. This means that instead of typing in your value, you can choose from a dropdown selection.</p>
<p>To create one, you write the values which are separated by a comma between two pipe-characters, for example, ${1|one, two, three|}.</p>
<p>Snippet example 4:</p>
<pre><code class="lang-json"><span class="hljs-comment">// array method</span>
{
<span class="hljs-attr">"Array Method"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"arrmth"</span>,
    <span class="hljs-attr">"body"</span>: [
      <span class="hljs-string">"${1|forEach, map, filter, reduce|}((${2:item}) =&gt; {"</span>,
      <span class="hljs-string">"  $0"</span>,
      <span class="hljs-string">"})"</span>
    ],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">""</span>
  }
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/video6-choices.gif" alt="video6-choices" width="600" height="400" loading="lazy"></p>
<p>Here, once you type in <code>arrmth</code>, select it from IntelliSense and hit enter. The first tab stop will be a dropdown of array choices to select from. The next tab stop is the parameter and the last stop is the function code.</p>
<h2 id="heading-snippet-generators">Snippet Generators</h2>
<p>As your snippets begin to grow in lines and size, it becomes difficult to type and create them within your code editor. This is where a snippet generator comes in.</p>
<p>A snippet generator will take in your regular code and turn it into a code snippet.</p>
<p>I will be using <a target="_blank" href="https://snippet-generator.app/">Snippet Generator</a> for this tutorial. With this particular snippet generator, you can write code snippets for VsCode, Sublime Text, and Atom.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image1-snippet-generator.png" alt="image1-snippet-generator" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-use-the-snippet-generator">How to Use the Snippet Generator</h3>
<p>In the <strong>description</strong> input, enter the name of the code snippet which will be used as the name and description of the snippet.</p>
<p>In the <strong>tab trigger</strong> input, enter the prefix of your code snippet.</p>
<p>In the <strong>your snippet..</strong> input, enter your code in its natural form as you would without writing it as an array of strings.</p>
<p>After this, you can then add in Tabstops, Placeholders, and Choices as explained above.</p>
<p>Snippet example 5:</p>
<pre><code class="lang-js"><span class="hljs-comment">//named function</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">$</span></span>{<span class="hljs-number">1</span>:functionName}(${<span class="hljs-number">2</span>: parameter}) {
  ${<span class="hljs-number">0</span>:functionBody}
}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image2-arrow-function.png" alt="image2-arrow-function" width="600" height="400" loading="lazy"></p>
<p>Snippet example 6:</p>
<pre><code class="lang-js"><span class="hljs-comment">//array method</span>
${<span class="hljs-number">1</span>|forEach, map, filter, reduce,|}(<span class="hljs-function">(<span class="hljs-params">${<span class="hljs-number">2</span>:item}</span>) =&gt;</span> {
 $<span class="hljs-number">0</span>
)}
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image3-array-method.png" alt="image3-array-method" width="600" height="400" loading="lazy"></p>
<h2 id="heading-final-snippet-code">Final Snippet Code</h2>
<pre><code class="lang-json">{
  <span class="hljs-comment">// log to console</span>
  <span class="hljs-attr">"Print to console"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"log"</span>,
    <span class="hljs-attr">"body"</span>: <span class="hljs-string">"console.log();"</span>,
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">"Log output to console"</span>
  },
  <span class="hljs-comment">// named function</span>
  <span class="hljs-attr">"Named Function"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"nfn"</span>,
    <span class="hljs-attr">"body"</span>: [
      <span class="hljs-string">"function ${1:functionName}(${2:parameter}){"</span>,
      <span class="hljs-string">"  ${0:functionBody}"</span>,
      <span class="hljs-string">"}"</span>
    ],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">""</span>
  },
  <span class="hljs-comment">// array method</span>
  <span class="hljs-attr">"Array Method"</span>: {
    <span class="hljs-attr">"scope"</span>: <span class="hljs-string">"javascript, typescript"</span>,
    <span class="hljs-attr">"prefix"</span>: <span class="hljs-string">"arrmth"</span>,
    <span class="hljs-attr">"body"</span>: [
      <span class="hljs-string">"${1|forEach, map, filter, reduce|}((${2:item}) =&gt; {"</span>,
      <span class="hljs-string">"  $0"</span>,
      <span class="hljs-string">"})"</span>
    ],
    <span class="hljs-attr">"description"</span>: <span class="hljs-string">""</span>
  }
}
</code></pre>
<p>And that's it. Easy peasy lemon squeezy. </p>
<h2 id="heading-recap">Recap</h2>
<p>Let's do a recap. We have learned that:</p>
<ul>
<li>a code snippet is a small portion of re-usable source code, machine code, or text which helps programmers reduce the time it takes to type in repetitive codes while programming.</li>
<li>a code snippet file can contain an unlimited number of snippets.</li>
<li>you can have a locally scoped snippet used within only one language file or a globally scoped snippet used within two or more language files.</li>
<li>code snippets are written in JSON syntax.</li>
<li>you can add tabstops, placeholders, and choices to your code snippets.</li>
<li>you can also use a snippet generator to generate your snippets.</li>
</ul>
<p>Thank you for reading my article. You can connect with me on <a target="_blank" href="https://twitter.com/timonwa_">Twitter</a>, <a target="_blank" href="https://linkedIn.com/in/pelumi-akintokun">LinkedIn</a> or <a target="_blank" href="https://blog.timonwa.com">my Blog</a>. </p>
<p>I would love to know if you'll be creating your own custom snippets and what they might be. And do feel free to share this article with others who might find this useful too. Byeee!</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/HoDL1vbXj.gif" alt="Mr Beans waving goodbye" width="600" height="400" loading="lazy"></p>
<h2 id="heading-resources">Resources</h2>
<ul>
<li><a target="_blank" href="https://youtu.be/JIqk9UxgKEc">Brad's Custom Snippets video</a></li>
<li><a target="_blank" href="https://code.visualstudio.com/docs/editor/userdefinedsnippets">VsCode Snippet Documentation</a></li>
<li><a target="_blank" href="https://snippet-generator.app/">Snippet Generator</a></li>
<li><a target="_blank" href="https://github.com/timonwa/my-templates.git">View my Custom HTML and CSS Templates</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Open Visual Studio Code From Your Terminal ]]>
                </title>
                <description>
                    <![CDATA[ By Madison Kanna In this tutorial, we'll go over how you can open the VS Code text editor (Visual Studio Code) from your Mac terminal.  Opening your text editor from your terminal is a quick, easy way to open up new projects and begin coding faster. ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-open-visual-studio-code-from-your-terminal/</link>
                <guid isPermaLink="false">66d8518ae0db794d56c01beb</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Visual Studio Code ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 04 Jan 2022 21:13:11 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/01/code.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Madison Kanna</p>
<p>In this tutorial, we'll go over how you can open the VS Code text editor (Visual Studio Code) from your Mac terminal. </p>
<p>Opening your text editor from your terminal is a quick, easy way to open up new projects and begin coding faster. </p>
<h2 id="heading-how-to-download-and-open-vs-code">How to Download and Open VS Code</h2>
<p>The first thing you'll need to do is open up VS Code. If you don't have VS Code yet, you can download it <a target="_blank" href="https://code.visualstudio.com/">here</a>. VS Code is a popular text editor created by Microsoft. </p>
<p>Once you have VS Code open, it should look like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Next, run <code>Command + Shift + P</code>. </p>
<p>Now you should see this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>What we've done here is opened up the VS Code command palette. This will allow you to customize your VS Code settings, among other things.</p>
<p>Next, into the command palette type <code>shell</code> and hit <code>enter</code>. When you type <code>shell</code>, your editor should look like this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you hit enter, voilà! You're all done. You should now see a success message:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-3.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now you can open VS Code from your terminal. Let's do this now.</p>
<h2 id="heading-how-to-open-vs-code-from-the-terminal">How to Open VS Code from the Terminal</h2>
<p>First, open up your terminal. You can open your terminal in a few ways. One way of opening your terminal is hitting the <code>command</code> button and the <code>spacebar</code> at the same time. This opens spotlight search. From here, you can type "terminal". </p>
<p>Once your terminal is open, you can open VS Code from it by typing <code>$ code .</code> Then hit <code>enter</code>.</p>
<p>Here's how this should look: </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/01/image-4.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you hit <code>enter</code>, VS Code will now open. </p>
<p>And there you have it! Happy coding. :)</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use Replit – A Beginner's Guide ]]>
                </title>
                <description>
                    <![CDATA[ Replit is a popular free online IDE that you can use to create your projects with very little setup. This editor supports over 50 languages and many programming courses use it, including freeCodeCamp.  In this article, I will show you how to get star... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-replit/</link>
                <guid isPermaLink="false">66b8d9b798b552b8a8592b2b</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ ide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Thu, 04 Nov 2021 15:08:02 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.30.00-AM.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><a target="_blank" href="https://replit.com/">Replit</a> is a popular free online IDE that you can use to create your projects with very little setup. This editor supports over 50 languages and many programming courses use it, including <a target="_blank" href="https://www.freecodecamp.org/learn">freeCodeCamp</a>. </p>
<p>In this article, I will show you how to get started with Replit and show you how to use a lot of the basic features. </p>
<p>Here is a list of topics discussed in the article:</p>
<ul>
<li><a class="post-section-overview" href="#heading-how-to-create-a-free-replit-account">How to create a free Replit account</a></li>
<li><a class="post-section-overview" href="#heading-what-is-a-repl-and-how-do-you-create-one">What is a Repl and how do you create one?</a></li>
<li><a class="post-section-overview" href="#heading-basic-features-of-the-replit-editor">Basic features of the Replit edito</a>r</li>
<li><a class="post-section-overview" href="#heading-replit-files-and-folders">Replit files and folders</a></li>
<li><a class="post-section-overview" href="#heading-version-control-in-replit">Version control in Replit</a></li>
<li><a class="post-section-overview" href="#heading-replit-debugger">Replit Debugger</a></li>
<li><a class="post-section-overview" href="#heading-how-to-install-packages-in-replit">How to install packages in Replit</a></li>
<li><a class="post-section-overview" href="#heading-secrets-environment-variables-in-replit">Secrets(Environment Variables) in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-customize-replit-settings">How to customize Replit settings</a></li>
<li><a class="post-section-overview" href="#heading-replit-database">Replit Database</a></li>
<li><a class="post-section-overview" href="#heading-how-to-add-unit-tests-in-replit">How to add Unit Tests in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-use-the-run-button-in-replit">How to use the run button in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-clear-the-console-in-replit">How to clear the console in Replit</a></li>
<li><a class="post-section-overview" href="#heading-what-is-the-replit-shell-console">What is the Replit shell console?</a></li>
<li><a class="post-section-overview" href="#heading-how-to-add-a-custom-domain-in-replit">How to add a custom domain in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-publish-your-project-in-replit">How to publish your project in Replit</a></li>
<li><a class="post-section-overview" href="#heading-how-to-share-replit-project-urls">How to share Replit project URLs</a></li>
<li><a class="post-section-overview" href="#heading-how-to-invite-others-to-edit-your-repls">How to invite others to edit your repls</a></li>
<li><a class="post-section-overview" href="#heading-what-is-included-with-the-replit-paid-subscription">What is included with the Replit paid subscription?</a></li>
</ul>
<h2 id="heading-how-to-create-a-free-replit-account">How to create a free Replit account</h2>
<p>To get started, you will first need to go to the <a target="_blank" href="https://replit.com/">Replit homepage</a>. In the top right hand corner, click on <a target="_blank" href="https://replit.com/signup?from=landing">Sign Up</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.37.09-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can create an account with your own username, email, and password. Or you can create an account using your Google, Facebook, or GitHub account.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.38.16-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you are logged in, then it should take you to your account homepage.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.39.37-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-is-a-repl-and-how-do-you-create-one">What is a Repl and how do you create one?</h2>
<p>Repl stands for read-eval-print loop and it is an interactive programming environment for developers to create small projects.</p>
<p>In Replit, there are three places where you can create a new repl.</p>
<p>One way is to click on the <code>Create Repl</code> button located at the top left hand corner of the homepage.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.55.53-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also create a repl by clicking on the <code>+</code> icon under the Create section.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.12.35-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The last option is the click on the <code>+</code> icon located at the upper right hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.19.31-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can choose from one of Replit's many templates including Python, Node, Java, HTML &amp; CSS, Ruby, and more. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.58.45-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you choose your language, pick a name for your project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-11.59.58-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>For the free version of Replit, you are not allowed to create private projects. If you want a private repl, then you will need to upgrade to the paid subscription.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.01.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you are done naming your repl, click on the blue <code>Create Repl</code> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.02.50-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you should be taken to the editor.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.03.49-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-basic-features-of-the-replit-editor">Basic features of the Replit editor</h2>
<p>In this section, I will go over some of the basic features you can use in the Replit editor. These features include a debugger, files and folders, version control, unit tests, and more. </p>
<h3 id="heading-replit-files-and-folders">Replit Files and Folders</h3>
<p>In the upper left hand corner, you can click on the file icon to add files and folders to your project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.20.09-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To add a file, click on the Add file icon.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.21.17-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To add a folder, click on the Add folder icon.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.22.01-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to upload files or folders from your computer, click on the three vertical dots icon.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.23.15-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.23.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to delete files or folders, then click on the three dots icon located next to the file you want to delete. Then from there, choose the delete option.</p>
<p>You can also right click on the file and you should see the list of options.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.07.43-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-version-control-in-replit">Version control in Replit</h3>
<p>You also have the ability to connect to your GitHub account and create a repository for this project. At the time of this writing, this feature is currently in beta. </p>
<p>First click on the version control icon on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.27.30-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You should then see an option to connect to your GitHub account.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.28.20-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will be prompted to grant Replit permission to create new repositories on GitHub.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.29.18-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Enter in your login information for GitHub.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.30.32-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you have multiple accounts linked to your profile, choose the account where you want to install Replit.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.31.44-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will then need to authorize Replit to install.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.33.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>After you Install and Authorize Replit, you should be directed back to the Replit editor.</p>
<p>Now all of our changes will be tracked and we can push those changes to GitHub. Write a short commit message and click on the <code>Commit &amp; push button</code>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.37.15-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You should see all of your commit messages in the version control panel.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.38.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the <code>Connect to GitHub</code> button so you can create a new repository.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.39.59-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can add a description for the repo and then click on the <code>Create GitHub repository</code> button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.41.02-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once it is created, you should see the name of the repository in the version control panel.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.42.00-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also see your new repository in GitHub.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.42.39-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-replit-debugger">Replit Debugger</h3>
<p>The Replit editor has a debugger tool, where you can walk through your code step by step to see what is happening and fix errors. This is also a Beta feature. </p>
<p>You can find this feature on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.47.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.47.37-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-install-packages-in-replit">How to install packages in Replit</h3>
<p>You can also install different packages into your projects like <code>morgan</code>, <code>express</code> or <code>cors</code> using the Packages panel on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.51.02-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Search for the package that you want to use and click on the <code>+</code> icon to install it into your project.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.52.16-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Inside the console, which is located on the right hand side of the screen, you should see the package being installed. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.53.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-secrets-environment-variables-in-replit">Secrets (Environment variables) in Replit</h3>
<p>Replit no longer supports creating <code>.env</code> files.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.57.28-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Instead, you will have to use the Secrets tab to store your environment variables. You can find this Secrets icon on the left hand side of the editor page. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-12.59.07-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will write the name of your key in the Key input field and write the value in the value input field. Then click on Add new secret.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.02.36-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p> Then you should see your newly created environment variable in the Secrets tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.03.59-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to edit that variable, hover your mouse over the variable name and click on the pencil icon. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.05.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.05.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now you should be able to use that environment variable inside your code.</p>
<h3 id="heading-how-to-customize-replit-settings">How to customize Replit settings</h3>
<p>If you need to customize the editor settings for your project, click on the settings icon on the left hand side of the editor page..</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.07.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.08.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-replit-database">Replit Database</h3>
<p>If you want to use Replit's key-value storage, then click on the Database icon on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.10.38-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.13.40-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>To learn more about how to use the Replit Database, please visit the <a target="_blank" href="https://docs.replit.com/hosting/database-faq">documentation</a>.</p>
<h3 id="heading-how-to-add-unit-tests-in-replit">How to add unit tests in Replit</h3>
<p>If you need to add Unit tests to your project, click on the Unit tests icon on the left hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.15.35-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the Add test button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.17.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can create your Unit tests by providing a name, the code, and a failure message. Click save when you are done.</p>
<p>This is a screenshot using the Replit example unit tests for adding two numbers:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.19.47-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the Run tests button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.46.37-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Inside the console, you will see the tests running with the results.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.47.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-use-the-run-button-in-replit">How to use the Run button in Replit</h3>
<p>If you want to start the server for your project, then click on the green Run button located at the top of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.53.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>When you click on the Run button then you should see the results of your code in the preview window and console located on the right hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.57.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-clear-the-console-in-replit">How to clear the console in Replit</h3>
<p>If you need to clear out the console, then click on the <code>x</code> icon located at the right hand side of the console window. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.59.38-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-what-is-the-replit-shell-console">What is the Replit Shell console?</h3>
<p>If you need to type in commands, such as removing or adding folders, then you can use the Shell console.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.05.23-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-add-a-custom-domain-in-replit">How to add a custom domain in Replit</h3>
<p>In the preview editor, you can add a custom domain for your project. Click on the pencil icon next to the preview URL.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.21.46-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can add your custom domain and CNAME information:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.23.42-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-how-to-publish-your-project-in-replit">How to publish your project in Replit</h3>
<p>Once you are finished creating your project, then you can publish it and have it displayed in the collection of Replit Apps.</p>
<p>First click on the name of the project, which is located in the top left hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.24.52-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you can provide a short description of the project and click on Publish.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.26.19-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will then have the option to provide a description, cover image, and tag information. When you are finished, click on the publish button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.28.01-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.28.58-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to publish an update, then you can click on your project and then click on Publish update.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.24.52-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.33.18-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to unpublish your project, click on the three dots icon to the right of the publish page and choose the unpublish option.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.34.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.34.41-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.34.53-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-share-replit-project-urls">How to share Replit project URLs</h2>
<p>If you want to share your project URL, you will first need to click on green Run button followed by the Open in new tab button located in the preview window.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-1.53.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.38.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then you should see your page in a new tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.39.09-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to share your URL which contains the editor and preview window, use the link found in the top of the browser.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.40.21-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you visit the link, you should see this result:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-2.41.44-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need help on a project and want other developers to see your code and files, then you share that browser link. Others won't be able to see your environment variables when you share your project. </p>
<h2 id="heading-how-to-invite-others-to-edit-your-repls">How to invite others to edit your repls</h2>
<p>Replit has a feature where you can invite other developers to join your project and edit the code. </p>
<p>First, click on the Invite button located at the top right hand side of the editor page.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.08.24-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the search field, you can add users from replit or add the email addresses of those you want to invite.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.10.39-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then click on the blue Invite button to send invites for users.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.11.16-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will see that their invitation is pending.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.13.20-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also send out a join link to the user you want to add to the project. Click on the <code>Generate a join link</code> button located at the bottom.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.13.56-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.16.06-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you need to remove invited users, then click on the <code>x</code> icon located next to their name.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.16.50-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-is-included-with-the-replit-paid-subscription">What is included with the Replit paid subscription?</h2>
<p>The Hacker paid subscription level comes with more memory, storage, speed and private repls.</p>
<p>The Teams paid subscription level comes with educational projects for students and teachers to work with.</p>
<p>To learn more, please visit <a target="_blank" href="https://replit.com/site/pricing">Replit's pricing page</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/11/Screen-Shot-2021-11-03-at-3.50.22-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I hope you enjoyed this Replit starter guide and best of luck on your developer journey.  </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Use CodePen – A Beginner's Guide ]]>
                </title>
                <description>
                    <![CDATA[ CodePen is a popular online code editor used by many developers around the world. It is also one of the recommended editors you can use for the freeCodeCamp curriculum. CodePen is only for frontend projects and supports HTML, CSS, and JavaScript. If ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-codepen/</link>
                <guid isPermaLink="false">66b8d9b2eb5fc71c855edb40</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Web Development ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Mon, 01 Nov 2021 15:47:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/03/homepage-codepen.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p><a target="_blank" href="https://codepen.io/">CodePen</a> is a popular online code editor used by many developers around the world. It is also one of the recommended editors you can use for the <a target="_blank" href="https://www.freecodecamp.org/learn">freeCodeCamp curriculum.</a></p>
<p>CodePen is only for frontend projects and supports HTML, CSS, and JavaScript. If you need to build a project with a backend component, then you will need to use a different editor. </p>
<p>In this article, I will discuss the following:</p>
<ul>
<li><a class="post-section-overview" href="#heading-how-to-sign-up-for-a-free-account">How to sign up for a free account</a> </li>
<li><a class="post-section-overview" href="#heading-differences-between-pens-and-projects">Differences between Pens and Projects</a></li>
<li><a class="post-section-overview" href="#heading-basic-features-of-the-pen-editor">Basic Features of the Pen Editor</a></li>
<li><a class="post-section-overview" href="#heading-how-to-fork-a-pen">How to fork a Pen</a></li>
<li><a class="post-section-overview" href="#heading-how-to-add-preprocessors-and-packages-to-a-pen">How to add preprocessors and packages to a Pen</a></li>
<li><a class="post-section-overview" href="#heading-basic-features-of-the-project-editor">Basic Features of the Project Editor</a> </li>
<li><a class="post-section-overview" href="#heading-what-do-you-get-with-the-paid-subscriptions">What do you get with the paid subscriptions?</a></li>
<li><a class="post-section-overview" href="#heading-what-are-codepen-challenges">What are CodePen challenges?</a></li>
</ul>
<h2 id="heading-how-to-sign-up-for-a-free-account">How to sign up for a free account</h2>
<p>When you visit the <a target="_blank" href="https://codepen.io">CodePen</a> website, you will be able to login with the following options:</p>
<ul>
<li>Twitter account</li>
<li>Facebook account</li>
<li>GitHub account</li>
</ul>
<p>You can also signup with an email address where you will create a username and password. </p>
<p>Once you create the account, you should receive an email from CodePen. Open up that message and verify your email address.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/email-from-codepen.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-differences-between-pens-and-projects">Differences between Pens and Projects</h2>
<h3 id="heading-pens">Pens</h3>
<p>After verifying your email address, you should be taken straight to the Pen editor. If the editor does not show up, then you can click on Pen located on the left hand side of the homepage. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-29-at-11.49.12-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>A Pen editor is broken up into three sections of HTML, CSS and JavaScript. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/pen-editor.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This editor does not support multiple HTML, CSS and JavaScript files. Pens are great for smaller scale creations.  </p>
<p>If you are looking to write more than 5,000 lines of code then you should consider a project instead. </p>
<p>With the free account, you can have as many Pens as you like. </p>
<h3 id="heading-projects">Projects</h3>
<p>If you want to create a project, then click on Project, which is located at the top left hand corner of the home page. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-29-at-11.50.29-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>A project editor supports multiple HTML, CSS, and JavaScript files. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/project-editor.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>With the free account, you can only have one project and 10 files. If you are interested in creating more projects, you will need to upgrade to the Pro account.  </p>
<h2 id="heading-basic-features-of-the-pen-editor">Basic Features of the Pen Editor</h2>
<h3 id="heading-formatting-options">Formatting Options</h3>
<p>If you click on the dropdown arrow on any of the three editors, you will see an option to format your code. </p>
<p>This is a helpful tool to ensure that your code is properly formatted and readable by other developers. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/before-format.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/after-format.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also go to the Behavior section of Pen Settings, and choose the Format on Save option.  </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/pen-settings.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/format-on-save-2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-analyze-option">Analyze option</h3>
<p>If you click on the dropdown arrow on any of the three editors, you will see an option to Analyze your code. </p>
<p>This is a tool that will help you find and fix errors in your code. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/analyze-before-option.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/analyze-after-option.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-viewing-options">Viewing Options</h3>
<p>If you click on Change View, then you can customize the editor layout or switch between the different view options.  </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/view-options.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-using-the-console">Using the console</h3>
<p>Located at the bottom left hand corner of the Pen is the console. This is a helpful tool for debugging your code. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-29-at-11.56.20-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/03/console.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-adding-links-for-the-head-section-html">Adding links for the head section (HTML)</h3>
<p>When you are creating your Pens, you do not have to include the <code>DOCTYPE</code>, <code>html</code>, <code>head</code>, or <code>body</code> tags. All of that information is already built into the editor.</p>
<p>If you need to add links for the head section such as Font Awesome icons or Google Fonts, then you can add those in the head section of the HTML settings.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.01.52-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-adding-css-libraries-and-frameworks">Adding CSS libraries and frameworks</h3>
<p>CodePen has an option in the settings to add CSS libraries and frameworks to your Pens. Some of the libraries and frameworks include Bootstrap, Tailwind CSS, and Bulma. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.05.47-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-adding-javascript-libraries-and-frameworks">Adding JavaScript libraries and frameworks</h3>
<p>In the JavaScript settings, you can add popular libraries and frameworks such as React, Angular, and Vue to your Pens.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.42.49-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-sharing-your-pens-on-social-media">Sharing your Pens on Social Media</h3>
<p>If you want to share your Pens on various blogs and social media sites, then you can click on the Share button located at the bottom right hand corner. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.32.00-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-export-pens">Export Pens</h3>
<p>If you want to download your work to your computer, then you can use the Export button located at the bottom right hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.33.45-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This will create a folder of all your files.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.35.37-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-embed-pens-into-blogs-and-articles">Embed Pens into blogs and articles</h3>
<p>If you want to show code examples in your blog posts, then you can embed your CodePen creation in the page using the Embed button. This is located at the bottom right hand corner. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.40.10-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.40.28-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-fork-a-pen">How to fork a Pen</h2>
<p>To fork a Pen means to create a copy of that Pen. When you fork it, you will have access to all of the code and will be able to modify it to your liking.</p>
<p>First go to the Pen you are interested in forking. Then click on the fork button located at the bottom right hand corner. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.36.47-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Once you fork the Pen, then it will create a copy for your CodePen account. Make sure to hit the save button and you can start modifying the code from there.</p>
<h2 id="heading-how-to-add-preprocessors-and-packages-to-a-pen">How to add preprocessors and packages to a Pen</h2>
<p>In CodePen, you have the option to add HTML, CSS, or JavaScript preprocessors as well as NPM packages to your Pens. </p>
<p>In the HTML settings, you can choose from Haml, Markdown, Slim or Pug.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.46.00-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the CSS settings, you can choose from Less, SCSS, Sass, Stylus or PostCSS. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.46.40-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In the JavaScript settings, you can choose from Babel, TypeScript, CoffeeScript or LiveScript.  </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-12.49.01-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also add NPM packages such as react-bootstrap to your Pens.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.03.50-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-basic-features-of-the-project-editor">Basic Features of the Project Editor</h2>
<p>If you are working on a project that needs multiple files, then you should consider using the Project editor instead of the Pen editor. For the free account, you are allowed one project. </p>
<h3 id="heading-templates">Templates</h3>
<p>There are a few template options for HTML and CSS projects as well as React projects.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.12.17-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you choose to upgrade to the paid subscription, then you will have access to the Tailwind CSS and Bootstrap templates. </p>
<h3 id="heading-files-and-directory">Files and Directory</h3>
<p>To add a new file or folder, click on the buttons located at the bottom left hand corner. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.18.36-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.19.13-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can also upload files from your computer using the drag and drop feature located right above the New File button.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.21.31-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.22.29-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can add a total of 10 files to your project. If you need to add more files, then you will have to upgrade to one of the paid packages. </p>
<h3 id="heading-sharing-projects">Sharing projects</h3>
<p>If you want to share your completed project on social media or blogging platforms, then you can click on the Share button located on the bottom right hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.26.35-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-exporting-projects">Exporting projects</h3>
<p>You can also export your project files and download them to your computer, using the Export button located on the bottom right hand corner.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.28.18-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-do-you-get-with-the-paid-subscriptions">What do you get with the paid subscriptions?</h2>
<p>The paid subscription plans offer more CodePen features such as Collab mode, Asset hosting, more templates, and custom domains. </p>
<p>To learn more about the different paid subscription plans, please visit the <a target="_blank" href="https://codepen.io/features/pro">CodePen PRO page</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.52.42-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-are-codepen-challenges">What are CodePen challenges?</h2>
<p>If you want to practice your frontend skills, then you can participate in the <a target="_blank" href="https://codepen.io/challenges">monthly challenges</a>. Each month will have a theme, and you will practice skills with a new challenge each week. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.55.29-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You will also have access to the previous monthly challenges. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screen-Shot-2021-10-30-at-1.56.26-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>I hope you enjoyed this article and best of luck on your frontend developer journey. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML File Text Editor – How to Open Web Page Code in Windows Notepad ]]>
                </title>
                <description>
                    <![CDATA[ Notepad is a built-in text editor that comes pre-installed on Windows machines of all versions – XP, Windows 7, Windows 8, Windows 10, and so on. It is the default Windows text editor. You can think of Notepad as your VS Code or favorite text editor ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/html-file-text-editor-how-to-open-web-page-code-in-windows-notepad/</link>
                <guid isPermaLink="false">66adf165db5636c0b30cba85</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Windows ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Kolade Chris ]]>
                </dc:creator>
                <pubDate>Thu, 16 Sep 2021 15:08:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/notepad.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Notepad is a built-in text editor that comes pre-installed on Windows machines of all versions – XP, Windows 7, Windows 8, Windows 10, and so on.</p>
<p>It is the default Windows text editor. You can think of Notepad as your VS Code or favorite text editor with fewer capabilities. </p>
<p>Coding with Notepad is great for beginners, because you have no access to syntax highlighting, formatting, and other such automated features. </p>
<p>Without these aides, you'll learn attention to detail, perseverance, resilience, and how to format your code yourself, before you start coding with other text editors like VS Code, Sublime Text, or Atom.</p>
<p>So, in this article, I will walk you through how to use Windows Notepad, and how to open any web page code with it by making a simple website with HTML, a little bit of CSS, and JavaScript.</p>
<h2 id="heading-how-to-code-a-simple-website-in-notepad">How to Code a Simple Website in Notepad</h2>
<p>You can use Notepad to code in two ways: launch Notepad directly from your Windows machine and start coding and then save the code later, or create the file and open it with Notepad.</p>
<p>In this tutorial, I will focus on the second method, so I’m going to create the files first, then open them with Notepad.</p>
<p><strong>Step</strong> 1: Create a folder anywhere on your computer 
<strong>Step 2</strong>: On the main menu section of the folder, click on the "View" tab and make sure "file name extensions" is ticked. This will give you access to creating a file and specifying the extension as well.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/file-extension_LI.jpg" alt="file-extension_LI" width="600" height="400" loading="lazy"></p>
<p><strong>Step 3</strong>: Inside the folder, create an HTML file called <code>index.html</code>, a CSS file called <code>styles.css</code>, and a JavaScript file called <code>app.js</code>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/file-creation.png" alt="file-creation" width="600" height="400" loading="lazy"></p>
<p>These names are due to convention. You can name the files whatever you want if you don’t want to follow the conventions.</p>
<p><strong>Step 4</strong>: Right-click on the <code>index.html</code> and hover on the “open with” option. This will show apps with which you can open the file. Choose Notepad.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/file-openinig.jpg" alt="file-openinig" width="600" height="400" loading="lazy"></p>
<p>By default, the index.html file will be opened by your default browser, so make sure you don’t double-click the file.</p>
<p>If Notepad is not shown within the options, click “Choose another app”, select “More apps” in the next popup, and you will see Notepad within the apps listed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/file-opening-alternative.jpg" alt="file-opening-alternative" width="600" height="400" loading="lazy"></p>
<p>Now, you should have opened the HTML file with Notepad. You will see something like this (if you get things right):</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/blank-notepad.png" alt="blank-notepad" width="600" height="400" loading="lazy"></p>
<p><strong>Step 5</strong>: Paste in the following HTML Code:</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span> /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span> /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Notepad Website<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"page-heading"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>This is heading 1<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>This is heading 2<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>This is heading 3<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h4</span>&gt;</span>This is heading 4<span class="hljs-tag">&lt;/<span class="hljs-name">h4</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h5</span>&gt;</span>This is heading 5<span class="hljs-tag">&lt;/<span class="hljs-name">h5</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>This is heading 6<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
      This is a paragraph with some placeholder texts: Lorem ipsum dolor sit
      amet, consectetur adipisicing elit. Beatae, mollitia quo quasi voluptatum
      quam soluta debitis praesentium molestias nam magnam aperiam deserunt eos
      modi odit incidunt ut vitae cum maiores.
    <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>This is a bolded sentence<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-name">br</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">em</span>&gt;</span>This is an italicised text<span class="hljs-tag">&lt;/<span class="hljs-name">em</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
      This is a link to <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://freecodecamp.org"</span>&gt;</span>freeCodeCamp<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>, a
      platform where you can learn to code for free
    <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Below is freeCodeCamp logo:<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
      <span class="hljs-attr">src</span>=<span class="hljs-string">"https://popsql.com/static/external-logos/freecodecamp.png"</span>
      <span class="hljs-attr">alt</span>=<span class="hljs-string">"freecodecamp-logo"</span>
    /&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>Your Notepad app should now be filled with code:
<img src="https://www.freecodecamp.org/news/content/images/2021/09/html-notepad-1.png" alt="html-notepad-1" width="600" height="400" loading="lazy"></p>
<p>Save the file by pressing Ctrl + S, or go to File and click “Save”.</p>
<p>If your code isn't indented like mine, don’t worry. Notepad doesn’t do it for you automatically, so you have to do it manually.</p>
<p><strong>Step 6</strong>: Now the HTML file is ready. Go back to the folder in which you created the HTML, CSS, and JavaScript files in Step 3. Double-click the HTML file to open it in your default browser.</p>
<p>The website should now look like this:
<img src="https://www.freecodecamp.org/news/content/images/2021/09/html-page-1.png" alt="html-page-1" width="600" height="400" loading="lazy"></p>
<p>Open the CSS file you created in <strong>Step 3</strong> and paste in the following code: </p>
<pre><code class="lang-css"><span class="hljs-selector-class">.page-heading</span> {
  <span class="hljs-attribute">color</span>: <span class="hljs-number">#2ecc71</span>;
}
</code></pre>
<p>If you reload the page, you will see there are no changes. Don’t worry at all. This is because the <code>h1</code> tag with the class of <code>page-heading</code> in the HTML file is empty.</p>
<p>Now, you can insert some text into that <code>h1</code> tag dynamically with JavaScript.</p>
<p>Open the JavaScript file created in <strong>Step 3</strong> and paste in the following code: </p>
<pre><code class="lang-js"><span class="hljs-keyword">const</span> pageHeadingText = <span class="hljs-string">"This is a Simple Website coded with Windows Notepad"</span>;
<span class="hljs-keyword">const</span> pageHeading = <span class="hljs-built_in">document</span>.querySelector(<span class="hljs-string">".page-heading"</span>);

pageHeading.innerHTML = pageHeadingText;
</code></pre>
<p>What is the JavaScript code above doing?</p>
<p>I declared a variable called <code>pageHeadingText</code> and set it to a string, <code>“This is a Simple Website coded with Windows Notepad”</code>.</p>
<p>I declared another variable called <code>pageHeading</code> to select the empty h1 tag in the HTML. I did this with the DOM (Document Object Model) <code>querySelector</code> method.</p>
<p>In the third line of the JavaScript code, I used the DOM’s <code>innerHTML</code> method to set the text content of the <code>h1</code> to the value of the <code>pageHeadingText</code> variable, which I set to <code>“This is a Simple Website coded with Windows Notepad”</code>.</p>
<p>Now, go back to the website and reload it. There’s still no difference. Don’t worry once again. This is because you have to link the CSS and JavaScript files. </p>
<p>To link the CSS file, paste the following code in the head section of the HTML: </p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"styles.css"</span> /&gt;</span>
</code></pre>
<p>To link the JavaScript file, paste in the code below right before the closing body tag in the HTML: </p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"app.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></pre>
<p>The HTML file should now have the CSS and JavaScript files linked like this: </p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span> /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span> /&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Notepad Website<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>

    <span class="hljs-comment">&lt;!-- CSS Link --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"stylesheet"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"styles.css"</span> /&gt;</span>

  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"page-heading"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>This is heading 1<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h2</span>&gt;</span>This is heading 2<span class="hljs-tag">&lt;/<span class="hljs-name">h2</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>This is heading 3<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h4</span>&gt;</span>This is heading 4<span class="hljs-tag">&lt;/<span class="hljs-name">h4</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h5</span>&gt;</span>This is heading 5<span class="hljs-tag">&lt;/<span class="hljs-name">h5</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h6</span>&gt;</span>This is heading 6<span class="hljs-tag">&lt;/<span class="hljs-name">h6</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
      This is a paragraph with some placeholder texts: Lorem ipsum dolor sit
      amet, consectetur adipisicing elit. Beatae, mollitia quo quasi voluptatum
      quam soluta debitis praesentium molestias nam magnam aperiam deserunt eos
      modi odit incidunt ut vitae cum maiores.
    <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">strong</span>&gt;</span>This is a bolded sentence<span class="hljs-tag">&lt;/<span class="hljs-name">strong</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">em</span>&gt;</span>This is an italicised text<span class="hljs-tag">&lt;/<span class="hljs-name">em</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
      This is a link to <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://freecodecamp.org"</span>&gt;</span>freeCodeCamp<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>, a
      platform where you can learn to code for free
    <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Below is freeCodeCamp logo:<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">img</span>
      <span class="hljs-attr">src</span>=<span class="hljs-string">"https://popsql.com/static/external-logos/freecodecamp.png"</span>
      <span class="hljs-attr">alt</span>=<span class="hljs-string">"freecodecamp-logo"</span>
    /&gt;</span>

    <span class="hljs-comment">&lt;!-- JavaScript Link --&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"app.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>

  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>If you now reload the page, you should see a difference:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/html-page-2.png" alt="html-page-2" width="600" height="400" loading="lazy"></p>
<p>The code in the CSS and JavaScript files is now working.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>The Windows Notepad is a text editor just like S Code, Atom, Sublime Text, and others. It just does not have the features of other more advanced text editors like syntax highlighting, text formatting, built-in terminal, and so on. But it still performs all the functions of a text editor as you can code in any programming language with it.</p>
<p>To get more comfortable coding, you can download and install a more feature-rich text editor like VS Code (it's free!). It gives you syntax highlighting, text formatting, and pretty much any functionality you want through a rich library of extensions available in the VS Code marketplace. </p>
<p>Apart from VS Code, other text editors you can use are Atom, Sublime Text, Vim, and Notepad++, a hybrid version of Windows Notepad.</p>
<p>Thank you for reading this article. If you find it helpful, share it with your friends and family.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Web Page Text Editor – How to Open HTML Code in Mac TextEdit ]]>
                </title>
                <description>
                    <![CDATA[ In this article, I will show how to create, open, and edit HTML files in TextEdit.  What is TextEdit? TextEdit is a free word processor that comes preinstalled with your Mac computer. It has been around for over 25 years and it is an easy way to open... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/web-page-text-editor-how-to-open-html-code-in-mac-textedit/</link>
                <guid isPermaLink="false">66b8da5aeb5c4db85a0b3442</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ how-to ]]>
                    </category>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Wed, 15 Sep 2021 22:29:38 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/09/vipul-jha-a4X1cdC1QAc-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>In this article, I will show how to create, open, and edit HTML files in TextEdit. </p>
<h2 id="heading-what-is-textedit">What is TextEdit?</h2>
<p>TextEdit is a free word processor that comes preinstalled with your Mac computer. It has been around for over 25 years and it is an easy way to open and read word files, text files and even HTML files. </p>
<h2 id="heading-how-to-create-an-html-file-in-textedit">How to create an HTML file in TextEdit</h2>
<ol>
<li>Go to Finder &gt; Applications &gt; TextEdit. Double click on TextEdit to open. </li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-7.14.26-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="2">
<li>Click on Format and click Make Plain Text.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.07.01-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="3">
<li>Add a basic <a target="_blank" href="https://www.freecodecamp.org/news/basic-html5-template-boilerplate-code-example/">HTML boilerplate</a> to your file. </li>
</ol>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">http-equiv</span>=<span class="hljs-string">"X-UA-Compatible"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"ie=edge"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>TextEdit Demo<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>This is a demo<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<ol start="4">
<li><p>Go to File &gt; Save...</p>
</li>
<li><p>Name your file with the <code>.html</code> extension. That will tell the computer it is working with an HTML file. Click Save.</p>
</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.12.32-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="6">
<li>Click on Use .html</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.13.58-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Go to that newly created file on your computer and double click to open in the browser. You should see this result:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.26.53-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-open-html-documents-in-textedit">How to open HTML documents in TextEdit</h2>
<p>There are two ways to open an HTML file in TextEdit. </p>
<h3 id="heading-option-1">Option 1</h3>
<p>Go to the HTML file you want to open, right click on the file, and choose TextEdit to open. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-7.41.10-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h3 id="heading-option-2">Option 2</h3>
<p>Open TextEdit and click File &gt; Open...  You can also hover your mouse over the Open Recent option if you have opened that file recently. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-7.46.38-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-textedits-code-editing-mode">TextEdit's code editing mode</h2>
<p>There is an option in TextEdit to always display your HTML files as HTML code.</p>
<ol>
<li>Click on TextEdit &gt; Preferences...</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.37.38-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="2">
<li>Click on Open and Save:</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.38.21-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="3">
<li>Click the checkbox that says Display HTML files as HTML code instead of formatted text:</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.38.47-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Now you can make changes to your HTML file and see the results in the browser.</p>
<pre><code class="lang-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-meta-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"viewport"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"width=device-width, initial-scale=1.0"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">http-equiv</span>=<span class="hljs-string">"X-UA-Compatible"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"ie=edge"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>TextEdit Demo<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>This is a demo<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>Adding more to my demo file<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/09/Screen-Shot-2021-09-15-at-8.42.45-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>That is how you create, save, open and edit HTML files in TextEdit. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ JavaScript Online – HTML, CSS, and JS Code Editor List [Browser IDE Tools] ]]>
                </title>
                <description>
                    <![CDATA[ There are many benefits to coding in an online IDE or code editor. With these tools you don't need to set anything up locally, you can easily share your work, and they are often free to use. In this article, you'll learn what a code editor and an IDE... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/javascript-online-html-css-js-code-editor-list-browser-ide-tools/</link>
                <guid isPermaLink="false">66b8d9dbe2451f91d8154425</guid>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Integrated Development Environment   ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Thu, 12 Aug 2021 19:31:16 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/08/nubelson-fernandes-CO6r5hbt1jg-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>There are many benefits to coding in an online IDE or code editor. With these tools you don't need to set anything up locally, you can easily share your work, and they are often free to use.</p>
<p>In this article, you'll learn what a code editor and an IDE are. Then I will also share 7 online editors and IDE's that work best with HTML, CSS, and JavaScript. </p>
<h2 id="heading-what-is-a-code-editor">What is a Code Editor?</h2>
<p>A code editor is a tool that is designed to write and edit code. Popular offline code editors include Visual Studio Code, Atom, Brackets, and Sublime Text. </p>
<p>Code editors make it possible for web developers to write programs that will run on the web. Code editors are helpful especially because they highlight syntax errors and provide automatic code indentation, code completion, and other useful features. </p>
<h2 id="heading-what-is-an-ide">What is an IDE?</h2>
<p>IDE stands for integrated development environment. You can use this tool as a compiler, editor, and debugger – so it's much more involved than a basic code editor.</p>
<p>A compiler is a program that takes the code you write and translates it into something machines can read. A debugger is a tool that allows you to step through your code line by line and identify issues (bugs) so you can fix them. </p>
<h2 id="heading-why-choose-an-online-editor-over-a-local-editor">Why Choose an Online Editor Over a Local Editor?</h2>
<p>When is it a good time to choose an online editor over your local environment like Visual Studio Code?</p>
<p>There may be times where you just want to share a quick working example on Stack Overflow and using a free online editor is a quicker solution than building it locally. </p>
<p>Or maybe you want to share a small working example of a new feature for documentation? It would be easier to place your code into an online editor and share the URL than go through the trouble of deploying the project from your local device. </p>
<p>Now that you know what code editors and IDEs are, let's discuss some of the most popular ones out there at the moment.</p>
<h2 id="heading-codesandbox">CodeSandbox</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-10.27.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://codesandbox.io/">CodeSandbox</a> is an online IDE and code editor that makes it easy for developers to create and share their projects.  </p>
<p>Once you create a free account, you can start coding by choosing one of the templates that comes with all the starter files and boilerplate code.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-10.35.08-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You can add any files and dependencies you need to on the left hand side and see your results in the preview window on the right. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-10.37.29-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to share your work, you can copy the URL address or deploy your production app to <a target="_blank" href="https://www.netlify.com/">Netlify</a> or <a target="_blank" href="https://vercel.com/">Vercel</a>. </p>
<p>If you are interested in additional features like private NPM packages, sandboxes and GitHub repositories, then you will need to signup for the paid membership. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.47.16-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-replit">Replit</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-10.57.30-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://replit.com/">Replit</a> is an online IDE that makes it easy to start building and sharing your web creations. Once you login into your free account, you can choose your language and create a new repl. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.00.36-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Replit gives you the option to add files, packages, and unit tests to your projects. If you want to share your projects, then copy the link right above the preview window on the right hand side.  </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.04.44-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to collaborate with other developers, you can invite them into your repl and code synchronously. You can also chat in real time with the other developers through the chat function on the bottom left hand corner of the screen. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.08.39-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you are interested in features like private repls and additional storage, then you will need to sign up for the paid membership. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.45.36-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-stackblitz">StackBlitz</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.13.05-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://stackblitz.com/">StackBlitz</a> is an online code editor that makes it easy for developers to create and deploy front end, back end and full stack applications. Login using your GitHub account, and choose from one of the templates. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.15.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>StackBlitz allows you to create dozens of files, add packages, and connect to your exiting GitHub repositories. You can also share your project using the URL located above the preview window on the right hand side. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.21.02-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to deploy a production version of your application, you can deploy it using <a target="_blank" href="https://firebase.google.com/">Firebase</a>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.20.46-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you are interested in additional features like unlimited private projects and file uploads, then you will need to sign up for one of the paid accounts. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.44.10-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-codepen">Codepen</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.23.35-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://codepen.io/">Codepen</a> is an online editor where you can create and share small frontend creations. With a free account, you can create unlimited pens and one project. </p>
<p>Pens are small creations that contain one HTML editor, one CSS editor, and one JavaScript editor. Pens do not support multiple files. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.32.50-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Pens come with formatting and analyzing tools to check for syntax errors. You can also use CSS and JavaScript preprocessors, add packages, and add external scripts. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.35.37-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>The free account allows you to create one project with a limit of ten files. If you want to create more projects, then you will need to sign up for Codepen PRO. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-10-at-11.42.14-PM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-jsfiddle">JSFiddle</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.07.52-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://jsfiddle.net/">JSFiddle</a> is an online IDE that allows you to build and share your front end code snippets. This tool supports over a dozen JavaScript libraries and frameworks as well as CSS preprocessors like Sass. </p>
<p>You can also build projects with other developers and correspond over chat by choosing the collaborate option. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.15.08-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>JSFiddle is great to use when you need to provide code snippets for Stack Overflow answers, or to use as a demo for documentation. </p>
<h2 id="heading-glitch">Glitch</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.24.08-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://glitch.com/">Glitch</a> is an online code editor that makes it easy to create and share your front end, back end and full stack applications. You can signup for free and get started with one of the templates. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.26.48-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Glitch provides many helpful tools including a formatting tool, a terminal, an option to export your projects to GitHub, and an option to add custom domains. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.31.13-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>You also have the option to share your work or invite other developers to build alongside you by clicking the share option located at the top left hand corner. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.33.45-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you are interested in additional features like private projects, then you will need to signup for the paid membership. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-12.34.56-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-playcode">PLAYCODE</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-1.00.31-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://playcode.io/">PLAYCODE</a> is an online code editor that makes it easy to create and share front end projects. PLAYCODE supports TypeScript, React, CoffeeScript, jQuery, Sass, Less, and more.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-1.06.09-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you want to share your project, then you can find the shareable links in the top left hand corner of the editor. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-1.12.21-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you are interested in additional features including private projects and custom URLs then you can signup for a paid membership. </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-11-at-1.14.13-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>There are many benefits for choosing an online IDE or code editor. You don't have to worry about downloading any software and you can share your project very easily in a matter of minutes.</p>
<p>A lot of developers will use these tools if they need to share code snippets for Stack Overflow answers, create a demo project for documentation, or share ideas with other developers. </p>
<p>I hope you enjoyed this article. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why You Should Use EditorConfig to Standardize Code Styles ]]>
                </title>
                <description>
                    <![CDATA[ You use EditorConfig to define formatting conventions for textual files in a project. It's great because it's widely supported, and it's not tied to any particular language, framework, or code editor. EditorConfig on its own is just a vendor-agnostic... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-use-editorconfig-to-standardize-code-styles/</link>
                <guid isPermaLink="false">66d460f2d1ffc3d3eb89de58</guid>
                
                    <category>
                        <![CDATA[ automation ]]>
                    </category>
                
                    <category>
                        <![CDATA[ configuration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ configuring settings ]]>
                    </category>
                
                    <category>
                        <![CDATA[ editor ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Seth Falco ]]>
                </dc:creator>
                <pubDate>Wed, 21 Jul 2021 21:28:55 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/07/untitled.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>You use <a target="_blank" href="https://editorconfig.org/">EditorConfig</a> to define formatting conventions for textual files in a project. It's great because it's widely supported, and it's not tied to any particular language, framework, or code editor.</p>
<p>EditorConfig on its own is just a vendor-agnostic configuration file. It relies on third-party tools or integrations to implement support for the rules declared in the file.</p>
<p>They can be read by IDEs (Integrated Development Environments), code editors, or build tools to enforce or apply formatting conventions.</p>
<h2 id="heading-what-does-editorconfig-solve">What Does EditorConfig Solve?</h2>
<p>Users usually configure the code style settings in an editor to <em>their</em> preferences. Unfortunately, their preferences probably don't correlate with yours.</p>
<p>What happens when they're contributing to a shared project? This might be a project at work, or an open-source project on GitLab or GitHub.</p>
<p>The user's style settings get applied to the files they modify. This can result in projects feeling inconsistent or messy, with some or all of the following issues:</p>
<ul>
<li><p>Mixed use of tabs and spaces.</p>
</li>
<li><p>Mixed use of line endings. (Usually not a significant issue with <a target="_blank" href="https://git-scm.com/">Git</a>.)</p>
</li>
<li><p>Files may not have the desired character encoding.</p>
</li>
<li><p>Various indentation sizes across files.</p>
</li>
</ul>
<p>Without consistency, the code can appear untidy and be a pain to read, depending on a user's development environment.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/3.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p><a target="_blank" href="https://github.com/eclipse/eclipse.jdt.ls/blob/master/org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/EventNotification.java?ts=8"><em>eclipse.jdt.ls</em></a> <em>mixes tabs and spaces, here's how it looks on GitHub with a tab size of 8.</em></p>
<p>A common solution is to share editor settings as part of the project, but this assumes all committers are using the same editor as you, which probably isn't the case.</p>
<p>For Java development alone, the following are all popular choices:</p>
<ul>
<li><p><a target="_blank" href="https://code.visualstudio.com/">Visual Studio Code</a> (What I use!)</p>
</li>
<li><p><a target="_blank" href="https://www.eclipse.org/">Eclipse</a></p>
</li>
<li><p><a target="_blank" href="https://www.jetbrains.com/idea/">IntelliJ</a></p>
</li>
<li><p><a target="_blank" href="https://netbeans.apache.org/">NetBeans</a></p>
</li>
</ul>
<p>You'll bloat your project with unrelated files if you add the configuration for every editor someone might use.</p>
<p>So, how about a vendor-agnostic solution where editors are responsible for utilizing a shared configuration instead?</p>
<h2 id="heading-how-editorconfig-helps">How EditorConfig Helps</h2>
<p>Defining conventions helps everyone throughout a project's life-cycle. There are namely three ways it saves time.</p>
<h3 id="heading-editorconfig-makes-code-more-readable">EditorConfig Makes Code More Readable</h3>
<p>Making code more readable is by far the most important reason to use it. This improves the maintainability of the project, and the speed that people can work.</p>
<blockquote>
<p>“Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code… Therefore, making it easy to read makes it easier to write.”<br>― Robert C. Martin</p>
</blockquote>
<p>There are many other reasons someone might be reading the code outside of development too:</p>
<ul>
<li><p>Researchers that need to better understand how the project works.</p>
</li>
<li><p>Security analysts that are checking for vulnerabilities.</p>
</li>
<li><p>Technical writers that are documenting application behavior.</p>
</li>
</ul>
<p>People will be able to perform their role more effectively if your code is kept tidy, consistent, and human-readable.</p>
<h3 id="heading-editorconfig-makes-code-reviews-easier">EditorConfig Makes Code Reviews Easier</h3>
<p>As a project maintainer, you'll inevitably have to review code contributed by others. They might be a fellow team member, or open-source contributors that discover your project.</p>
<p>Enforcing formatting should be delegated to software. This will make reading and reviewing the code more efficient, and avoids the need to request changes based on formatting.</p>
<p>Reducing the feedback loop ultimately saves everyone time.</p>
<h3 id="heading-editorconfig-makes-development-easier">EditorConfig Makes Development Easier</h3>
<p>Developers can save a lot of headache by having conventions that are automatically applied by their editor.</p>
<p>Without it, they have to find a contribution guide, style guide, or check other code manually to learn project conventions.</p>
<p>Even when the conventions are known, they may conflict with a developer's settings. Then they'll have to code against the editor's automatic formatting, or frequently change settings between projects.</p>
<p>This is especially useful for developers that jump between projects a lot. For example, open-source contributors frequently write code for projects across organizations that follow different coding conventions.</p>
<h2 id="heading-how-editorconfig-works">How EditorConfig Works</h2>
<p>EditorConfig uses a simple <a target="_blank" href="https://en.wikipedia.org/wiki/INI_file">INI</a>-like file named <code>.editorconfig</code>. This file declares rules that will be translated to settings in your editor, or perform formatting over your workspace.</p>
<p>For example, in my editor I use 2-space indentations for XML files, but a project I contribute to might prefer 4-space indentations.</p>
<pre><code class="lang-plaintext">[*.xml]
indent_size = 4
</code></pre>
<p>When I open the project, my editor will see the <code>.editorconfig</code> file, and override the settings to suit the project's conventions.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/1.png" alt="Instance of Visual Studio Code. There is an XML file on the left side which uses spaces as defined in the EditorConfig, but my default indentation size of 2." width="600" height="400" loading="lazy"></p>
<p><em>Writing an XML file with my default editor settings. I use spaces for indentation with a size of 2.</em></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/07/2-1.png" alt="Instance of Visual Studio Code. The EditorConfig configuration includes an XML section that sets the indentation style to tab and size to 4. The XML file on the left is reformmated to reflect this change." width="600" height="400" loading="lazy"></p>
<p><em>Automatically reformatting the file after overriding the XML formatting settings.</em></p>
<h2 id="heading-how-to-use-editorconfig">How to Use EditorConfig</h2>
<p>Depending on your editor of choice, it may have native support for EditorConfig already. There is a list of "<a target="_blank" href="https://editorconfig.org/#pre-installed">No Plugin Necessary</a>" editors on the website, which includes JetBrains IDEs and Visual Studio.</p>
<p>If your editor doesn't have native support, you'll likely be able to add it with a plugin. Editors like Visual Studio Code and Eclipse support it this way, which can also be found on the EditorConfig website under "<a target="_blank" href="https://editorconfig.org/#download">Download a Plugin</a>".</p>
<p>Once installed, your editor should automatically find the EditorConfig file in your project if it exists, and start applying the rules.</p>
<h2 id="heading-how-to-define-rules-in-editorconfig">How to Define Rules in EditorConfig</h2>
<p>You can find a list of rules on the <a target="_blank" href="https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties">EditorConfig Wiki</a>. It contains all officially supported rules, as well as proposals for domain-specific rules that may be supported by certain implementations.</p>
<p>Not all implementations support every rule. This is especially true for domain-specific rules like <code>curly_bracket_next_line</code>. It can still be worth declaring these properties anyway for users that can utilize it, or to at least document the preference.</p>
<p>You must set <code>root</code> to <code>true</code> for the top level EditorConfig in the project, which is normally in the root of your project directory.</p>
<p>Additional EditorConfig files can be defined in nested directories, but shouldn't set <code>root</code> to <code>true</code>.</p>
<p>Then you can define a header that selects files, with rules for what to apply to matching files.</p>
<pre><code class="lang-plaintext"># Declares that this is the top-level configuration
root = true

# Applies to all files
[*]
indent_style = space
indent_size = 2

# Applies to all Markdown files
[*.md]
trim_trailing_whitespace = false

# Applies to all C# and Java files, overriding rules declared before
[*.{cs,java}]
indent_size = 4
</code></pre>
<p>There are no standard conventions for how to write an <code>.editorconfig</code> file, but there are two notable approaches you can take.</p>
<h3 id="heading-define-rules-per-project">Define Rules Per Project</h3>
<p>Just add to it as you need to. This means just defining rules, or appending file formats as your project grows.</p>
<p>You can start by generating the file with your editor, or just create a file named <code>.editorconfig</code> manually. You can copy-and-paste the <a target="_blank" href="https://editorconfig.org/#example-file">example</a> from the official website.</p>
<h3 id="heading-define-rules-for-all-projects">Define Rules for All Projects</h3>
<p>Alternatively, you can put together all of your preferences and plan the ideal configuration for all files you might interact with.</p>
<p>You can work from scratch, or start with mine and make the necessary adjustments.</p>
<pre><code class="lang-plaintext">root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
curly_bracket_next_line = false
spaces_around_operators = true

[*.bat]
end_of_line = crlf

[*.cs]
curly_bracket_next_line = true

[*.{cpp,cs,gradle,java,kt,py,rs}]
indent_size = 4

[*.{js,ts}]
quote_type = single

[*.md]
trim_trailing_whitespace = false

[*.tsv]
indent_style = tab
</code></pre>
<h2 id="heading-editorconfig-rule-recommendations">EditorConfig Rule Recommendations</h2>
<p>These are rules I'd objectively recommend declaring, if your project contains the respective file format. It'll help you avoid tedious issues that can occur due to a user's development environment.</p>
<h3 id="heading-batch">Batch</h3>
<p>Line endings need to have a textual representation when stored. This is usually something you wouldn't see or have to worry about.</p>
<p>However, different systems use different characters to represent the end of a line. (<a target="_blank" href="https://en.wikipedia.org/wiki/Newline#Representation">More Info</a>)</p>
<ul>
<li><p>Unix systems use a line feed. (<code>lf</code> or <code>\n</code>)</p>
</li>
<li><p>Windows uses a carriage return and line feed. (<code>crlf</code> or <code>\r\n</code>)</p>
</li>
</ul>
<p><a target="_blank" href="https://en.wikipedia.org/wiki/Batch_file">Batch</a> files can have unexpected behavior if they end with Unix line endings. You can avoid this by setting <code>end_of_line</code> to <code>crlf</code> to ensure they have Windows line endings instead. (<a target="_blank" href="https://serverfault.com/questions/429594/is-it-safe-to-write-batch-files-with-unix-line-endings">More Info</a>)</p>
<pre><code class="lang-plaintext">[*.bat]
end_of_line = crlf
</code></pre>
<h3 id="heading-markdown">Markdown</h3>
<p>In <a target="_blank" href="https://en.wikipedia.org/wiki/Markdown">Markdown</a>, you can write a line break in the current paragraph by adding 2 spaces at the end of a line. (<a target="_blank" href="https://en.wikipedia.org/wiki/Markdown#Example">More Info</a>)</p>
<p>You'll want to set <code>trim_trailing_whitespace</code> to <code>false</code> to avoid having your editor remove those spaces when you save.</p>
<pre><code class="lang-plaintext">[*.md]
trim_trailing_whitespace = false
</code></pre>
<h3 id="heading-tab-separated-values">Tab Separated Values</h3>
<p><a target="_blank" href="https://en.wikipedia.org/wiki/Tab-separated_values">TSV</a> (Tab Separated Values) files are very similar to <a target="_blank" href="https://en.wikipedia.org/wiki/Comma-separated_values">CSV</a> (Comma Separated Values), but use tabs instead of commas as the column delimiter.</p>
<p>It's very common for developers to have tabs automatically convert to spaces. You should set <code>indent_style</code> to <code>tab</code> to avoid the delimiter from being replaced, otherwise your entire table might become a single column.</p>
<pre><code class="lang-plaintext">[*.tsv]
indent_style = tab
</code></pre>
<h2 id="heading-conclusion">Conclusion</h2>
<p>If you're a maintainer, either working in a collaborative environment or in open-source, I strongly recommend adding an <code>.editorconfig</code> file defining the project's conventions to the root of your repository.</p>
<p>Maintainers can then spend more time reviewing clean pull requests that adhere to the style guide, as the editor will automatically start enforcing or applying the conventions.</p>
<p>Committers get a better experience, as the project will override their workspace settings. This reduces the need to reformat code or work against preconfigured editor settings.</p>
<p>And projects will be cleaner, as the conventions will be in a single vendor-agnostic file, rather than editor-specific files that only certain contributors can use anyway.</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
