# Top IDE for Crystal?

**URL:** <https://forum.crystal-lang.org/t/top-ide-for-crystal/1519>\
**Category:** Community\
**Created:** [December 20, 2019, 7:21pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519 "2019-12-20T19:21:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![randiaz95](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/randiaz95/32/669_2.png) [@randiaz95](https://forum.crystal-lang.org/u/randiaz95)\
**Post date:** [December 20, 2019, 7:21pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/1 "2019-12-20T19:21:14Z")

</div>

What IDE do you use and why?

I use VS CODE with all crystal extensions.

---

<div class="post-metadata">

**Author:** ![pynixwang](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/pynixwang/32/310_2.png) [@pynixwang](https://forum.crystal-lang.org/u/pynixwang)\
**Post date:** [December 21, 2019, 3:10am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/2 "2019-12-21T03:10:58Z")

</div>

vscode

---

<div class="post-metadata">

**Author:** ![konovod](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/konovod/32/229_2.png) [@konovod](https://forum.crystal-lang.org/u/konovod)\
**Post date:** [December 21, 2019, 11:07am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/3 "2019-12-21T11:07:35Z")

</div>

I like Atom more than VSCode but it doesn’t work well with WSL, so VSCode.

---

<div class="post-metadata">

**Author:** ![galaxy](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/galaxy/32/663_2.png) [@galaxy](https://forum.crystal-lang.org/u/galaxy)\
**Post date:** [December 23, 2019, 12:56pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/4 "2019-12-23T12:56:51Z")

</div>

I’m surprised people still use Atom. What do you like about it over VS Code?

---

<div class="post-metadata">

**Author:** ![konovod](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/konovod/32/229_2.png) [@konovod](https://forum.crystal-lang.org/u/konovod)\
**Post date:** [December 23, 2019, 2:00pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/5 "2019-12-23T14:00:03Z")

</div>

A lot of small things, matter of taste mostly. Atom shows which files were modified in files list, vscode’s file list looks dull and is always hidden below search results or changes to commit. Several months ago VSCode didn’t start if a PC doesn’t have a network card. Atom don’t ask for administrative priveleges to update.

---

<div class="post-metadata">

**Author:** ![alexeypetrushin](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/alexeypetrushin/32/492_2.png) [@alexeypetrushin](https://forum.crystal-lang.org/u/alexeypetrushin)\
**Post date:** [December 23, 2019, 4:01pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/6 "2019-12-23T16:01:23Z")

</div>

VS Code

---

<div class="post-metadata">

**Author:** ![nsuchy](https://avatars.discourse-cdn.com/v4/letter/n/c0e974/32.png) [@nsuchy](https://forum.crystal-lang.org/u/nsuchy)\
**Post date:** [December 25, 2019, 4:50am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/7 "2019-12-25T04:50:25Z")

</div>

I use VS Code Insider with the Crystal extension you don’t need every extension, one is more than enough 🙂

---

<div class="post-metadata">

**Author:** ![girng\_github](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/girng_github/32/571_2.png) [@girng\_github](https://forum.crystal-lang.org/u/girng_github)\
**Post date:** [December 25, 2019, 10:44pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/8 "2019-12-25T22:44:33Z")

</div>

[Notepad](https://i.imgur.com/BwSiwS7.png). The best IDE in the world

---

<div class="post-metadata">

**Author:** ![darenw](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/darenw/32/647_2.png) [@darenw](https://forum.crystal-lang.org/u/darenw)\
**Post date:** [December 27, 2019, 5:32am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/9 "2019-12-27T05:32:05Z")

</div>

I’ve been using Geany for about a decade now. I prefer simple text editor with just enough nice features, such as syntax highlighting, to make it easier for working on C++, D, Python, Ruby, HTML/JS/CSS, and now Crystal.

Before, I had used other text editors, but one fine day I was fixing something in an .hpp file, saved it and closed the editor window only to find a few minutes later that I had another editor up with the same .hpp file. I was making different changes to different in-memory copies of the same file! BAD! So ever since, I’ve used only editors that won’t let me make that mistake again. Editors that list all the files in a directory, and let me open only one at a time, but allow separate windows so I can look at an .hpp while writing a .cpp w/o flipping tabs other gymnastics. Swinging the ol’ eyeballs between two directions is fast, easy, natural.

I have been using Atom since July, just for to see what it does, how it’s different from other editors, and if it’s actually better or just hype from fanatics. I find it heavy, slow to come up. I like fast and light, and for now Geany is that way.

---

<div class="post-metadata">

**Author:** ![nico](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nico/32/692_2.png) [@nico](https://forum.crystal-lang.org/u/nico)\
**Post date:** [December 27, 2019, 6:26pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/10 "2019-12-27T18:26:53Z")

</div>

What extension use on VS Code (for auto-completion, doc hover, formatting, …)?  
I have installed [https://github.com/crystal-lang-tools/vscode-crystal-lang](https://github.com/crystal-lang-tools/vscode-crystal-lang) but doesn’t work [https://github.com/crystal-lang-tools/vscode-crystal-lang/issues/104](https://github.com/crystal-lang-tools/vscode-crystal-lang/issues/104)

This extension no longer seems to be maintained ☹

EDIT: I have installed [https://github.com/crystal-lang-tools/scry](https://github.com/crystal-lang-tools/scry), it works now. 🥳

---

<div class="post-metadata">

**Author:** ![pedro](https://avatars.discourse-cdn.com/v4/letter/p/919ad9/32.png) [@pedro](https://forum.crystal-lang.org/u/pedro)\
**Post date:** [January 12, 2020, 9:53am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/11 "2020-01-12T09:53:59Z")

</div>

You should give a VSCode a try. It is an editor similar to Atom in its origins and in the stack it uses, but Microsoft (of all companies, right?) made a rather impressive job tackling the disadvantages of that breed of editors.

It’s much snappier than atom and is quite reminiscent of older simpler non-bloated editors such as geany.

---

<div class="post-metadata">

**Author:** ![j8r](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/j8r/32/111_2.png) [@j8r](https://forum.crystal-lang.org/u/j8r)\
**Post date:** [January 12, 2020, 12:56pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/12 "2020-01-12T12:56:50Z")

</div>

I use Geany like @darenw , and I am considering using a Qt-based text editor like [Kate with scry/LSP](https://kate-editor.org/post/2019/2019-08-10-kate-lsp-more-languages-supported/).  
My main needs are:

- Fast, quick startup, light, general-purpose text editor (editing source code, files in archives, random files etc)
- Integrates well on my Desktop ( Qt is a nice plus for supporting Breeze Dark theme, dotfiles, system package is a plus)
- FOSS product I can trust (the pre-built VSCode by Microsoft isn’t)
- Simple - I don’t need an IDE with loads of features

---

<div class="post-metadata">

**Author:** ![nico](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nico/32/692_2.png) [@nico](https://forum.crystal-lang.org/u/nico)\
**Post date:** [January 14, 2020, 10:21pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/13 "2020-01-14T22:21:20Z")

</div>

Crystal support in VSCode works well for you?  
For me it don’t works half the time, it’s not practical without a good auto-completion, and additionally (but very useful) go to definition and outline.

---

<div class="post-metadata">

**Author:** ![galaxy](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/galaxy/32/663_2.png) [@galaxy](https://forum.crystal-lang.org/u/galaxy)\
**Post date:** [January 14, 2020, 11:09pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/14 "2020-01-14T23:09:46Z")

</div>

vim. Of all the available options, it gives me the most flexibility and speed.

---

<div class="post-metadata">

**Author:** ![watsy0007](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/watsy0007/32/671_2.png) [@watsy0007](https://forum.crystal-lang.org/u/watsy0007)\
**Post date:** [February 25, 2020, 3:41pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/15 "2020-02-25T15:41:23Z")

</div>

yeah, for me, auto-completion is very important feature.

---

<div class="post-metadata">

**Author:** ![ComputerMage](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/computermage/32/719_2.png) [@ComputerMage](https://forum.crystal-lang.org/u/ComputerMage)\
**Post date:** [February 25, 2020, 6:26pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/16 "2020-02-25T18:26:05Z")

</div>

Install scry and it should start working better.

---

<div class="post-metadata">

**Author:** ![faustinoaq](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/faustinoaq/32/1126_2.png) [@faustinoaq](https://forum.crystal-lang.org/u/faustinoaq)\
**Post date:** [March 31, 2020, 10:23am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/17 "2020-03-31T10:23:28Z")

</div>

Yeah, vim and emacs have better plugins for crystal right now, I’m trying to figure out a way to improve VSCode plugin, [Scry](https://github.com/crystal-lang-tools/scry) is a good alternative to get more features, although it still requires a lot of work to be full complain to the [Microsoft Language Server Protocol Specification](https://microsoft.github.io/language-server-protocol/).

VSCode extension status according to its features is:

- Formatting: ⭐ ⭐ ⭐ ⭐ still requires full project formatting (it was available on scry)
- Syntax color: ⭐ ⭐ ⭐ there still some issues in crystal.json and Crystal.tmLanguage port.
- Go to definition: ⭐ it requires the crystal compiler to compile the whole project almost every time and also the issue on how the crystal compiler works, sometimes is hard to find dependencies because missing `require` statements, or implicit `require` done by the developer.
- Completion: 👎 Hard coded completion is not feasible. I tried it just as an experiment to give basic completion by hard coding most of crystal syntax and classes in one big file. It worked at first but it is not usable for serious projects. Scry tries a better way, implemented by @laginha87 almost [two years ago](https://github.com/crystal-lang-tools/scry/pull/46)

Well, at least there someway to get VSCode working seamlessly with crystal 😃

[Nim lang](https://marketplace.visualstudio.com/items?itemName=kosz78.nim) is a great example of a good VSCode extension

---

<div class="post-metadata">

**Author:** ![Sega100500](https://avatars.discourse-cdn.com/v4/letter/s/aeb1de/32.png) [@Sega100500](https://forum.crystal-lang.org/u/Sega100500)\
**Post date:** [September 24, 2025, 10:21am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/18 "2025-09-24T10:21:05Z")

</div>

> [@Language Popularity: Try to negotiate with JetBrains to support the Crystal language in their IDE](https://forum.crystal-lang.org/t/language-popularity-try-to-negotiate-with-jetbrains-to-support-the-crystal-language-in-their-ide/8415):
>
> It’s a very popular JetBrains IDEs ( [JetBrains IDEs: enjoy an exceptional developer experience](https://www.jetbrains.com/ides/) ) for programming. Unfortunately, it doesn’t yet support the Crystal language. Try to negotiate with JetBrains at least a plugin for it that supports Crystal syntax. Believe me, this could greatly contribute to Crystal’s popularity. I currently use RubyMine for writing programs on Crystal, but the syntax is still slightly different.

---

<div class="post-metadata">

**Author:** ![MistressRemilia](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/mistressremilia/32/2585_2.png) [@MistressRemilia](https://forum.crystal-lang.org/u/MistressRemilia)\
**Post date:** [September 24, 2025, 8:27pm UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/19 "2025-09-24T20:27:16Z")

</div>

I use Emacs without an LSP for everything, including Crystal. That’s how I’ve done for 20+ years so I’m just used to it.

---

<div class="post-metadata">

**Author:** ![sbsoftware](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/sbsoftware/32/2192_2.png) [@sbsoftware](https://forum.crystal-lang.org/u/sbsoftware)\
**Post date:** [September 26, 2025, 8:06am UTC](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519/20 "2025-09-26T08:06:00Z")

</div>

Also chiming in here to make sure us simpler folks don’t get lost in the crowd ;-)

I use vim for everything, with a very limited number of plugins.

[Next page](https://forum.crystal-lang.org/t/top-ide-for-crystal/1519.md?page=2)
