Better TypeScript errors, project wide search and replace, UI forms in Neovim, reimagined :intro
Email Newsletter
Sign up with your email address to receive an email when a new issue of This Week in Neovim is available
Introduction
I'm back from vacation and this week we have a big update from the past 4 weeks.
Matt Pocock's ts-error-translator for VSCode was ported to Neovim, we have code examples for adding a VS Code like Search and Replace experience, reimagining the :intro
command and building UI forms inside Neovim.
There are exciting updates from mini.nvim, Kickstart.nvim and grapple.nvim
We have several contributions to Neovim core and more interesting plugins to share!
Hope you enjoy this weeks issue!
Neovim core
Updates of Neovim itself, which are available on Neovim nightly.
- @neovim on Twitter
- Neovim news
:h news.txt
updates in Neovim directly- PR's on GitHub
Neovim Core Commits
- feat(lua): deprecate vim.tbl_add_reverse_lookup
- feat(lsp): add fswatch watchfunc backend
- feat!: rewrite TOhtml in lua
- feat(lsp): support completion itemDefaults
- feat(treesitter): add folding for
InspectTree
(#27518) - feat(extmark): window scoped extmark
- feat(tabline): middle mouse button now closes tab (#27522)
- fix(treesitter): correctly handle query quantifiers (#24738)
- refactor(lua): use Arena when converting from lua stack to API args
Neovim Plugin Community
Neovim is full of active plugins. This section is about the community and what is going on.
Resources & articles
Developing VS Code like Search and Replace using nvim-spectre
In this Reddit post mobility shares how they added VS Code like search and replace using nvim-spectre and NuiComponents.
Reimagining :intro
In this Reddit post GnikDroy shares an implementation on how they added additional information & highlighting to the :intro command and the default startup screen.
Building UI forms with Nui
In this Reddit post mobily shares an implementation on how to build forms in Neovim using Nui.
3 Vim commands for blazingly fast navigation between brackets
In this blog post Max Shen shares 3 tips on how to quickly and efficiently navigate between bracked in vim.
New plugins
dmmulroy/ts-error-translator.nvim
A port of Matt Pocock's ts-error-translator for VSCode for turning messy and confusing TypeScript errors into plain English.
ts-error-translator.nvim is a plugin for translating messy TypeScript errors into plain English. It can be easily installed and configured to improve error messages within Neovim.
nvimtools/hydra.nvim
Create custom submodes and menus
hydra.nvim implements the Emacs Hydra package concept in Vim, enabling a sequential execution of keybindings by activating a "head" with a single key press. The Hydra is interrupted by pressing a key that is not part of the sequence.
artemave/workspace-diagnostics.nvim
Populate diagnostics for all projects files, not just the opened ones.
workspace-diagnostics.nvim populates project-wide LSP diagnostics, regardless of the open files. It automatically fetches diagnostics for all project files and supports customizable project file configurations.
samharju/synthweave.nvim
Synthwave '84 colorscheme port for Neovim
Zeioth/heirline-components.nvim
Distro agnostic components for your Neovim heirline config
heirline-components.nvim is a collection of distro-agnostic components for configuring the Neovim heirline interface, offering tabline, winbar, statuscolumn, and statusline components along with customizable options for icons and colors.
backdround/global-note.nvim
Opens global note in a float window
global-note.nvim provides a simple way to create and toggle global and project local notes in Neovim. It offers float window functionality with customizable options for file locations, titles, and autosave features. Users can create additional presets for different types of notes.
allaman/emoji.nvim
A plugin to search for and insert emojis/kaomojis right from Neovim 😀
emoji.nvim allows easy search and insertion of emojis and kaomojis in Neovim, featuring automatic updates, integration with telescope.nvim and nvim-cmp, and no dependencies.
rasulomaroff/telepath.nvim
Actions at a distance using telepathy 🫢✨
telepath.nvim is a motion extension for Leap that enables remote operation on textobjects without creating new ones. It supports jump, cursor restoration, recursion, bidirectional search, and custom mappings, enhancing text manipulation in Neovim.
samharju/yeet.nvim
Plugin for running shell commands in terminal buffers or tmux panes.
yeet.nvim enables running shell commands in terminal buffers or tmux panes without feedback on success or failure. It simplifies command execution in Neovim without the need for configuration.
arjunmahishi/flow.nvim
A neovim plugin that lets you build custom commands to automate parts of your development workflow
flow.nvim enables running code snippets within the editor, enhancing productivity by automating tasks. It integrates with Telescope for advanced functionality.
massix/org-checkbox.nvim
Very simple plugin to convert lists into checkboxes in org-mode files
org-checkbox.nvim converts lists to checkboxes and back in org-mode files
deathbeam/autocomplete.nvim
Very simple and minimal autocompletion for cmdline and buffer using LSP and Tree-sitter with signature help
autocomplete.nvim provides minimal autocompletion for the command line and buffers using LSP and Tree-sitter with signature help.
polirritmico/telescope-lazy-plugins.nvim
A Telescope picker to quickly access plugins configurations from the lazy.nvim spec.
telescope-lazy-plugins.nvim enables quick access to plugin configuration files for Lazy configurations using a Telescope picker. It allows easy navigation and opening of plugin repository webpages or local clone directories. The plugin simplifies managing plugin configurations spread across multiple files or grouped separately.
yanskun/gotests.nvim
that runs gotests with Neovim
gotests.nvim is a plugin for generating tests in Go using gotests. It provides commands to generate tests for specific functions and methods within a Go file.
echasnovski/mini.deps
Plugin manager. Part of 'mini.nvim' library.
mini.deps is a minimal plugin manager that enables managing plugins using Git and built-in packages in Neovim. It allows adding, updating, deleting plugins, handling dependencies, snapshots, and offers lazy loading functionality.
massix/termux.nvim
Neovim plugin to interact with the Termux APIs, useful for displaying various information in the statusline
dwrdx/mywords.nvim
Highlight words with different colors in neovim
mywords.nvim highlights words with different colors in Vim, automatically clearing old highlights when no available colors remain.
mvllow/matcha.nvim
Match and toggle augroups and options
matcha.nvim helps manage augroups and toggle options in Neovim. Keymaps can be configured with a shared prefix, and complex types can be toggled.
icholy/lsplinks.nvim
LSP textDocument/documentLink support for neovim
lsplinks.nvim extends the default gx behavior in Neovim to support LSP document links. It enables jumping to references in swagger/openapi files and opening URLs like https://pkg.go.dev from go.mod or import statements.
mimikun/human-rights.nvim
A neovim plugin to check and display whether your machine have human rights.
human-rights.nvim displays system information like CPU, GPU, Memory, Parallelism, and Disk, with commands to show specific details.
S1M0N38/love2d.nvim
A simple Neovim plugin to build game with LÖVE 👾
love2d.nvim is a plugin that simplifies working with LÖVE 2D game development in Neovim. It provides configurations for LSP integration with LÖVE, as well as keybindings to start and stop the game directly from Neovim.
Myzel394/easytables.nvim
Easily insert and edit markdown tables using Neovim with a live preview and useful helpers
easytables.nvim allows users to create and edit Markdown tables seamlessly. The plugin features real-time table previews, functionalities to add/remove rows and columns, and options to move cells, rows, and columns within the table.
bartman/history-select.nvim
nvim lua dialog box with a history file, based on telescope UI
history-select.nvim provides a dialog storing new input into history files, and enables selecting previous inputs using a Telescope interface.
deathbeam/lspecho.nvim
Just echo the LSP progress, its that simple
lspecho.nvim echoes LSP progress messages on the command line with a simple status display that does not need additional interface elements.
Zeioth/distroupdate.nvim
Neovim plugin to update your current distro from its github remote
distroupdate.nvim is a tool to update your Neovim configuration from the GitHub repository, offering commands like :NvimDistroUpdate to fetch the latest changes.
drop-stones/im-switch.nvim
Neovim plugin to switch IMs automatically.
im-switch.nvim automatically switches input methods in response to Neovim events, effectively managing input method settings without requiring external tools.
KDesp73/project-starter.nvim
A neovim plugin for creating template project structures for various languages
project-starter.nvim facilitates creating template project structures for various programming languages. It offers commands to generate projects in languages such as C, C++, Java, Python, Ruby, and Android using Kotlin, along with options to customize default project paths.
LukasPietzschmann/boo.nvim
Quickly pop-up lsp-powered infos of the thing your cursor is on
boo.nvim provides a popup window with LSP information for the current cursor location. It offers customizable configurations, including window size limits, escape mappings for closing, and automatic closure when switching buffers.
fbuchlak/cmp-symfony-router
Source of symfony routes for nvim-cmp
cmp-symfony-router is a source plugin for nvim-cmp that provides autocompletion for symfony routes.
mvllow/stand.nvim
Time to stand reminders
stand.nvim provides time to stand reminders. Installation and setup are simple, with options to customize the reminder interval. Commands allow users to display time remaining, stand immediately, set stand intervals, disable or enable the timer.
Rentib/cliff.nvim
jk until falling
cliff.nvim moves the cursor up/down until it almost falls off the cliff. If the cursor is positioned at position (row, column), then after calling cliff.go_down or cliff.go_up the cursor will move to the furthest row such that every line in between either is of length greater than column or every line is shorter than column.
IsWladi/Gittory
Gittory is a NeoVim plugin written in Lua that changes your working directory to the root of your project if you use Git. It is useful to use with Telescope and Harpoon, depending on your needs and workflow.
Gittory simplifies utilizing Telescope and Harpoon within your Git projects by setting the working directory to the root folder automatically.
Sam-programs/expand.nvim
Write if statements / functions quickly by expanding their pairs with a single keymap.
expand.nvim allows for quick expansion of statements in various programming languages by defining pairs of opening and closing symbols.
2KAbhishek/termim.nvim
Neovim Terminal, Improved 🦾💻
termim.nvim simplifies and enhances the Neovim terminal experience by offering features like automatic insertion into insert mode, minimizing clutter, auto-closing terminals, maintaining buffer list integrity, and providing commands for fullscreen and split terminals. Installation is simple, and it supports customizable commands and mappings for improved usability.
marcosantos98/clang-format.nvim
Use clang-format on :w on .c/.h files
clang-format.nvim is a tool that utilizes the clang-format to format the current buffer using a specified style file path.
gczcn/antonym.nvim
The neovim plug-in can replace the word under the cursor with its antonym
antonym.nvim replaces words with their antonyms in Neovim, utilizing a command to swap the word under the cursor with a defined antonym list. Configuration options are available for custom antonym matches and keybindings.
fnune/recall.nvim
Recall refines the use of Neovim marks by focusing on global marks, streamlining their usage and enhancing their visibility and navigability.
recall.nvim enhances the functionality of Neovim marks by focusing on global marks, providing consistent visual indicators, and simplifying mark navigation and management through command shortcuts.
kilavila/nvim-bufferlist
Simple Neovim plugin for listing, navigating and deleting buffers. Written in Lua
nvim-bufferlist is a plugin for improved buffer management and quick navigation between pinned files. It enhances the :ls command and provides features like listing open buffers, navigating to buffers, closing buffers, and pinning files for quick access. It includes commands for opening and managing buffer lists, as well as keymaps for easy navigation.
kilavila/nvim-yoink
Simple Neovim plugin to copy and paste text
nvim-yoink is a simple text storage plugin for easy copy-pasting and editing within Neovim, with features like storing, copying, and pasting text.
desdic/marlin.nvim
Smooth sailing through buffers of interest in neovim
marlin.nvim enhances navigation in Neovim by enabling easy jumps between project buffers with customizable settings and integration with status line plugins.
altermo/iedit.nvim
Edit one occurrence of text and simultaneously have other selected occurrences edited in the same way.
iedit.nvim is a Lua rewrite of Emacs's iedit, allowing users to edit multiple instances of selected text simultaneously. It provides functions for starting and stopping selection, with customizable keymaps and highlighting.
2KAbhishek/tdo.nvim
Fast and Simple Note Taking in Neovim! 📃🚀
tdo.nvim integrates tdo commands for simple and fast note taking, including features like creating notes, managing todos, and navigating notes. The plugin integrates with telescope for efficient note searching in Neovim.
Mr-LLLLL/treesitter-outer
jump outer node with smart way
treesitter-outer allows jumping to outer nodes in various filetypes using smart navigation based on nvim-treesitter.
Sam-programs/cmdline-hl.nvim
Highlight the default neovim cmdline
cmdline-hl.nvim enhances Neovim's command-line by highlighting and customizing command types and text, making it more visually appealing and functional.
snehlsen/pomo.nvim
Pomodoro-like task management in nvim
pomo.nvim adds pomodoro-style task management to your workflow in Neovim, allowing you to create daily task lists, assign time slots, mark tasks as complete, and track interruptions.
hiphish/neotest-busted
Neotest adapter for running busted tests.
Neotest-Busted is a Neotest adapter for Busted, a Lua test framework. It requires Busted and Neotest installed and offers easy configuration.
raphaelladinig/nvim-projectmanager
Project Management tool for Neovim
nvim-projectmanager helps you manage projects in Neovim, enabling project creation, template loading, and integration with Telescope for easy project navigation. It offers commands to create projects, view projects in a Telescope window, manage templates, and clear recent projects. The plugin requires setting default project and template directories in the configuration for proper functionality. It also provides an API to access pinned projects, recent projects, and templates.
shellheim/ashaar.nvim
A neovim plugin to display random urdu couplets on startup.
ashaar.nvim facilitates displaying random Urdu couplets (written in the Roman script) as part of the alpha-nvim's startup screen, with a collection of couplets from various Urdu poets stored in ashaar_list.lua
RAprogramm/nekifoch
Neovim Kitty Font Changer
nekifoch manages Kitty terminal font settings with commands for checking, setting font size/family, and listing available fonts.
rushjs1/nuxt-goto-alias.nvim
'Go to Definition' on a vue component from within a nuxt project to the correct definition source.
nuxt-goto-alias.nvim is designed to redirect Go to Definition in Nuxt Vue components to the correct source, avoiding unnecessary navigation to declaration files.
Zeioth/makeit.nvim
Neovim Makefile plugin
makeit.nvim makes it easier to interact with Makefiles in your project, allowing you to list and select options for building and running tasks.
nihancj/plugin-switcher.nvim
A useful neovim plugin to use with lazy.nvim
plugin-switcher.nvim integrates with lazy.nvim and organizes your installed plugins into profiles, enabling you to switch between them based on your needs. It remembers your previous session and loads specified plugins automatically.
Updated plugins
mini.nvim - release 0.12.0
Three new modules coming out of beta-testing.
- mini.visits - module to track and reuse file system visits. This is a
mini.nvim
version ofnvim-telescope/telescope-frecency.nvim
. Persistently track file visits and select from them, in combined with 'ThePrimeagen/harpoon' like functionality to persistently add/remove labels to paths and select based on them. - mini.notify - module to show notifications. It provides custom
vim.notify
maker so that users can have pretty and less intrusive plugin notifications. - mini.deps - plugin manager module.
mini.deps
helps installing/updating/cleaning/snapshotting other plugins with minimal yet sufficient user experience (in my opinion it ended up somewhere near 'junegunn/vim-plug' in that regard).
Links:
Kickstart.nvim updated, testers & feedback appreciated
Kickstart.nvim recently had an udpate, removing ~1/3 of the code compared to the previous version and adding additional documentation. There's now less than 300 lines of code, and just over 400 lines of comments attempting to explain what's happening and point to relevant documentation.
Grapple.nvim - plugin rewrite and new features
Grapple is a plugin that aims to provide immediate navigation to important files (and their last known cursor location). Grapple supports tag "scopes" which help keep tags scoped to the project, repo, or branch that you are working on. In addition, the navigation window can be edited like a normal buffer (think, oil.nvim) to make editing and selecting tags a breeze.
0.10 updates
- Rewrite plugin
- New Breaking changes
- New File icon support
- New Support for file URIs (i.e. "oil://")
- New Single user command ("Grapple")
- Improved Reworked Scopes API
- Improved Better support for statusline components
- Fixed Many bug fixes, and more
Links:
Contributing
Add your plugin to Dotfyle through this form to be featured in This Week in Neovim
Contribute to the development of Dotfyle: