summary refs log tree commit diff
path: root/posts/08_01_2022-thoughts-on-neovim.html
blob: a850b460f3d87a7a5cca861e71ba2b83b5aafeac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<!DOCTYPE html>
<html>
  <head>
    <title>Thoughts on Neovim</title>
    <link rel="stylesheet" href="/resources/style.css"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>
  <body>
    <nav>
      <a href="/">Home</a>
      <a href="/about.html">About</a>
      <a href="/changelog.html">Changelog</a>
      <a href="/posts/">Posts</a>
    </nav>
    <h1>
      Thoughts on Neovim
      <span class="subtitle">Who even needs an IDE anyways?</span>
    </h1>

    <h2>Why I'm using Neovim</h2>

    <p>
      When I first started coding in high school and then later in early
      college I used to jump around between editors a lot more than I do today.
      I used Notepad++, then Visual Studio, briefly Netbeans, then Atom.
    </p>

    <p>
      But since settling into frontend web development I've stayed with VSCode
      for a very long time.  I liked it because it was straightforward to get
      started with, but versatile enough to extend for other languages.
      Between various jobs and projects I used it for Javascript, Java, C#,
      Rust, and C - and it did admirably at pretty much all of these.
    </p>

    <p>
      But about a year ago I saw that VSCode had a Neovim plugin, and I was
      intrigued.  I'd wanted to get more familiar with Vim beyond the basic
      hjkl navigation, and this seemed like a great way to do that! 
    </p>

    <p>
      So for the last year and change I've had the
      <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim">vscode-neovim</a>
      plugin installed, and I've been really enjoying it!
    </p>

    <p>
      I quickly fell in love with visual block mode, or the "delete N words"
      commands.  They're just so handy I suddenly felt like they were missing
      if I needed to edit code any other way!
    </p>

    <p>
      But over the weekend I made the jump from using Neovim inside VSCode to
      using it more or less on its own.  I saw a video that mentioned the
      AstroNvim configuration framework and Neovide, and decided "yeah, I think
      I want to try that", and a few days later . . . here we are.
    </p>

    <h2>How is it going?</h2>

    <p>
      Overall, surprisingly well.
    </p>

    <p>
      The AstroNvim config I'm using already had NeoTree set up which is
      very nice.  I've figured out how to get ESLint and Prettier configured
      for work, rust-analyzer installed for my own projects, I've been poking
      at themes over and over again, and honestly . . . I'm really liking this.
    </p>

    <p>
      Getting Neovide to connect to a VM over the network was relatively
      straightforward, I love how easy it is to drop my config into git and
      keep it synced between computers, and finally having proper mouse support
      (which I never could get sorted out with my terminal) is a pretty big
      game changer for when I'm just reading code.
    </p>

    <p>
      Also, I'd be lying if I said that I didn't love the smooth scrolling and
      cursor animation.  I am a simple girl after all.
    </p>

    <h2>Should you try replacing your IDE?</h2>

    <p>
      That is a tricky question to answer.
    </p>

    <p>
      I was comfortable spending some time experimenting with this because I
      already had decent familiarity with Vim and had been using Neovim
      specifically for a while.  If you don't have any similar experience,
      the learning curve is going to be pretty steep.
    </p>

    <p>
      But hey - if you're looking for a challenge, you'll definitely learn
      a lot.
    </p>
  </body>
</html>