Skip to content
gremlin-art edited this page Aug 21, 2024 · 90 revisions

If you add more editor support, don't forget to add it to the FAQ as well.

The following editors have some Nim support:

Visual Studio Code aka VSCode (and VSCodium)

IntelliJ IDEA, CLion, etc. (Jetbrains IDEs)

  • https://plugins.jetbrains.com/plugin/15128-nim (JetBrains Official Nim Plugin)

  • Syntax highlighting - token-based and semantic

  • Syntax errors highlighting

  • Code completion, find usages and refactoring of unqualified symbols

  • Import and include resolution to relative files

  • Code folding

  • Structure view

  • Different forms of the same identifier are recognised properly, e.g. foo, f_O_O, fOO or even f oo

  • Coming soon:

    • Import resolution to standard Nim symbols and Nimble packages
    • Code completion, find usages and refactoring of qualified symbols
    • Compiler errors in editor
    • Support for run/debug configurations
    • Nimscript and nimble files syntax highlighting
    • Quick documentation
  • https://plugins.jetbrains.com/plugin/14520-nimatron/ (Nimatron plugin): DEPRECATED

    • Syntax-highlighting.
    • Nim routines (funcs, procs, etc) listed in Structure View.
    • Folding of Nim statements.

Emacs

Vim

" acp plugins
plug 'girishji/vimcomplete'
plug 'girishji/lsp-complete.vim'
plug 'yegappan/lsp'

" for nim plugins
plug 'Angluca/nim.vim'
plug 'Angluca/auto-pairs'

" lsp config
au filetype nim call LspAddServer([#{
            \    name: 'nimlsp',
            \    filetype: ['nim'],
            \    path: 'nimlsp',
            \    args: []
            \  }])
  • vim: PlugInstall
  • cmd: nimble install nimlsp
  • Very good plugins for nim :)

Helix

  • For current Helix versions (24.7 and later) just run nimble install nimlangserver (no need to edit languages.toml)
  • For older Helix versions you also need to edit ~/.config/helix/languages.toml:
[[language]]
name = "nim"
language-servers = [ "nimlangserver" ]

Textadept

LiClipse

LiClipse is a plugin for Eclipse (which also provides a standalone version for convenience) which provides Nim support providing syntax-highlighting, outline, comment/uncomment (ctrl+/), select/deselect scope (Shift+Alt+Up/Down), auto-indent, mark occurrences, user templates, multiple cursors (Ctrl+K or Ctrl+Alt+mouse select) and indent guides.

Scite

Recent versions of Scite have out-of-the-box support for Nim. For older versions:
http://sourceforge.net/p/scintilla/scite/ci/default/tree/src/nimrod.properties?format=raw

To enable syntax highlighting, edit the global config file: (from http://forum.nim-lang.org/t/312)

  • remove nimrod from the list in imports.exclude=(...lots of stuff)

To add *.nim to Scite's "All Source" filter (tell Scite to treat .nim files as source code):

  • nimrod.properties : after file.patterns.nimrod=*.nim, add one more line : *source.patterns.nimrod=$(file.patterns.nimrod);
  • SciTEGlobal.properties : if source.files line already looks like source.files=$(star *source.patterns.), we're done ;
    • otherwise, edit source.files to make scintilla recognise .nim -- e.g. add .nim directly to the list, etc

Aporia

Aporia is a Nim IDE written in Nim.

https://github.com/nim-lang/Aporia/

Visual Studio

https://github.com/Gravityzwell/NimStudio

LightTable

https://github.com/zah/nim.lt/

Atom

Gedit/Other GtkSourceView editors

There is a .lang file for gedit here

Geany

Geany is a lightweight GUI text editor using Scintilla and GTK+, including basic IDE features. It supports syntax highlighting for Nim since Geany 1.36.

Ctags

Basic ~/.ctags rules for Nim code (Feel free to improve and contribute) Don't use this if possible, Nim idetools provides better results.

--langdef=nim
--langmap=nim:.nim
--regex-nim=/(\w+)\*?\s*=\s*object/\1/t,class/
--regex-nim=/(\w+)\*?\s*=\s*enum/\1/t,enum/
--regex-nim=/(\w+)\*?\s*=\s*tuple/\1/t,tuple/
--regex-nim=/(\w+)\*?\s*=\s*range/\1/t,subrange/
--regex-nim=/(\w+)\*?\s*=\s*proc/\1/t,proctype/
--regex-nim=/proc\s+(\w+)/\1/f,procedure/
--regex-nim=/method\s+(\w+)/\1/f,method/
--regex-nim=/proc\s+`([^`]+)`/\1/o,operator/
--regex-nim=/template\s+(\w+)/\1/t,template/
--regex-nim=/macro\s+(\w+)/\1/m,macro/

Alternatively, there's a native tags generator specifically for Nim: https://bitbucket.org/nimcontrib/ntags

jEdit

https://github.com/exhu/nimrod-misc/tree/master/jedit

Sublime

  • https://github.com/vanyle/SublimeNim

    SublimeNim is a Sublime Text 4 plugin for Nim. Some features:

    • Syntax highlighting
    • Highlight errors (Using nim check)
    • Show tooltips with type information
    • Goto Definition (link inside tooltip)
    • Autocompletion (based on nimsuggest)
    • Shows your documentation
    • Keyshortcuts for building and generation documentation
  • https://github.com/Varriount/NimLime

    NimLime is a Sublime Text plugin that supports:

    • Syntax highlighting
    • Go to definition
    • Error checking and highlighting through the compiler
    • Completion suggestions though the compiler
    • Babel package manager interaction
  • https://github.com/leonardoce/nimrod-sublime

Kate

Syntax highlighting:

https://github.com/PhilipWitte/NimKate

TextMate

Available from the bundle installer in preferences (repository).

QtCreator

Enable the experimental plugin 'Nim' from the menu Help -> About Plugin.. Support

  • Syntax Highlighting
  • Debugging
  • Simple project handling

KDevelop

https://github.com/xyz32/KDevelop-template

Demo: https://vimeo.com/135918228

KDevelop templates for Nim project and Nim file:

  • Project management (build/run configuration)
  • New nim file
  • Debug with gdb (You will need to uncomment the debug flag in the nim.cfg file)
  • Syntax Highlighting (Needs Kate syntax highlighting).

Make sure you have both Nim and Nimble installed.

Howl

http://howl.io

Recent versions of Howl have built-in Nim syntax highlighting.

Micro

https://github.com/zyedidia/micro

Has built-in Nim syntax highlighting

Notepad++

  • https://github.com/jangko/nppnim

    nppNim is a plugin written entirely in Nim

    • syntax highlighting
    • code folding
  • https://github.com/gremlin-art/nim2_ide

    nim2_ide is a plugin written in Nim v2

    • unicode syntax highlighting
    • code folding
    • indentation guides
    • advanced features (using nimsuggest):
      • auto-completion
      • call tips
      • code analysis
      • hover for definition
      • go to definition
      • symbol usages - aka. references
    • pretty format (using nimpretty)
    • compile

Code::Blocks

Pull request with the description of how to apply the attached settings locally to enable the Nim syntax highlighting.

Kakoune

http://kakoune.org/

Has built-in Nim syntax highlighting and external linting support using Nim check with this hook

CudaText

Nim lexer is present in addons. To install it, use menu item "Plugins / Addons Manager / Install".

Plugin "LSP Client" supports Nim LSP server good: https://wiki.freepascal.org/CudaText_plugins#LSP_server_for_Nim

Language Server Protocol (LSP)

https://github.com/PMunch/nimlsp

Partial implementation including completion and definitions. Will require separate syntax and indenting plugin.

Clone this wiki locally