This website uses cookies to enhance browsing experience and provide additional functionality.
The cookies set by this website cannot be used to identify or track you. They do not contain any personal information.
See the Privacy Notice for more information.

By clicking Ok you give your permission to store small bits of unpersonalized data ("Cookies") on your device.
If you cannot agree with the above and do not want cookies to be stored in your browser, please leave this site now.
Ok
Twitter Email
subspace (/ˈsʌbspɛɪs/)
a subset of a tensor space that is closed under addition and scalar multiplication

My Neovim Dotfiles

Author: Alex
Title: My Neovim dotfiles
Language: en-US
Number of words: 390
Created: 14:11 on Monday, 02. January 2023
Modified: 02:30 on Wednesday, 04. January 2023
Keywords: neovim, lua
Excerpt:

My personal configuration (aka „dotfiles“) for the Neovim text editor. The project is hosted on GitLab and can serve as base for your own config. But I advice against using it directly, because it is fast-moving target and some changes may even break it.

Tags: neovim
Page layout: default_dyn
Media: 2 Object(s)
Last modified: , 390 Words
14:11 on Monday, 02. January 2023 | by Alex in Neovim

Core features:

The configuration is built around Neovim’s native LSP implementation and uses Treesitter for advanced highlighting, nvim-cmp for autocompletion, neo-tree as file-tree and many more plugins. The goal is to create an editor configuration for software developers, using all the advanced features.

Neovim-Orgmode is also included.

Requirements

  • Neovim 0.8 or later is the minimum supported version. Some OS-level prerequisites like ripgrep and fd are necessary for optimal functionality of some plugins (particularly telescope).

  • A working C compiler might be required to install additional Tree-Sitter parsers.

  • Git is required to install and update plugins

  • A terminal with True Color support and a NERD Font is highly recommended. Without them, the visual quality will suffer greatly. I suggest either Alacritty or Kitty. Both will make Neovim look much better and increase performance of all terminal-based applications. A NERD Font comes with many symbols, icons, Unicode characters and even emojis. Without such a font, Neovim would not be able to display filetype icons, emojis and many other symbols. My NERD Font of choice (see screen shots) is Iosevka, a free monospaced font that comes with many variations- Available on the NERD Font download page

How it looks

How my Neovim looks like - with the „cold“ theme

The color theme is a modified version of sonokai and uses some advanced features like different background colors for special windows like Neotree, terminal and outline views. It also comes with 2 color variants, a cold one with a blue-ish tint and a warm variant with a more red-ish look.

Here is the warm variant, also visible is the right sidebar with the symbol outline viewer.

How my Neovim looks like - with the „warm“ theme and the outline sidebar.

LSP configuration

The configuration does not use LSPInstall. Language servers are configured manually in lua/setup_lsp. The paths to language servers are configured in lua/config.lua. You can optionally enable Mason and let it do all the installation work. I prefer a manual LSP configuration and keep the language servers updated externally.

Pre-configured language servers:

  • clangd (C, CPP, objective C)
  • gopls (Go)
  • tsserver (JavaScript, TypeScript)
  • pyright (Python)
  • cssls (CSS and SCSS)
  • html-language-server
  • dartls (Dart and Flutter)
  • rust-analyzer (Rust, obviously)
  • sumneko_lua (Lua)
  • vimls (Vim Script)
  • nimlsp (The Nim language)
  • texlab (TeX and LaTeX)
  • als (Ada)
  • metals (for Scala, but this requires a lot of additional installation work)

How to use this.

The config is highly modular. Many plugins can be enabled or disabled by editing lua/config.lua. After changing the plugin configuration, running a PackerSync is mandatory.

Where to get?

The project is hosted on GitLab

Issues

  • Tree-Sitter: JavaScript parser is disabled, because it’s just too damn slow. You can change this in lua/setup_treesitter.lua.
  • Tree-Sitter: Indentation feature is disabled, because it can cause massive memory leaks. See this issue. You may also change this in lua/setup_treesitter.lua.
  • Color scheme: still some inconsistencies, it’s WIP.
neovim