<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Master of nothing - development</title>
    <subtitle>About OpenBSD, data privacy, security, programming and data science with open source software.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://hervyqa.srht.site/categories/development/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://hervyqa.srht.site"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-06-05T00:00:00+00:00</updated>
    <id>https://hervyqa.srht.site/categories/development/atom.xml</id>
    <entry xml:lang="en">
        <title>SourceHut, Git Forge Open Source Alternative to GitHub</title>
        <published>2024-04-02T00:00:00+00:00</published>
        <updated>2026-06-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            Hervy Qurrotul
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://hervyqa.srht.site/blog/sourcehut-git-forge/"/>
        <id>https://hervyqa.srht.site/blog/sourcehut-git-forge/</id>
        
        <content type="html" xml:base="https://hervyqa.srht.site/blog/sourcehut-git-forge/">&lt;p&gt;As a software developer, you are certainly familiar with GitHub
as a git repository hosting provider, also known as a &lt;em&gt;git forge&lt;&#x2F;em&gt;.
Besides GitHub, there are other alternatives such as Gitlab, Codeberg,
SourceForge, and Bitbucket. I have used all of them, but I will not
discuss them here.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;benefits-of-using-git-forge&quot;&gt;Benefits of using Git Forge&lt;a class=&quot;post-anchor&quot; href=&quot;#benefits-of-using-git-forge&quot; aria-label=&quot;Anchor link for: benefits-of-using-git-forge&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Before using a &lt;em&gt;git forge&lt;&#x2F;em&gt; such as SourceHut, it is important to
understand the general benefits of using a &lt;em&gt;git forge&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Facilitates code collaboration. If you are working with a team, it
is recommended to use a &lt;em&gt;git forge&lt;&#x2F;em&gt; because of the many features it
offers.&lt;&#x2F;li&gt;
&lt;li&gt;Monitors code changes before they are merged into the main branch.
Monitoring code results is very important for project managers who
need to check code quality.&lt;&#x2F;li&gt;
&lt;li&gt;Serves as a portfolio for developers. Various projects that have been
worked on can be made into a public portfolio that can be used as
a reference.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;With the various benefits mentioned above, developers should have one of
these &lt;em&gt;git forge&lt;&#x2F;em&gt; institutions.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-sourcehut&quot;&gt;Why SourceHut?&lt;a class=&quot;post-anchor&quot; href=&quot;#why-sourcehut&quot; aria-label=&quot;Anchor link for: why-sourcehut&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;

&lt;a href=&quot;https:&#x2F;&#x2F;sourcehut.org&#x2F;&quot;&gt;SourceHut&lt;&#x2F;a&gt; is a cloud-based git repository hosting provider
for managing project code. Of course, SourceHut is also open source
software that can be customized by its users.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;hervyqa.srht.site&#x2F;blog&#x2F;sourcehut-git-forge&#x2F;sourcehut-website.webp&quot; alt=&quot;SourceHut website&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;So, what are the benefits of using SourceHut over other git forges? There are
several interesting facts that have been discovered.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;&quot;&gt;Free and open source software&lt;a class=&quot;post-anchor&quot; href=&quot;#&quot; aria-label=&quot;Anchor link for: &quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;

&lt;a href=&quot;https:&#x2F;&#x2F;sourcehut.org&#x2F;&quot;&gt;SourceHut&lt;&#x2F;a&gt; is a free and open source &lt;em&gt;git forge&lt;&#x2F;em&gt; software
under the &lt;em&gt;GNU Affero General Public License&lt;&#x2F;em&gt; (AGPL 3.0). Unlike GitHub
or GitLab, SourceHut is 100% open source. You can view, access, and
modify the sourcehut source code at 

&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;sourcehut&#x2F;&quot;&gt;SourceHut Source&lt;&#x2F;a&gt;. Compared to
other &lt;em&gt;git forges&lt;&#x2F;em&gt; such as GitHub, this is impossible to access because
only authorized personnel within the company know the source code.
Sourcehut can even be installed independently.&lt;&#x2F;p&gt;
&lt;p&gt;Some &lt;em&gt;git forges&lt;&#x2F;em&gt; that have been used along with their source code.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Git Forge&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Source&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;SourceHut&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;

&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;sourcehut&#x2F;&quot;&gt;Open Source&lt;&#x2F;a&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;GitLab&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;

&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab&#x2F;&quot;&gt;Open Source&lt;&#x2F;a&gt;&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;GitHub&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Proprietary&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;BitBucket&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Proprietary&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;blockquote class=&quot;markdown-alert-important&quot;&gt;
&lt;p&gt;Open source is software code that is open, while proprietary is closed
program code that is not shared publicly. Only those with
authorization can access it.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Sourcehut was not founded by a large company. It was founded by 

&lt;a href=&quot;https:&#x2F;&#x2F;drewdevault.com&#x2F;&quot;&gt;Drew DeVault&lt;&#x2F;a&gt; as CEO and maintainer of
the 

&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.freedesktop.org&#x2F;wlroots&#x2F;wlroots&#x2F;&quot;&gt;Wlroot&lt;&#x2F;a&gt; project and 

&lt;a href=&quot;https:&#x2F;&#x2F;swaywm.org&#x2F;&quot;&gt;Swaywm&lt;&#x2F;a&gt; projects,
along with 

&lt;a href=&quot;https:&#x2F;&#x2F;emersion.fr&#x2F;&quot;&gt;Simon Ser&lt;&#x2F;a&gt; as release manager of the 

&lt;a href=&quot;https:&#x2F;&#x2F;wayland.freedesktop.org&#x2F;&quot;&gt;Wayland&lt;&#x2F;a&gt; project. In addition, Sourcehut is supported
by the talented engineer 

&lt;a href=&quot;https:&#x2F;&#x2F;bitfehler.srht.site&#x2F;&quot;&gt;Conrad Hoffmann&lt;&#x2F;a&gt;, who contributes to
the 

&lt;a href=&quot;https:&#x2F;&#x2F;kde.org&#x2F;&quot;&gt;KDE&lt;&#x2F;a&gt; project, 

&lt;a href=&quot;https:&#x2F;&#x2F;www.haproxy.org&#x2F;&quot;&gt;HAProxy&lt;&#x2F;a&gt;, and the 

&lt;a href=&quot;https:&#x2F;&#x2F;prometheus.io&#x2F;&quot;&gt;Prometheus ecosystem&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-1&quot;&gt;Owned code data&lt;a class=&quot;post-anchor&quot; href=&quot;#-1&quot; aria-label=&quot;Anchor link for: -1&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;No party at sourcehut allows for data sharing, whether code data or
user data. Judging from the founders’ track record, they have long been
creating various types of free software that allows for extreme caution
regarding user privacy.&lt;&#x2F;p&gt;
&lt;p&gt;Are you familiar with 

&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;features&#x2F;copilot&#x2F;&quot;&gt;Github Copilot&lt;&#x2F;a&gt;, some of you may have
used it. The code generated by AI is code under the GPL license that is
used as a &lt;em&gt;proprietary&lt;&#x2F;em&gt; product, which of course violates the license
policy itself. At sourcehut, the program code belongs entirely to the
&lt;em&gt;programmer&lt;&#x2F;em&gt; or &lt;em&gt;developer&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-2&quot;&gt;Quick and lightweight access&lt;a class=&quot;post-anchor&quot; href=&quot;#-2&quot; aria-label=&quot;Anchor link for: -2&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Sourcehut’s performance is faster than other git forges. It’s as light
as opening plain text. Sourcehut’s workflow itself also uses plain text
email to send patches, reviews, replies, or comments. There is no pull
request (PR) feature, but it uses email-based communication similar to
that used in Linux kernel development, which uses plain text email. For
your information, Git itself is basically developed 

&lt;a href=&quot;https:&#x2F;&#x2F;lore.kernel.org&#x2F;git&#x2F;&quot;&gt;based on email&lt;&#x2F;a&gt; to this day, not based on pull requests like
commercial git forges currently do.&lt;&#x2F;p&gt;
&lt;blockquote class=&quot;markdown-alert-tip&quot;&gt;
&lt;p&gt;If you are interested in why &lt;em&gt;plain text email&lt;&#x2F;em&gt; is used instead of
HTML email, we recommend visiting 

&lt;a href=&quot;https:&#x2F;&#x2F;useplaintext.email&#x2F;&quot;&gt;Use Plain Text&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Drew DeVault is also the developer of 

&lt;a href=&quot;https:&#x2F;&#x2F;aerc-mail.org&#x2F;&quot;&gt;Aerc&lt;&#x2F;a&gt;, a TUI-based
&lt;em&gt;email client&lt;&#x2F;em&gt; that supports &lt;em&gt;vim workflow&lt;&#x2F;em&gt;, making it easier for
&lt;em&gt;keyboard centric&lt;&#x2F;em&gt; developers.&lt;&#x2F;p&gt;
&lt;p&gt;Sourcehut even claims to be the fastest of other &lt;em&gt;git forge&lt;&#x2F;em&gt; software
such as Pagure, GitHub, GitLab, Bitbucket, and Codeberg. For more
details, please refer to the link 

&lt;a href=&quot;https:&#x2F;&#x2F;forgeperf.org&#x2F;&quot;&gt;Forgeperf&lt;&#x2F;a&gt; to find out
more detailed differences.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;hervyqa.srht.site&#x2F;blog&#x2F;sourcehut-git-forge&#x2F;forgeperf-website.webp&quot; alt=&quot;Forgeperf website&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-3&quot;&gt;Independent and modular&lt;a class=&quot;post-anchor&quot; href=&quot;#-3&quot; aria-label=&quot;Anchor link for: -3&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;SourceHut can be installed independently by users. For installation
instructions, refer to the SourceHut installation section at


&lt;a href=&quot;https:&#x2F;&#x2F;man.sr.ht&#x2F;installation.md&#x2F;&quot;&gt;SourceHut Installation&lt;&#x2F;a&gt;. The &lt;code&gt;sr.ht&lt;&#x2F;code&gt; service requires a 

&lt;a href=&quot;https:&#x2F;&#x2F;www.postgresql.org&#x2F;&quot;&gt;PostgreSQL&lt;&#x2F;a&gt; server, 

&lt;a href=&quot;https:&#x2F;&#x2F;redis.io&#x2F;&quot;&gt;Redis&lt;&#x2F;a&gt; server, and
mail server. Since the sourcehut source code is open, it can be
installed as long as you have the infrastructure for CI and CD &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;parasrah2022&quot;&gt;(&lt;a href=&quot;#ref-parasrah2022&quot;&gt;Parasrah&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;. Of course, there are no
subscription or licensing fees if you install sourcehut yourself.
Anyone can also contribute to sourcehut for service development &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;marcin_strus2022&quot;&gt;(&lt;a href=&quot;#ref-marcin_strus2022&quot;&gt;Marcin Struś&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;hervyqa.srht.site&#x2F;blog&#x2F;sourcehut-git-forge&#x2F;sourcehut-sources.webp&quot; alt=&quot;SourceHut sources&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Sourcehut not only provides git repository services, but also many other
services, including.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Service&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;builds.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;em&gt;Continuous integration&lt;&#x2F;em&gt; service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;git.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Git repository service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;hg.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Mercurial repository service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;hub.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Project index and organization service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;lists.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Mailing list service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;man.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Project wiki service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;meta.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Authentication and user account service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;pages.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Static web service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;paste.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Code pasting service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;todo.sr.ht&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Issue and bug tracker service.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;It does require more effort to build the infrastructure, manage
CI&#x2F;CD, ensure stability, and patch system vulnerabilities. It would be
troublesome if that happened. But sourcehut also has several parameters
that can be considered for installation and use in production.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;How much is it tied to third-party agencies?&lt;&#x2F;li&gt;
&lt;li&gt;How good is the code quality?&lt;&#x2F;li&gt;
&lt;li&gt;How many bugs have been found?&lt;&#x2F;li&gt;
&lt;li&gt;How are these bugs resolved?&lt;&#x2F;li&gt;
&lt;li&gt;How many people are involved?&lt;&#x2F;li&gt;
&lt;li&gt;And so on.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Based on these parameters, sourcehut is still in the “safe” category.
In fact, one of the Android-based operating systems called PostMarketOS
is also seriously considering using sourcehut for its independent
infrastructure &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;postmarketos2022&quot;&gt;(&lt;a href=&quot;#ref-postmarketos2022&quot;&gt;PostMarketOS&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If you use a Nix-based operating system, it is very easy to install
sourcehut, because there is already an option to declare it that is
integrated with PostgreSQL and Redis.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-4&quot;&gt;Affordable costs&lt;a class=&quot;post-anchor&quot; href=&quot;#-4&quot; aria-label=&quot;Anchor link for: -4&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Currently, sourcehut is entering the &lt;em&gt;alpha&lt;&#x2F;em&gt; development stage, where
users can use all available features except the &lt;em&gt;build&lt;&#x2F;em&gt;&#x2F;&lt;em&gt;deploy&lt;&#x2F;em&gt; system
at 

&lt;a href=&quot;https:&#x2F;&#x2F;build.sr.ht&#x2F;&quot;&gt;SourceHut Build&lt;&#x2F;a&gt;. To use this feature, users are required to
pay for the &lt;em&gt;build&lt;&#x2F;em&gt; system service. If anything, this is not a payment,
but rather a contribution or donation to cover living expenses. For
example, to cover the electricity, taxes, and accommodation costs of
sourcehut developers. Uniquely, sourcehut does not have any mandatory
pricing plan categories, meaning that each category has the same
facilities despite having different prices. More details are available
at sourcehut 

&lt;a href=&quot;https:&#x2F;&#x2F;sourcehut.org&#x2F;pricing&#x2F;&quot;&gt;SourceHut Pricing&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;hervyqa.srht.site&#x2F;blog&#x2F;sourcehut-git-forge&#x2F;sourcehut-pricing.webp&quot; alt=&quot;SourceHut Pricing&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Amateur Hacker: 2 USD&#x2F;month or 20 USD&#x2F;year&lt;&#x2F;li&gt;
&lt;li&gt;Typical Hacker: 5 USD&#x2F;month or 50 USD&#x2F;year&lt;&#x2F;li&gt;
&lt;li&gt;Professional Hacker: 10 USD&#x2F;month or 100 USD&#x2F;year&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Converted to Indonesian rupiah at a rate of Rp16,000, this becomes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Amateur Hacker: Rp320,000&#x2F;year&lt;&#x2F;li&gt;
&lt;li&gt;Typical Hacker: Rp800,000&#x2F;year&lt;&#x2F;li&gt;
&lt;li&gt;Professional Hacker: Rp1,600,000&#x2F;year&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The facilities and features are the same for all three categories. Users
are free to choose the category they want depending on their financial
needs. Payment is also easy via credit card, Stripe, or cryptocurrency.&lt;&#x2F;p&gt;
&lt;p&gt;How can it be so cheap? For example, renting a VPS costs Rp50,000 per
month, or Rp600,000 per year. This is cheaper than Sourcehut, which
costs Rp320,000 (Amateur Hacker), or 46.6% cheaper than renting a VPS
yourself.&lt;&#x2F;p&gt;
&lt;p&gt;Why pay for a CI&#x2F;CD deployment system when other Git forges like GitHub
and GitLab are free? Actually, other Git forges aren’t free. Users don’t
pay because someone else is paying behind the scenes, like many venture
capital firms (investors) sponsoring those Git forge companies. As for
Sourcehut, we all know where it stands.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-5&quot;&gt;No tracking and advertising&lt;a class=&quot;post-anchor&quot; href=&quot;#-5&quot; aria-label=&quot;Anchor link for: -5&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;So far, since this article was written, no advertisements have been
found on SourceHut. The SourceHut homepage also states that there is no
tracking or advertising displayed on SourceHut. In fact, all features
work without JavaScript.&lt;&#x2F;p&gt;
&lt;p&gt;SourceHut is simple and lightweight. Don’t be fooled by the classic look
of the website, which lacks any artistic flair. Visually (UI), it may
be considered poor because there are no animations, motion, pop-ups,
or other bells and whistles. However, in terms of user experience (UX),
sourcehut is very responsive, although it takes some getting used to
using the email workflow.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;hut&quot;&gt;The existence of &lt;code&gt;hut&lt;&#x2F;code&gt; as a CLI tool supporting sourcehut&lt;a class=&quot;post-anchor&quot; href=&quot;#hut&quot; aria-label=&quot;Anchor link for: hut&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;

&lt;a href=&quot;https:&#x2F;&#x2F;sr.ht&#x2F;~emersion&#x2F;hut&#x2F;&quot;&gt;Hut&lt;&#x2F;a&gt; is a CLI application for interacting with 

&lt;a href=&quot;https:&#x2F;&#x2F;sourcehut.org&#x2F;&quot;&gt;SourceHut&lt;&#x2F;a&gt;. It functions to monitor system deployment work,
view tickets, patch lists, git repositories, and more. It can even be
specified by name, owner, or URL.&lt;&#x2F;p&gt;
&lt;p&gt;With &lt;code&gt;hut&lt;&#x2F;code&gt;, it is easier to manage sourcehut repositories, eliminating
the need to open the website to access sourcehut. For the first setup,
&lt;code&gt;hut init&lt;&#x2F;code&gt; is required to initialize a token that identifies the user
account.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; hut help&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hut is a CLI tool for sr.ht&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Usage:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  hut [command]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Available Commands:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  builds      Use the builds API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  export      Exports your account data&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  git         Use the git API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  graphql     Execute a GraphQL query&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  help        Help about any command&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  hg          Use the hg API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  init        Initialize hut&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  lists       Use the lists API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  meta        Use the meta API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  pages       Use the pages API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  paste       Use the paste API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  todo        Use the todo API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Flags:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      --config string     config file to use&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -h, --help              help for hut&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      --instance string   sr.ht instance to use&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Use &amp;quot;hut [command] --help&amp;quot; for more information about a command.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;In sourcehut, you can also view repositories with &lt;code&gt;hut&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;hut&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; git list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;website (public)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Learn about data science and statistics in bahasa.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;swayhome (public)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Nixos configuration, sway and home-manager.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;oldblog (public)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Personal blog of Hervy qurrotul&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dotfire (public)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  Nixos KDE Plasma configuration for data science.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;-6&quot;&gt;Hosting websites with &lt;em&gt;sourcehut pages&lt;&#x2F;em&gt;&lt;a class=&quot;post-anchor&quot; href=&quot;#-6&quot; aria-label=&quot;Anchor link for: -6&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;You can create website pages for free with &lt;em&gt;sourcehut pages&lt;&#x2F;em&gt; using
the domain name &lt;code&gt;username.srht.site&lt;&#x2F;code&gt;. The website whose repository is
located at 

&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~hervyqa&#x2F;termivy&#x2F;&quot;&gt;~hervyqa&amp;#x2F;termivy&lt;&#x2F;a&gt; is also
built using sourcehut pages, but it uses a custom domain. Creating
sourcehut pages is also very simple, just by creating a &lt;code&gt;.build.yml&lt;&#x2F;code&gt;
file.&lt;&#x2F;p&gt;
&lt;p&gt;For example, deploying a static website with &lt;code&gt;hugo&lt;&#x2F;code&gt;. Several other
examples can be found at 

&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;pages.sr.ht-examples&#x2F;tree&#x2F;master&#x2F;&quot;&gt;SourceHut Pages examples&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;yaml&quot; data-name=&quot;.build.yml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;image&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; alpine&#x2F;latest&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;packages&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; hugo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;oauth&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; pages.sr.ht&#x2F;PAGES:RW&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;environment&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;  site&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; namasitus.com&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;  files&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; site.tar.gz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt;tasks&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; package&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;    cd $site&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;    hugo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;    tar -C public -cvz . &amp;gt; ..&#x2F;$files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; upload&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #C586C0;&quot;&gt; |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt;    hut pages publish -d $site $files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Optionally, change the DNS server in your domain provider’s &lt;em&gt;domain
management&lt;&#x2F;em&gt; to support 

&lt;a href=&quot;https:&#x2F;&#x2F;srht.site&#x2F;custom-domains&#x2F;&quot;&gt;custom
domain&lt;&#x2F;a&gt; on sourcehut.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@ IN A    46.23.81.157&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@ IN AAAA 2a03:6000:1813:1337::157&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;-7&quot;&gt;Diverse Continuous Integration Architecture&lt;a class=&quot;post-anchor&quot; href=&quot;#-7&quot; aria-label=&quot;Anchor link for: -7&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;SourceHut is equipped with various Linux distribution operating systems
with different architectures for Continuous Integration (CI) needs.
Supported operating systems include BSD and linux-based.&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Alpine linux&lt;&#x2F;li&gt;
&lt;li&gt;Arch linux&lt;&#x2F;li&gt;
&lt;li&gt;Debian&lt;&#x2F;li&gt;
&lt;li&gt;Fedora&lt;&#x2F;li&gt;
&lt;li&gt;FreeBSD&lt;&#x2F;li&gt;
&lt;li&gt;Guix System&lt;&#x2F;li&gt;
&lt;li&gt;NetBSD&lt;&#x2F;li&gt;
&lt;li&gt;OpenBSD&lt;&#x2F;li&gt;
&lt;li&gt;Rocky linux&lt;&#x2F;li&gt;
&lt;li&gt;Ubuntu&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Supported architectures:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;aarch64&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;arm64&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;armel&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;armhf&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;i386&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;ppc64el&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;s390x&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;x86_64&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;x86&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;And many other architectures. If you use the &lt;code&gt;x86_64&lt;&#x2F;code&gt; or &lt;code&gt;amd64&lt;&#x2F;code&gt;
architecture, then that architecture uses &lt;em&gt;native&lt;&#x2F;em&gt; hardware. For
more information, refer to the 

&lt;a href=&quot;https:&#x2F;&#x2F;man.sr.ht&#x2F;builds.sr.ht&#x2F;compatibility.md&#x2F;&quot;&gt;compatibility&lt;&#x2F;a&gt; page.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;-8&quot;&gt;Closing&lt;a class=&quot;post-anchor&quot; href=&quot;#-8&quot; aria-label=&quot;Anchor link for: -8&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Personally, I think sourcehut is worth using for &lt;em&gt;developers&lt;&#x2F;em&gt;. Several
important personal repositories have been migrated to sourcehut,
including this website’s repository. When I first started using
sourcehut, the repository was still quiet and not very popular at the
time this article was written. But after researching its features and
how sourcehut works, I became interested in some of the advantages that
other &lt;em&gt;git forges&lt;&#x2F;em&gt; don’t have. The initial considerations for choosing
SourceHut were its speed, minimal bugs, the availability of a CLI
application (hut), a well-built system, and of course, its open source
nature.&lt;&#x2F;p&gt;
&lt;p&gt;SourceHut is not a viral and well-known git forge. It does not have
features that make it famous on social media. For example, there is no
star rating or total number of stars in a repository, no special badges,
and no repository banners, so the thumbnail images look elegant. Even
its users don’t have the feature to upload profile photos. But despite
these shortcomings, many large project repositories are on SourceHut,
and the famous button feature is not really needed. By leaving out these
bells and whistles, SourceHut becomes more minimalist and faster. Back
to the concept of &lt;em&gt;less is more&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;hervyqa.srht.site&#x2F;blog&#x2F;sourcehut-git-forge&#x2F;sourcehut-hervyqa.webp&quot; alt=&quot;Hervyqa’s SourceHut&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Profile display 

&lt;a href=&quot;https:&#x2F;&#x2F;git.sr.ht&#x2F;~hervyqa&#x2F;&quot;&gt;~hervyqa&lt;&#x2F;a&gt; on sourcehut.&lt;&#x2F;p&gt;
&lt;p&gt;Paying for the &lt;em&gt;deploy&lt;&#x2F;em&gt; feature on sourcehut still makes sense. First,
the price is still affordable. And second, the money stays within
the realm of FOSS (Free Open Source Software), rather than flowing to
investors. This may be a matter of debate, but it still doesn’t make
sense to argue about it. The simplest logic is, is there such a thing
as free electricity? Even the most free things still require effort. And
effort requires accommodation and supplies.&lt;&#x2F;p&gt;
&lt;p&gt;The word “free” in the principle of &lt;em&gt;free software&lt;&#x2F;em&gt; has a
specific meaning that cannot be generalized. Roughly speaking,
“if it’s &lt;em&gt;free&lt;&#x2F;em&gt;, then it’s &lt;em&gt;free&lt;&#x2F;em&gt; everything” is clearly
impossible. Some features are indeed free, while others are
not, and each has its own limitations. Sourcehut’s business
model is clear and transparent. There are also annual financial
reports, for example for 

&lt;a href=&quot;https:&#x2F;&#x2F;lists.sr.ht&#x2F;~sircmpwn&#x2F;sr.ht-discuss&#x2F;%3CBVRVZEWYB30Q.3HGIC803LDBH7@homura%3E&#x2F;&quot;&gt;2019&lt;&#x2F;a&gt;, 

&lt;a href=&quot;https:&#x2F;&#x2F;sourcehut.org&#x2F;blog&#x2F;2022-04-08-2021-financial-report&#x2F;&quot;&gt;2021&lt;&#x2F;a&gt;, and 

&lt;a href=&quot;https:&#x2F;&#x2F;sourcehut.org&#x2F;blog&#x2F;2023-03-27-2022-financial-report&#x2F;&quot;&gt;2022&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If you are accustomed to using an email-based workflow and prioritize
performance, then Sourcehut is worth trying.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;The source code 

&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab&#x2F;&quot;&gt;Gitlab Source&lt;&#x2F;a&gt; is open source but
not completely open, as there is some proprietary (closed)
code. If you want to use open source code, you can use 

&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-foss&#x2F;&quot;&gt;Gitlab Floss&lt;&#x2F;a&gt;. &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>How to Learn Helix Editor, an Alternative to Neovim and Vim</title>
        <published>2023-02-07T00:00:00+00:00</published>
        <updated>2026-04-07T00:00:00+00:00</updated>
        
        <author>
          <name>
            Hervy Qurrotul
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://hervyqa.srht.site/blog/how-to-learn-helix-editor/"/>
        <id>https://hervyqa.srht.site/blog/how-to-learn-helix-editor/</id>
        
        <content type="html" xml:base="https://hervyqa.srht.site/blog/how-to-learn-helix-editor/">&lt;p&gt;

&lt;a href=&quot;https:&#x2F;&#x2F;helix-editor.com&#x2F;&quot;&gt;Helix&lt;&#x2F;a&gt; is a CLI text editor with alternative modal support
for Neovim and VIM. This editor is written in the Rust programming
language, making it faster with a &lt;em&gt;single binary&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;key-features&quot;&gt;Key Features&lt;a class=&quot;post-anchor&quot; href=&quot;#key-features&quot; aria-label=&quot;Anchor link for: key-features&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Helix has minimal configuration. Unlike Neovim and VIM, which require
managing configurations by installing plugins to suit the desired
workflow. Here is a list of features that Helix has, quoted from its
official website:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Multiple selections simultaneously.&lt;&#x2F;strong&gt; Multi-cursor code editing is built
into Helix.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Integration with Tree-sitter.&lt;&#x2F;strong&gt; Enables syntax highlighting, indentation
calculation, and code navigation.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Code manipulation.&lt;&#x2F;strong&gt; Easy navigation and selection of functions, classes,
comments, and so on.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Language server support.&lt;&#x2F;strong&gt; With language-specific autocomplete, go to
definition, documentation, diagnostics, and IDE features without additional
configuration.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Built with the Rust programming language.&lt;&#x2F;strong&gt; High performance and more
battery efficient.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Built-in features.&lt;&#x2F;strong&gt; Fuzzy search for files, symbols, projects, themes,
fugitive, surround, and much more.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

  &lt;figure id=&quot;fig-matplotlib-sample&quot; class=&quot;ref-placeholder&quot; data-ref=&quot;matplotlib-sample&quot; class=&quot;figure-center&quot;&gt;
    &lt;img src=&quot;.&#x2F;matplotlib-sample.webp&quot; alt=&quot;matplotlib-sample&quot; &#x2F;&gt;
    
      &lt;figcaption class=&quot;center&quot;&gt;Figure: Programming with Helix Editor&lt;&#x2F;figcaption&gt;
    
  &lt;&#x2F;figure&gt;

&lt;p&gt;Helix is equipped with a variety of features including syntax highlight
which makes it easy for &lt;em&gt;Platform Engineer&lt;&#x2F;em&gt; &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;wyssmann22&quot;&gt;(&lt;a href=&quot;#ref-wyssmann22&quot;&gt;Wyssmann, Adrian&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;shock-therapy&quot;&gt;Shock therapy&lt;a class=&quot;post-anchor&quot; href=&quot;#shock-therapy&quot; aria-label=&quot;Anchor link for: shock-therapy&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;When using Helix, you have no choice but to learn again. Even with
minimal configuration, Helix has a keymap that is 30% different from
neovim&#x2F;vim and must be memorized to get used to. The rest of the
keymap is almost the same.  Fortunately, the Helix developers have
provided a built-in tutorial like &lt;code&gt;vimtutor&lt;&#x2F;code&gt; in vim.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;hx&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; --tutor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Moreover, there is no need to think about how LSP configuration in
Helix, because it has been well configured. If using vim&#x2F;neovim,
too many vimscripts need to be taken care of all of them. While in
Helix checking can be done with &lt;code&gt;hx --health markdown&lt;&#x2F;code&gt; and see what
LSP needs to be installed &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;timh23&quot;&gt;(&lt;a href=&quot;#ref-timh23&quot;&gt;Hårek, Tim&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;a class=&quot;post-anchor&quot; href=&quot;#installation&quot; aria-label=&quot;Anchor link for: installation&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;openbsd&quot;&gt;OpenBSD&lt;a class=&quot;post-anchor&quot; href=&quot;#openbsd&quot; aria-label=&quot;Anchor link for: openbsd&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;doas&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; pkg_add install helix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;freebsd&quot;&gt;FreeBSD&lt;a class=&quot;post-anchor&quot; href=&quot;#freebsd&quot; aria-label=&quot;Anchor link for: freebsd&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DCDCAA;&quot;&gt;doas&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; pkg install helix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;For complete installation instructions, please refer to the 

&lt;a href=&quot;https:&#x2F;&#x2F;docs.helix-editor.com&quot;&gt;Helix Docs&lt;&#x2F;a&gt; page.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;basic-usage&quot;&gt;Basic usage&lt;a class=&quot;post-anchor&quot; href=&quot;#basic-usage&quot; aria-label=&quot;Anchor link for: basic-usage&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;cursor-navigation-directions&quot;&gt;Cursor navigation directions&lt;a class=&quot;post-anchor&quot; href=&quot;#cursor-navigation-directions&quot; aria-label=&quot;Anchor link for: cursor-navigation-directions&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Like navigation in vim, &lt;code&gt;helix&lt;&#x2F;code&gt; uses &lt;kbd&gt;h&lt;&#x2F;kbd&gt;, &lt;kbd&gt;j&lt;&#x2F;kbd&gt;, &lt;kbd&gt;k&lt;&#x2F;kbd&gt;, and &lt;kbd&gt;l&lt;&#x2F;kbd&gt; to move the cursor. You
can also use the arrow keys, but hjkl is faster.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Key&lt;&#x2F;th&gt;&lt;th&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;kbd&gt;h&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td&gt;Left&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;kbd&gt;j&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td&gt;Down&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;kbd&gt;k&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td&gt;Up&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;kbd&gt;l&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td&gt;Right&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;opening-files&quot;&gt;Opening files&lt;a class=&quot;post-anchor&quot; href=&quot;#opening-files&quot; aria-label=&quot;Anchor link for: opening-files&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Open helix by running &lt;code&gt;hx&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hx&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Open with a specific file.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;hx filename.xyz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;closing-helix&quot;&gt;Closing helix&lt;a class=&quot;post-anchor&quot; href=&quot;#closing-helix&quot; aria-label=&quot;Anchor link for: closing-helix&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Helix also has &lt;code&gt;normal&lt;&#x2F;code&gt;, &lt;code&gt;insert&lt;&#x2F;code&gt;, and &lt;code&gt;visual&lt;&#x2F;code&gt; modes like vim. Some of
the following &lt;code&gt;normal&lt;&#x2F;code&gt; mode shortcuts are still common and compatible
with helix.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:q&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Close the file and application.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:q!&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Force close the application.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:qa!&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Force close all open buffers and the application.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;Buffer is a file or directory that has been opened.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;configuration&quot;&gt;Configuration&lt;a class=&quot;post-anchor&quot; href=&quot;#configuration&quot; aria-label=&quot;Anchor link for: configuration&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Some basic configurations that may need to be added. For example,
theme type and line number.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:theme tokyonight&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Change the theme.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Permanent configurations can be opened in &lt;code&gt;config.toml&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:config-open&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Opens the helix configuration.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:config-reload&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Reloads the helix configuration.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;toml&quot; data-name=&quot;&quot;~&#x2F;.config&#x2F;helix&#x2F;config.toml&quot;&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;theme&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;tokyonight&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[editor]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;line-number&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;relative&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;cursorline&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[editor.lsp]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;display-messages&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #569CD6;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Yep, that’s right. The additional configuration is just a few lines
above. For more details, please refer to the 

&lt;a href=&quot;https:&#x2F;&#x2F;docs.helix-editor.com&quot;&gt;Helix Docs&lt;&#x2F;a&gt; page.&lt;&#x2F;p&gt;
&lt;p&gt;If you are working on a project that is quite large. Suggested enable
multiple to make the helix display the tab in a built-in language
not single file &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;jonathanf24&quot;&gt;(&lt;a href=&quot;#ref-jonathanf24&quot;&gt;Frere, Jonathan&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;toml&quot; data-name=&quot;&quot;~&#x2F;.config&#x2F;helix&#x2F;config.toml&quot;&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[editor]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9CDCFE;&quot;&gt;bufferline&lt;&#x2F;span&gt;&lt;span&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CE9178;&quot;&gt; &amp;quot;multiline&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h2 id=&quot;advanced-usage&quot;&gt;Advanced usage&lt;a class=&quot;post-anchor&quot; href=&quot;#advanced-usage&quot; aria-label=&quot;Anchor link for: advanced-usage&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;deleting-characters&quot;&gt;Deleting characters&lt;a class=&quot;post-anchor&quot; href=&quot;#deleting-characters&quot; aria-label=&quot;Anchor link for: deleting-characters&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Unlike vim, deleting characters in helix uses the keymap &lt;kbd&gt;d&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;d&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Deletes 1 character.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;entering-characters&quot;&gt;Entering characters&lt;a class=&quot;post-anchor&quot; href=&quot;#entering-characters&quot; aria-label=&quot;Anchor link for: entering-characters&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Similar to vim, the &lt;code&gt;insert&lt;&#x2F;code&gt; mode still uses &lt;kbd&gt;i&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;i&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;esc&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;normal&lt;&#x2F;code&gt; mode (exit insert mode).&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;saving-files&quot;&gt;Saving files&lt;a class=&quot;post-anchor&quot; href=&quot;#saving-files&quot; aria-label=&quot;Anchor link for: saving-files&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:w&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Save the file in the current buffer.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:w filename.xyz&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Save the file in the buffer with a specific name.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Can be combined with &lt;code&gt;q&lt;&#x2F;code&gt; to exit the helix.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:wq&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Save and close the application.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:wqa&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Save and close all buffers.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;insert-mode&quot;&gt;Insert mode&lt;a class=&quot;post-anchor&quot; href=&quot;#insert-mode&quot; aria-label=&quot;Anchor link for: insert-mode&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;As previously mentioned, the keymap &lt;kbd&gt;i&lt;&#x2F;kbd&gt; for insert
mode is right before the cursor. Meanwhile, there are several other
keymaps such as:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;i&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode before the cursor.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;a&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode after the cursor.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;i&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode at the beginning of the line.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;a&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode at the end of the line.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;starting-a-new-line&quot;&gt;Starting a new line&lt;a class=&quot;post-anchor&quot; href=&quot;#starting-a-new-line&quot; aria-label=&quot;Anchor link for: starting-a-new-line&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;o&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode after the current line.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;o&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;insert&lt;&#x2F;code&gt; mode before the current line.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;The above commands are similar to those in neovim or vim.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;movement-and-selection&quot;&gt;Movement and selection&lt;a class=&quot;post-anchor&quot; href=&quot;#movement-and-selection&quot; aria-label=&quot;Anchor link for: movement-and-selection&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Movement and selection in helix are performed automatically and
simultaneously.  This is slightly different from vim.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;w&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Move and select 1 word, including its space.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;e&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Move and select 1 word from the cursor to the end of the word.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;b&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Move and select 1 word from the cursor to the beginning of the word.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;The keymaps &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;w&lt;&#x2F;kbd&gt;, &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;e&lt;&#x2F;kbd&gt;, and &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;b&lt;&#x2F;kbd&gt; also have similar functions, except that the
movement depends on whitespace such as spaces and tabs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;moving-by-count&quot;&gt;Moving by count&lt;a class=&quot;post-anchor&quot; href=&quot;#moving-by-count&quot; aria-label=&quot;Anchor link for: moving-by-count&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Moving by count is also possible, for example &lt;kbd&gt;2&lt;&#x2F;kbd&gt;&lt;kbd&gt;w&lt;&#x2F;kbd&gt;, &lt;kbd&gt;4&lt;&#x2F;kbd&gt;&lt;kbd&gt;e&lt;&#x2F;kbd&gt;, &lt;kbd&gt;5&lt;&#x2F;kbd&gt;&lt;kbd&gt;b&lt;&#x2F;kbd&gt;. The explanation is as follows:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;2&lt;&#x2F;kbd&gt;&lt;kbd&gt;w&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Move 2 words forward.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;4&lt;&#x2F;kbd&gt;&lt;kbd&gt;e&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Move 4 words forward ending at the end of a word.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;5&lt;&#x2F;kbd&gt;&lt;kbd&gt;b&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Move 5 words backward.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;changing-characters&quot;&gt;Changing characters&lt;a class=&quot;post-anchor&quot; href=&quot;#changing-characters&quot; aria-label=&quot;Anchor link for: changing-characters&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The shortcut used is the keymap &lt;kbd&gt;r&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;c&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Changes the selected character or word&#x2F;sentence.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;For example, select a word with &lt;kbd&gt;w&lt;&#x2F;kbd&gt;, then replace it with
the keymap &lt;kbd&gt;c&lt;&#x2F;kbd&gt;, which immediately enters insert mode.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;visual-selection-mode&quot;&gt;Visual&#x2F;selection mode&lt;a class=&quot;post-anchor&quot; href=&quot;#visual-selection-mode&quot; aria-label=&quot;Anchor link for: visual-selection-mode&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Visual mode in helix is almost the same as in vim.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;v&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;visual&lt;&#x2F;code&gt; mode.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;v&lt;&#x2F;kbd&gt; again, or &lt;kbd&gt;esc&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;normal&lt;&#x2F;code&gt; mode (exit visual mode).&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;selecting-lines&quot;&gt;Selecting lines&lt;a class=&quot;post-anchor&quot; href=&quot;#selecting-lines&quot; aria-label=&quot;Anchor link for: selecting-lines&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Select a line using the &lt;kbd&gt;x&lt;&#x2F;kbd&gt; keymap. If you want to
select the next line, press &lt;kbd&gt;x&lt;&#x2F;kbd&gt; again. Sometimes you may
intend to delete a character, but instead select it in helix. (This
is because your subconscious is used to using &lt;kbd&gt;x&lt;&#x2F;kbd&gt;
to delete characters in vim.)&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;x&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Select 1 row.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;5&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Select 5 rows.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;;&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Deselect rows.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;;&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Flip row selection.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;undoing-changes&quot;&gt;Undoing changes&lt;a class=&quot;post-anchor&quot; href=&quot;#undoing-changes&quot; aria-label=&quot;Anchor link for: undoing-changes&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Commands for undoing changes:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;u&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Undo&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;u&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Redo.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Repeat several times until the changes are as expected.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;copying-and-pasting&quot;&gt;Copying and pasting&lt;a class=&quot;post-anchor&quot; href=&quot;#copying-and-pasting&quot; aria-label=&quot;Anchor link for: copying-and-pasting&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Copying in helix can be done in the internal helix or in the clipboard
system.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;y&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yank&#x2F;copy, copies the selected characters.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste, pastes the copied content.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste, pastes the copied content before the cursor.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;This can also be done with calculations to determine the number of
copies&#x2F;pastes.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;2&lt;&#x2F;kbd&gt; &lt;kbd&gt;y&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;2x Yank&#x2F;copy, copies the selected characters.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;4&lt;&#x2F;kbd&gt; &lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;4x Paste, pastes the copied characters.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;10&lt;&#x2F;kbd&gt; &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;10x Paste, pastes the copied characters before the cursor.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Basically, the keymaps &lt;kbd&gt;d&lt;&#x2F;kbd&gt; (delete character) and &lt;kbd&gt;c&lt;&#x2F;kbd&gt; (change character) can also be considered yank mode,
where the deleted&#x2F;changed characters are stored in the buffer so
that the paste command &lt;kbd&gt;p&lt;&#x2F;kbd&gt; or &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;p&lt;&#x2F;kbd&gt; can be executed.&lt;&#x2F;p&gt;
&lt;p&gt;To avoid storing in the buffer, use &lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;d&lt;&#x2F;kbd&gt; or &lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;c&lt;&#x2F;kbd&gt;. To copy or paste from the system clipboard,
use the keymaps below.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;space&lt;&#x2F;kbd&gt;&lt;kbd&gt;y&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Copy to system clipboard.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;space&lt;&#x2F;kbd&gt;&lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste from system clipboard.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;character-search&quot;&gt;Character search&lt;a class=&quot;post-anchor&quot; href=&quot;#character-search&quot; aria-label=&quot;Anchor link for: character-search&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Search for characters like in vim or neovim.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;&amp;#x2F;&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Search for characters&#x2F;words.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;n&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Go to the next search result.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;n&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Go to the previous search result.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;?&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Search for characters&#x2F;words backwards.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Unlike in vim, in helix, when searching with &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x2F;&lt;&#x2F;kbd&gt;,
the &lt;kbd&gt;n&lt;&#x2F;kbd&gt; direction remains forward and &lt;kbd&gt;shift
n&lt;&#x2F;kbd&gt; remains backward&#x2F;previous.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;multiple-cursors&quot;&gt;Multiple cursors&lt;a class=&quot;post-anchor&quot; href=&quot;#multiple-cursors&quot; aria-label=&quot;Anchor link for: multiple-cursors&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Adding cursors is very useful for changing characters
simultaneously. For example, for deleting, replacing, and regex
functions.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;c&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Search for characters&#x2F;words.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;c&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Go to the next search result.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;,&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Go to the previous search result.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;selecting-from-the-selection-results&quot;&gt;Selecting from the selection results&lt;a class=&quot;post-anchor&quot; href=&quot;#selecting-from-the-selection-results&quot; aria-label=&quot;Anchor link for: selecting-from-the-selection-results&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;This is intended to replace a selected character or text. Usually to
replace a word, similar to the sed regex function in vim.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;s&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Selects the appropriate character according to the selection.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;For example, the pattern works like this: select several times
with &lt;kbd&gt;x&lt;&#x2F;kbd&gt; or &lt;kbd&gt;%&lt;&#x2F;kbd&gt; for all lines. Press
&lt;kbd&gt;s&lt;&#x2F;kbd&gt;, then enter the desired character and press &lt;kbd&gt;enter&lt;&#x2F;kbd&gt;. It will automatically become a multi-cursor. You
can then change it as desired.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;additional-selection-with-regex&quot;&gt;Additional selection with &lt;em&gt;regex&lt;&#x2F;em&gt;&lt;a class=&quot;post-anchor&quot; href=&quot;#additional-selection-with-regex&quot; aria-label=&quot;Anchor link for: additional-selection-with-regex&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;This selection can use the plus sign &lt;code&gt;+&lt;&#x2F;code&gt; when using the &lt;kbd&gt;s&lt;&#x2F;kbd&gt; keymap in the selection area. For example: space and plus &lt;code&gt;+&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;straightening-from-selection&quot;&gt;Straightening from selection&lt;a class=&quot;post-anchor&quot; href=&quot;#straightening-from-selection&quot; aria-label=&quot;Anchor link for: straightening-from-selection&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;&amp;amp;&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Straighten the selection results.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;For example, there is a line like this.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 98) lorem&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 99) ipsum&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 100) dolor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 101) sit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 102) amet&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Becoming:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; *  97) lorem&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; *  99) ipsum&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 100) dolor&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 101) sit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; * 102) amet&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;dividing-the-selection-into-rows&quot;&gt;Dividing the selection into rows&lt;a class=&quot;post-anchor&quot; href=&quot;#dividing-the-selection-into-rows&quot; aria-label=&quot;Anchor link for: dividing-the-selection-into-rows&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;s&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;To split into options on each line. Generally used to straighten tables.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    | FRUIT   | AMOUNT |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    |---------|--------|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; | Apples  | 8      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    | Bananas | 6      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  | Oranges | 3      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     | Donuts  | 4      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Becoming:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     | FRUIT   | AMOUNT |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     |---------|--------|&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     | Apples  | 8      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     | Bananas | 6      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     | Oranges | 3      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     | Donuts  | 4      |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;selecting-down-to-specific-characters&quot;&gt;Selecting down to specific characters&lt;a class=&quot;post-anchor&quot; href=&quot;#selecting-down-to-specific-characters&quot; aria-label=&quot;Anchor link for: selecting-down-to-specific-characters&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;f&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Selects the line up to and including the specified character.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;t&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Selects the line up to but not including the specified character.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;f&lt;&#x2F;kbd&gt; and &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;t&lt;&#x2F;kbd&gt; also have
similar functions, except that they skip over whitespace characters
such as spaces or tabs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;replacing-characters-or-words&quot;&gt;Replacing characters or words&lt;a class=&quot;post-anchor&quot; href=&quot;#replacing-characters-or-words&quot; aria-label=&quot;Anchor link for: replacing-characters-or-words&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste with special characters.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste with the contents of the buffer or the system clipboard.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;repetition&quot;&gt;Repetition&lt;a class=&quot;post-anchor&quot; href=&quot;#repetition&quot; aria-label=&quot;Anchor link for: repetition&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Repetition can be used to repeat the same command, or to repeat the
previous search results &lt;kbd&gt;f&lt;&#x2F;kbd&gt; and &lt;kbd&gt;t&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;.&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Repeats the previous insert mode result.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;.&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Repeats the command from the previous &lt;kbd&gt;f&lt;&#x2F;kbd&gt; or &lt;kbd&gt;t&lt;&#x2F;kbd&gt; result.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;replacing-text-from-the-yank-clipboard-copy&quot;&gt;Replacing text from the &lt;em&gt;yank&#x2F;clipboard&lt;&#x2F;em&gt; copy&lt;a class=&quot;post-anchor&quot; href=&quot;#replacing-text-from-the-yank-clipboard-copy&quot; aria-label=&quot;Anchor link for: replacing-text-from-the-yank-clipboard-copy&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Once text has been copied, either by yanking or from the system
clipboard, it can be used to replace other text if it has been selected.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Replaces the selected text with the contents of the clipboard.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;merging-lines&quot;&gt;Merging lines&lt;a class=&quot;post-anchor&quot; href=&quot;#merging-lines&quot; aria-label=&quot;Anchor link for: merging-lines&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Multiple lines must first be selected with &lt;kbd&gt;x&lt;&#x2F;kbd&gt;, then
press &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;j&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;j&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Merges multiple selected lines.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;line-indentation&quot;&gt;Line indentation&lt;a class=&quot;post-anchor&quot; href=&quot;#line-indentation&quot; aria-label=&quot;Anchor link for: line-indentation&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Indents the current line or selected lines.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;&amp;gt;&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Indentation protrudes outward&#x2F;to the right.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;&amp;lt;&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Indentation protrudes inward&#x2F;to the left.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;addition-and-subtraction&quot;&gt;Addition and subtraction&lt;a class=&quot;post-anchor&quot; href=&quot;#addition-and-subtraction&quot; aria-label=&quot;Anchor link for: addition-and-subtraction&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Incrementing and decrementing values can be done in helix. This is
usually done to change values in a list.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;a&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Increases the value.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;x&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Decreases the value.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;For example:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1) list a&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;3) list b&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;4) list c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;5) list d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;6) list e&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Becoming,&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;1) list a&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;2) list b&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;3) list c&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;4) list d&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;5) list e&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;register-function&quot;&gt;&lt;em&gt;Register&lt;&#x2F;em&gt; Function&lt;a class=&quot;post-anchor&quot; href=&quot;#register-function&quot; aria-label=&quot;Anchor link for: register-function&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;This function is used to store different copies, which can be called
up at any time. Unlike the usual yank, which only stores one copy,
the register can store many different copies. register key is &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;For example, register:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;condition a: copy &lt;code&gt;sentence one&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;condition b: copy &lt;code&gt;sentence two&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;condition c: copy &lt;code&gt;sentence three&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;There are 3 conditions consisting of &lt;code&gt;a&lt;&#x2F;code&gt;, &lt;code&gt;b&lt;&#x2F;code&gt;, and &lt;code&gt;c&lt;&#x2F;code&gt;. To store the
register, use the command:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;a&lt;&#x2F;kbd&gt; &lt;kbd&gt;y&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Stores (yanks) the copy to register &lt;code&gt;a&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;b&lt;&#x2F;kbd&gt; &lt;kbd&gt;y&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Stores (yanks) the copy to register &lt;code&gt;b&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;c&lt;&#x2F;kbd&gt; &lt;kbd&gt;y&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Stores (yanks) a copy to register &lt;code&gt;c&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;After storing, next paste the text from a register.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;a&lt;&#x2F;kbd&gt; &lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste text from register &lt;code&gt;a&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;b&lt;&#x2F;kbd&gt; &lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paste text from register &lt;code&gt;b&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;c&lt;&#x2F;kbd&gt; &lt;kbd&gt;p&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Pastes text from register &lt;code&gt;c&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;The copied text can also be used to replace selected text.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;a&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Replaces the text from register &lt;code&gt;a&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;b&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Replaces the text from register &lt;code&gt;b&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;&amp;#x27;&lt;&#x2F;kbd&gt; &lt;kbd&gt;c&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Replaces text from register &lt;code&gt;c&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;macro-function&quot;&gt;&lt;em&gt;Macro&lt;&#x2F;em&gt; Function&lt;a class=&quot;post-anchor&quot; href=&quot;#macro-function&quot; aria-label=&quot;Anchor link for: macro-function&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Useful for storing command steps in a register. Default key is &lt;kbd&gt;@&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;q&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start macro recording.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;q&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Stop macro recording.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;q&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Run the macro function.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;5&lt;&#x2F;kbd&gt;&lt;kbd&gt;q&lt;&#x2F;kbd&gt; &lt;kbd&gt;r&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Run the macro function 5 times, can be replaced with &lt;code&gt;nq&lt;&#x2F;code&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;searching-with-selection&quot;&gt;Searching with selection&lt;a class=&quot;post-anchor&quot; href=&quot;#searching-with-selection&quot; aria-label=&quot;Anchor link for: searching-with-selection&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Search for text using &lt;kbd&gt;&amp;#x2F;&lt;&#x2F;kbd&gt; and then type the word you
want to find.  In addition to typing characters, another way is to
select characters as search characters.&lt;&#x2F;p&gt;
&lt;p&gt;After selecting a character word, for example with &lt;kbd&gt;w&lt;&#x2F;kbd&gt;&#x2F;&lt;kbd&gt;e&lt;&#x2F;kbd&gt;&#x2F;&lt;kbd&gt;b&lt;&#x2F;kbd&gt;, press &lt;kbd&gt;*&lt;&#x2F;kbd&gt;
to save it as a search register. Then the word can be searched for
with &lt;kbd&gt;n&lt;&#x2F;kbd&gt; or &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;n&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;*&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Keep selection results into search registers &lt;kbd&gt;&amp;#x2F;&lt;&#x2F;kbd&gt;.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;using-jumplist&quot;&gt;Using Jumplist&lt;a class=&quot;post-anchor&quot; href=&quot;#using-jumplist&quot; aria-label=&quot;Anchor link for: using-jumplist&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;With jumplist, you can save the cursor position at a specific location.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;ctrl&lt;&#x2F;kbd&gt;+&lt;kbd&gt;s&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Save jumplist.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;ctrl&lt;&#x2F;kbd&gt;+&lt;kbd&gt;o&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Next jumplist.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;ctrl&lt;&#x2F;kbd&gt;+&lt;kbd&gt;i&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Previous jumplist.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;rotate-and-delete-primary-selection&quot;&gt;Rotate and delete primary selection&lt;a class=&quot;post-anchor&quot; href=&quot;#rotate-and-delete-primary-selection&quot; aria-label=&quot;Anchor link for: rotate-and-delete-primary-selection&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;After selecting, there may be times when some selections are not
needed. By using &lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;,&lt;&#x2F;kbd&gt;, the selected results can
be deleted.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;)&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Go to the next selection.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;(&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Go to the previous selection.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;,&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Clear the main selection.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;changing-uppercase-lowercase-letters&quot;&gt;Changing uppercase&#x2F;lowercase letters&lt;a class=&quot;post-anchor&quot; href=&quot;#changing-uppercase-lowercase-letters&quot; aria-label=&quot;Anchor link for: changing-uppercase-lowercase-letters&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;To change uppercase letters to lowercase letters, use &lt;kbd&gt;`&lt;&#x2F;kbd&gt;, while to change lowercase letters to uppercase letters, use &lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;`&lt;&#x2F;kbd&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;`&lt;&#x2F;kbd&gt; or &lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;`&lt;&#x2F;kbd&gt; &amp;gt;}}&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Switch between lowercase and uppercase letters.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;~&lt;&#x2F;kbd&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Switch between uppercase and lowercase letters.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;separating-selections-with-regex-patterns&quot;&gt;Separating selections with &lt;em&gt;regex patterns&lt;&#x2F;em&gt;&lt;a class=&quot;post-anchor&quot; href=&quot;#separating-selections-with-regex-patterns&quot; aria-label=&quot;Anchor link for: separating-selections-with-regex-patterns&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Separating selections has specific use cases, such as capitalizing
a sentence, separating combined lines into multiple lines, and other
conditions that require separating selected words&#x2F;sentences.&lt;&#x2F;p&gt;
&lt;p&gt;The general steps are as follows.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Select a line, using either &lt;kbd&gt;x&lt;&#x2F;kbd&gt;, &lt;kbd&gt;w&lt;&#x2F;kbd&gt;, &lt;kbd&gt;e&lt;&#x2F;kbd&gt;, or &lt;kbd&gt;b&lt;&#x2F;kbd&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Press &lt;kbd&gt;shift&lt;&#x2F;kbd&gt;+&lt;kbd&gt;s&lt;&#x2F;kbd&gt; to split the selection.&lt;&#x2F;li&gt;
&lt;li&gt;Select the regex pattern. For example, separate by a period space &lt;code&gt;.&lt;&#x2F;code&gt;,
exclamation mark space &lt;code&gt;!&lt;&#x2F;code&gt;, or question mark space &lt;code&gt;?&lt;&#x2F;code&gt;. Sentences
are usually separated by separators and spaces. So, the regex is
&lt;code&gt;\. |! |\?&lt;&#x2F;code&gt;. Periods and question marks need to be preceded by a
backslash &lt;code&gt;\&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Select the cursor position to be in front of or behind the separated
sentence. Move it using &lt;kbd&gt;alt&lt;&#x2F;kbd&gt;+&lt;kbd&gt;;&lt;&#x2F;kbd&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;In multi-cursor mode, replace the desired changes with &lt;kbd&gt;r&lt;&#x2F;kbd&gt;, &lt;kbd&gt;c&lt;&#x2F;kbd&gt;, or &lt;kbd&gt;i&lt;&#x2F;kbd&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For example, there are 3 sentences. Separate them and capitalize the first letter.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;learn programming languages! python is a high-level programming language? created by guido van rossum.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Becomes:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #D4D4D4; background-color: #1E1E1E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Learn programming languages!&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;python is a high-level programming language?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Created by guido van rossum.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
  &lt;figure id=&quot;vid-helix-regex&quot; class=&quot;video-wrapper ref-placeholder&quot; data-ref=&quot;helix-regex&quot; class=&quot;video-center&quot;&gt;
    &lt;video
        src=&quot;.&amp;#x2F;regex-helix.webm&quot;
        preload=&quot;metadata&quot;
        playsinline
        controls
    &gt;
      Your browser does not support the video tag.
    &lt;&#x2F;video&gt;
    
      &lt;figcaption class=&quot;center&quot;&gt;Video: Helix Regex&lt;&#x2F;figcaption&gt;
    
  &lt;&#x2F;figure&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;a class=&quot;post-anchor&quot; href=&quot;#conclusion&quot; aria-label=&quot;Anchor link for: conclusion&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Helix is ideal because it uses minimal configuration with built-in
autocomplete, fuzzy search, and multi-cursor features. Although each
programming language’s &lt;code&gt;language-server&lt;&#x2F;code&gt; is installed separately
with Helix (as with other editors), Helix still has features such as
autopairs, fugitive, and others to support program writing. Settings
for LSP are available on the 

&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;helix-editor&#x2F;helix&#x2F;wiki&#x2F;How-to-install-the-default-language-servers&quot;&gt;Helix Wiki&lt;&#x2F;a&gt;. More complete
keymap configurations and usage instructions are available in the 

&lt;a href=&quot;https:&#x2F;&#x2F;docs.helix-editor.com&quot;&gt;official documentation&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Helix is considered to have fairly fast performance. It even
supports modals such as &lt;kbd&gt;space&lt;&#x2F;kbd&gt;, &lt;kbd&gt;f&lt;&#x2F;kbd&gt;, and &lt;kbd&gt;g&lt;&#x2F;kbd&gt;, which make navigation maneuvers easier
&lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;evans25&quot;&gt;(&lt;a href=&quot;#ref-evans25&quot;&gt;Evans, Julia&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;. Good to go to definition,
declaration, reference.&lt;&#x2F;p&gt;
&lt;p&gt;New users migrating from vim or neovim will certainly like it, and it
is definitely worth trying. Even if you are a veteran vim&#x2F;neovim with
decades of experience &lt;span class=&quot;ref-placeholder&quot; data-ref=&quot;lafdzun25&quot;&gt;(&lt;a href=&quot;#ref-lafdzun25&quot;&gt;Lafdzun, Kalamuna&lt;&#x2F;a&gt;)&lt;&#x2F;span&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
